snapcrawl 0.5.3 → 0.5.4.rc1

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: 1238ab663146a888fc002379efaae0abaa72f02fc9ef7954bffb79e7dad4b07d
4
- data.tar.gz: c340cf0b5d1675158077257007f0d58883e9d3e0418f4c0551039fa2e09c6df8
3
+ metadata.gz: 3ae3bce2bddf47cad311373025e31b28e09acc5ee9e6d9a265794ad8ae355989
4
+ data.tar.gz: 2d6bb777cac25e0f7817e5385249c2009de50bf7bdb75dea71dc7435cfe65120
5
5
  SHA512:
6
- metadata.gz: 5e1c2ca21bbfa5471d58fce0e20d61237a87e14157b156fec0e0ee0b07d8c2a169dd38bffda1c99292bc737fc5cf25c64811e2650de958756c29fd630ca87721
7
- data.tar.gz: fd7d8e18393e00274f3c145c103e03c0572f7113fab98b7cf3572e99f77d16b88628be0b3050bf98fba311fb05db974453377cb96e8bbd567794426b2a83c099
6
+ metadata.gz: f54f93475622850ed12de2325b49e61e661e57d3d1372cf2086673453bc4f9c9a6878d0ef3d9551b4c96064231b1dea529cc44151ab915c6e383fc5fb0e4ecce
7
+ data.tar.gz: 8839db491de4274076d6ae9c7f801faa96f21bb3364335c0e4f8cb4bf28d1dfde5f0f8dff401715cffef259a9dbbecbd808079a5ca205ea13e3f14988a83c82d
data/bin/snapcrawl CHANGED
@@ -10,21 +10,16 @@ include Colsole
10
10
 
11
11
  begin
12
12
  CLI.new.call ARGV
13
-
14
13
  rescue MissingPhantomJS => e
15
- message = "Cannot find phantomjs executable in the path, please install it first."
16
- say! "\n\n!undred!#{e.class}!txtrst!\n#{message}"
14
+ message = 'Cannot find phantomjs executable in the path, please install it first.'
15
+ say! "\n\nru`#{e.class}`\n#{message}"
17
16
  exit 2
18
-
19
- rescue MissingImageMagick=> e
20
- message = "Cannot find convert (ImageMagick) executable in the path, please install it first."
21
- say! "\n\n!undred!#{e.class}!txtrst!\n#{message}"
17
+ rescue MissingImageMagick => e
18
+ message = 'Cannot find convert (ImageMagick) executable in the path, please install it first.'
19
+ say! "\n\nru`#{e.class}`\n#{message}"
22
20
  exit 3
23
-
24
21
  rescue => e
25
22
  puts e.backtrace.reverse if ENV['DEBUG']
26
- say! "\n!undred!#{e.class}!txtrst!\n#{e.message}"
23
+ say! "\nru`#{e.class}`\n#{e.message}"
27
24
  exit 1
28
-
29
25
  end
30
-
data/lib/snapcrawl/cli.rb CHANGED
@@ -7,13 +7,11 @@ module Snapcrawl
7
7
  include Colsole
8
8
  using StringRefinements
9
9
  using PairSplit
10
-
10
+
11
11
  def call(args = [])
12
- begin
13
- execute Docopt::docopt(docopt, version: VERSION, argv: args)
14
- rescue Docopt::Exit => e
15
- puts e.message
16
- end
12
+ execute Docopt.docopt(docopt, version: VERSION, argv: args)
13
+ rescue Docopt::Exit => e
14
+ puts e.message
17
15
  end
18
16
 
19
17
  private
@@ -26,7 +24,7 @@ module Snapcrawl
26
24
  apply_tweaks tweaks if tweaks
27
25
 
28
26
  Dependencies.verify
29
-
27
+
30
28
  $logger.debug 'initializing cli'
31
29
  FileUtils.mkdir_p Config.snaps_dir
32
30
 
@@ -37,11 +35,11 @@ module Snapcrawl
37
35
  end
38
36
 
39
37
  def docopt
40
- @doc ||= File.read docopt_path
38
+ @docopt ||= File.read docopt_path
41
39
  end
42
40
 
43
41
  def docopt_path
44
- File.expand_path "templates/docopt.txt", __dir__
42
+ File.expand_path 'templates/docopt.txt', __dir__
45
43
  end
46
44
 
47
45
  def apply_tweaks(tweaks)
@@ -50,6 +48,5 @@ module Snapcrawl
50
48
  $logger.level = value if key == 'log_level'
51
49
  end
52
50
  end
53
-
54
51
  end
55
52
  end
@@ -7,19 +7,19 @@ module Snapcrawl
7
7
  def load(file = nil)
8
8
  reset!
9
9
  push defaults
10
-
10
+
11
11
  return unless file
12
12
 
13
- file = "#{file}.yml" unless file =~ /\.ya?ml$/
13
+ file = "#{file}.yml" unless /\.ya?ml$/.match?(file)
14
14
 
15
15
  # FIXME: Cannot use logger here due to the "chicken and egg" with
16
16
  # Config. The $logger is available, but it was not yet fully
17
17
  # configured with log_level etc.
18
18
  if File.exist? file
19
- # $logger.debug "loading config file !txtgrn!#{file}"
19
+ # $logger.debug "loading config file g`#{file}`"
20
20
  push file
21
21
  else
22
- # $logger.debug "creating config file !txtgrn!#{file}"
22
+ # $logger.debug "creating config file g`#{file}`"
23
23
  create_config file
24
24
  end
25
25
  end
@@ -28,20 +28,20 @@ module Snapcrawl
28
28
 
29
29
  def defaults
30
30
  {
31
- depth: 1,
32
- width: 1280,
33
- height: 0,
34
- cache_life: 86400,
35
- cache_dir: 'cache',
36
- snaps_dir: 'snaps',
37
- name_template: '%{url}',
38
- url_whitelist: nil,
39
- url_blacklist: nil,
40
- css_selector: nil,
41
- log_level: 1,
42
- log_color: 'auto',
31
+ depth: 1,
32
+ width: 1280,
33
+ height: 0,
34
+ cache_life: 86_400,
35
+ cache_dir: 'cache',
36
+ snaps_dir: 'snaps',
37
+ name_template: '%{url}',
38
+ url_whitelist: nil,
39
+ url_blacklist: nil,
40
+ css_selector: nil,
41
+ log_level: 1,
42
+ log_color: 'auto',
43
43
  skip_ssl_verification: false,
44
- screenshot_delay: nil
44
+ screenshot_delay: nil,
45
45
  }
46
46
  end
47
47
 
@@ -55,7 +55,6 @@ module Snapcrawl
55
55
  def config_template
56
56
  File.expand_path 'templates/config.yml', __dir__
57
57
  end
58
-
59
58
  end
60
59
  end
61
60
  end
@@ -7,10 +7,10 @@ module Snapcrawl
7
7
  attr_reader :url
8
8
 
9
9
  def initialize(url)
10
- $logger.debug "initializing crawler with !txtgrn!#{url}"
11
-
10
+ $logger.debug "initializing crawler with g`#{url}`"
11
+
12
12
  config_for_display = Config.settings.dup
13
- config_for_display['name_template'] = '%%{url}'
13
+ config_for_display['name_template'] = '%%{url}'
14
14
 
15
15
  $logger.debug "config #{config_for_display}"
16
16
  @url = url
@@ -25,27 +25,27 @@ module Snapcrawl
25
25
  private
26
26
 
27
27
  def process_todo
28
- $logger.debug "processing queue: !txtgrn!#{todo.count} remaining"
28
+ $logger.debug "processing queue: g`#{todo.count} remaining`"
29
29
 
30
30
  url, page = todo.shift
31
31
  done.push url
32
32
 
33
- if process_page page
34
- register_sub_pages page.pages if page.depth < Config.depth
35
- end
33
+ return unless process_page page
34
+
35
+ register_sub_pages page.pages if page.depth < Config.depth
36
36
  end
37
37
 
38
38
  def register_sub_pages(pages)
39
39
  pages.each do |sub_page|
40
- next if todo.has_key?(sub_page) or done.include?(sub_page)
41
-
42
- if Config.url_whitelist and sub_page.path !~ /#{Config.url_whitelist}/
43
- $logger.debug "ignoring !undpur!#{sub_page.url}!txtrst!, reason: whitelist"
40
+ next if todo.has_key?(sub_page) || done.include?(sub_page)
41
+
42
+ if Config.url_whitelist && sub_page.path !~ (/#{Config.url_whitelist}/)
43
+ $logger.debug "ignoring mu`#{sub_page.url}`, reason: whitelist"
44
44
  next
45
45
  end
46
46
 
47
- if Config.url_blacklist and sub_page.path =~ /#{Config.url_blacklist}/
48
- $logger.debug "ignoring !undpur!#{sub_page.url}!txtrst!, reason: blacklist"
47
+ if Config.url_blacklist && sub_page.path =~ (/#{Config.url_blacklist}/)
48
+ $logger.debug "ignoring mu`#{sub_page.url}`, reason: blacklist"
49
49
  next
50
50
  end
51
51
 
@@ -56,9 +56,9 @@ module Snapcrawl
56
56
  def process_page(page)
57
57
  outfile = "#{Config.snaps_dir}/#{Config.name_template}.png" % { url: page.url.to_slug }
58
58
 
59
- $logger.info "processing !undpur!#{page.url}!txtrst!, depth: #{page.depth}"
59
+ $logger.info "processing mu`#{page.url}`, depth: #{page.depth}"
60
60
 
61
- if !page.valid?
61
+ unless page.valid?
62
62
  $logger.debug "page #{page.path} is invalid, aborting process"
63
63
  return false
64
64
  end
@@ -66,7 +66,7 @@ module Snapcrawl
66
66
  if file_fresh? outfile
67
67
  $logger.info "screenshot for #{page.path} already exists"
68
68
  else
69
- $logger.info "!bldgrn!capturing screenshot for #{page.path}"
69
+ $logger.info "gb`capturing screenshot for #{page.path}`"
70
70
  save_screenshot page, outfile
71
71
  end
72
72
 
@@ -76,11 +76,11 @@ module Snapcrawl
76
76
  def save_screenshot(page, outfile)
77
77
  page.save_screenshot outfile
78
78
  rescue => e
79
- $logger.error "screenshot error on !undpur!#{page.path}!txtrst! - !txtred!#{e.class}!txtrst!: #{e.message}"
79
+ $logger.error "screenshot error on mu`#{page.path}` - r`#{e.class}`: #{e.message}"
80
80
  end
81
81
 
82
82
  def file_fresh?(file)
83
- Config.cache_life > 0 and File.exist?(file) and file_age(file) < Config.cache_life
83
+ Config.cache_life.positive? and File.exist?(file) and file_age(file) < Config.cache_life
84
84
  end
85
85
 
86
86
  def file_age(file)
@@ -94,6 +94,5 @@ module Snapcrawl
94
94
  def done
95
95
  @done ||= []
96
96
  end
97
-
98
97
  end
99
98
  end
@@ -4,18 +4,18 @@ module Snapcrawl
4
4
  class Dependencies
5
5
  class << self
6
6
  include Colsole
7
-
7
+
8
8
  def verify
9
9
  return if @verified
10
10
 
11
- $logger.debug 'verifying !txtgrn!phantomjs!txtrst! is present'
12
- raise MissingPhantomJS unless command_exist? "phantomjs"
11
+ $logger.debug 'verifying g`phantomjs` is present'
12
+ raise MissingPhantomJS unless command_exist? 'phantomjs'
13
13
 
14
- $logger.debug 'verifying !txtgrn!imagemagick!txtrst! is present'
15
- raise MissingImageMagick unless command_exist? "convert"
14
+ $logger.debug 'verifying g`imagemagick` is present'
15
+ raise MissingImageMagick unless command_exist? 'convert'
16
16
 
17
17
  @verified = true
18
18
  end
19
19
  end
20
20
  end
21
- end
21
+ end
@@ -5,18 +5,18 @@ module Snapcrawl
5
5
  include Colsole
6
6
 
7
7
  SEVERITY_COLORS = {
8
- 'INFO' => :txtblu,
9
- 'WARN' => :txtylw,
10
- 'ERROR' => :txtred,
11
- 'FATAL' => :txtred,
12
- 'DEBUG' => :txtcyn
8
+ 'INFO' => :b,
9
+ 'WARN' => :y,
10
+ 'ERROR' => :r,
11
+ 'FATAL' => :r,
12
+ 'DEBUG' => :c,
13
13
  }
14
-
14
+
15
15
  def log_formatter
16
16
  proc do |severity, _time, _prog, message|
17
17
  severity_color = SEVERITY_COLORS[severity]
18
- line = "!#{severity_color}!#{severity.rjust 5}!txtrst! : #{message}\n"
19
- use_colors? ? colorize(line) : strip_color_markers(line)
18
+ line = "#{severity_color}`#{severity.rjust 5}` : #{message}\n"
19
+ use_colors? ? colorize(line) : strip_colors(line)
20
20
  end
21
21
  end
22
22
 
@@ -25,11 +25,12 @@ module Snapcrawl
25
25
  end
26
26
 
27
27
  def tty?
28
- ENV['TTY'] == 'on' ? true : ENV['TTY'] == 'off' ? false : $stdout.tty?
29
- end
30
-
31
- def strip_color_markers(text)
32
- text.gsub(/\!([a-z]{6})\!/, '')
28
+ case ENV['TTY']
29
+ when 'on' then true
30
+ when 'off' then false
31
+ else
32
+ $stdout.tty?
33
+ end
33
34
  end
34
35
  end
35
36
  end
@@ -10,11 +10,12 @@ module Snapcrawl
10
10
 
11
11
  attr_reader :url, :depth
12
12
 
13
- EXTENSION_BLACKLIST = "png|gif|jpg|pdf|zip"
14
- PROTOCOL_BLACKLIST = "mailto|tel"
13
+ EXTENSION_BLACKLIST = 'png|gif|jpg|pdf|zip'
14
+ PROTOCOL_BLACKLIST = 'mailto|tel'
15
15
 
16
16
  def initialize(url, depth: 0)
17
- @url, @depth = url.protocolize, depth
17
+ @url = url.protocolize
18
+ @depth = depth
18
19
  end
19
20
 
20
21
  def valid?
@@ -31,18 +32,21 @@ module Snapcrawl
31
32
 
32
33
  def links
33
34
  return nil unless valid?
35
+
34
36
  doc = Nokogiri::HTML http_response.body
35
37
  normalize_links doc.css('a')
36
38
  end
37
39
 
38
40
  def pages
39
41
  return nil unless valid?
40
- links.map { |link| Page.new link, depth: depth+1 }
42
+
43
+ links.map { |link| Page.new link, depth: depth + 1 }
41
44
  end
42
45
 
43
46
  def save_screenshot(outfile)
44
47
  return false unless valid?
45
- Screenshot.new(url).save "#{outfile}"
48
+
49
+ Screenshot.new(url).save outfile
46
50
  end
47
51
 
48
52
  private
@@ -54,16 +58,14 @@ module Snapcrawl
54
58
  def http_response!
55
59
  response = cache.get(url) { HTTParty.get url, httparty_options }
56
60
 
57
- if !response.success?
58
- $logger.warn "http error on !undpur!#{url}!txtrst!, code: !txtylw!#{response.code}!txtrst!, message: #{response.message.strip}"
61
+ unless response.success?
62
+ $logger.warn "http error on mu`#{url}`, code: y`#{response.code}`, message: #{response.message.strip}"
59
63
  end
60
64
 
61
65
  response
62
-
63
66
  rescue => e
64
- $logger.error "http error on !undpur!#{url}!txtrst! - !txtred!#{e.class}!txtrst!: #{e.message}"
67
+ $logger.error "http error on mu`#{url}` - r`#{e.class}`: #{e.message}"
65
68
  nil
66
-
67
69
  end
68
70
 
69
71
  def httparty_options
@@ -89,8 +91,8 @@ module Snapcrawl
89
91
  return nil if link.empty?
90
92
 
91
93
  # Remove links to specific extensions and protocols
92
- return nil if link =~ /\.(#{EXTENSION_BLACKLIST})(\?.*)?$/
93
- return nil if link =~ /^(#{PROTOCOL_BLACKLIST}):/
94
+ return nil if /\.(#{EXTENSION_BLACKLIST})(\?.*)?$/o.match?(link)
95
+ return nil if /^(#{PROTOCOL_BLACKLIST}):/o.match?(link)
94
96
 
95
97
  # Strip spaces
96
98
  link.strip!
@@ -99,12 +101,13 @@ module Snapcrawl
99
101
  begin
100
102
  link = Addressable::URI.join(url, link).to_s.dup
101
103
  rescue => e
102
- $logger.warn "!txtred!#{e.class}!txtrst!: #{e.message} on #{path} (link: #{link})"
104
+ $logger.warn "r`#{e.class}`: #{e.message} on #{path} (link: #{link})"
103
105
  return nil
104
106
  end
105
107
 
106
108
  # Keep only links in our base domain
107
109
  return nil unless link.include? site
110
+
108
111
  link
109
112
  end
110
113
 
@@ -2,21 +2,24 @@ module Snapcrawl
2
2
  module PairSplit
3
3
  refine Array do
4
4
  def pair_split
5
- map do |pair|
5
+ false_values = %w[no false]
6
+ true_values = %w[yes true]
7
+
8
+ to_h do |pair|
6
9
  key, value = pair.split '='
7
-
8
- value = if value =~ /^\d+$/
9
- value.to_i
10
- elsif ['no', 'false'].include? value
10
+
11
+ value = if /^\d+$/.match?(value)
12
+ value.to_i
13
+ elsif false_values.include? value
11
14
  false
12
- elsif ['yes', 'true'].include? value
15
+ elsif true_values.include? value
13
16
  true
14
17
  else
15
18
  value
16
19
  end
17
20
 
18
21
  [key, value]
19
- end.to_h
22
+ end
20
23
  end
21
24
  end
22
25
  end
@@ -6,7 +6,7 @@ module Snapcrawl
6
6
  end
7
7
 
8
8
  def protocolize
9
- self =~ /^http/ ? self : "http://#{self}"
9
+ /^http/.match?(self) ? self : "http://#{self}"
10
10
  end
11
11
  end
12
12
  end
@@ -27,10 +27,10 @@ module Snapcrawl
27
27
  hide_output do
28
28
  webshot.capture url, image_path, webshot_options do |magick|
29
29
  magick.combine_options do |c|
30
- c.background "white"
30
+ c.background 'white'
31
31
  c.gravity 'north'
32
32
  c.quality 100
33
- c.extent Config.height > 0 ? "#{Config.width}x#{Config.height}" : "#{Config.width}x"
33
+ c.extent Config.height.positive? ? "#{Config.width}x#{Config.height}" : "#{Config.width}x"
34
34
  end
35
35
  end
36
36
  end
@@ -38,9 +38,9 @@ module Snapcrawl
38
38
 
39
39
  def webshot_options
40
40
  result = { allowed_status_codes: [404, 401, 403] }
41
-
42
- if Config.selector
43
- result[:selector] = Config.selector
41
+
42
+ if Config.css_selector
43
+ result[:selector] = Config.css_selector
44
44
  result[:full] = false
45
45
  end
46
46
 
@@ -55,16 +55,19 @@ module Snapcrawl
55
55
  @webshot ||= Webshot::Screenshot.instance
56
56
  end
57
57
 
58
- # The webshot gem messes with stdout/stderr streams so we keep it in
58
+ # The webshot gem messes with stdout/stderr streams so we keep it in
59
59
  # check by using this method. Also, in some sites (e.g. uown.co) it
60
60
  # prints some output to stdout, this is why we override $stdout for
61
61
  # the duration of the run.
62
62
  def hide_output
63
- keep_stdout, keep_stderr = $stdout, $stderr
64
- $stdout, $stderr = StringIO.new, StringIO.new
63
+ keep_stdout = $stdout
64
+ keep_stderr = $stderr
65
+ $stdout = StringIO.new
66
+ $stderr = StringIO.new
65
67
  yield
66
68
  ensure
67
- $stdout, $stderr = keep_stdout, keep_stderr
69
+ $stdout = keep_stdout
70
+ $stderr = keep_stderr
68
71
  end
69
72
  end
70
73
  end
@@ -1,3 +1,3 @@
1
1
  module Snapcrawl
2
- VERSION = "0.5.3"
3
- end
2
+ VERSION = '0.5.4.rc1'
3
+ end
metadata CHANGED
@@ -1,127 +1,133 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snapcrawl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.4.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danny Ben Shitrit
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-29 00:00:00.000000000 Z
11
+ date: 2023-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: colsole
14
+ name: addressable
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.7'
19
+ version: '2.7'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.7'
26
+ version: '2.7'
27
27
  - !ruby/object:Gem::Dependency
28
- name: docopt
28
+ name: colsole
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0.6'
33
+ version: 0.8.1
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '2'
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
- - - "~>"
41
+ - - ">="
39
42
  - !ruby/object:Gem::Version
40
- version: '0.6'
43
+ version: 0.8.1
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '2'
41
47
  - !ruby/object:Gem::Dependency
42
- name: nokogiri
48
+ name: docopt
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: '1.10'
53
+ version: '0.6'
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
58
  - - "~>"
53
59
  - !ruby/object:Gem::Version
54
- version: '1.10'
60
+ version: '0.6'
55
61
  - !ruby/object:Gem::Dependency
56
- name: webshot
62
+ name: httparty
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
65
  - - "~>"
60
66
  - !ruby/object:Gem::Version
61
- version: '0.1'
67
+ version: '0.21'
62
68
  type: :runtime
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
72
  - - "~>"
67
73
  - !ruby/object:Gem::Version
68
- version: '0.1'
74
+ version: '0.21'
69
75
  - !ruby/object:Gem::Dependency
70
- name: httparty
76
+ name: lightly
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
79
  - - "~>"
74
80
  - !ruby/object:Gem::Version
75
- version: '0.18'
81
+ version: '0.3'
76
82
  type: :runtime
77
83
  prerelease: false
78
84
  version_requirements: !ruby/object:Gem::Requirement
79
85
  requirements:
80
86
  - - "~>"
81
87
  - !ruby/object:Gem::Version
82
- version: '0.18'
88
+ version: '0.3'
83
89
  - !ruby/object:Gem::Dependency
84
- name: addressable
90
+ name: nokogiri
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
93
  - - "~>"
88
94
  - !ruby/object:Gem::Version
89
- version: '2.7'
95
+ version: '1.10'
90
96
  type: :runtime
91
97
  prerelease: false
92
98
  version_requirements: !ruby/object:Gem::Requirement
93
99
  requirements:
94
100
  - - "~>"
95
101
  - !ruby/object:Gem::Version
96
- version: '2.7'
102
+ version: '1.10'
97
103
  - !ruby/object:Gem::Dependency
98
- name: lightly
104
+ name: sting
99
105
  requirement: !ruby/object:Gem::Requirement
100
106
  requirements:
101
107
  - - "~>"
102
108
  - !ruby/object:Gem::Version
103
- version: '0.3'
109
+ version: '0.4'
104
110
  type: :runtime
105
111
  prerelease: false
106
112
  version_requirements: !ruby/object:Gem::Requirement
107
113
  requirements:
108
114
  - - "~>"
109
115
  - !ruby/object:Gem::Version
110
- version: '0.3'
116
+ version: '0.4'
111
117
  - !ruby/object:Gem::Dependency
112
- name: sting
118
+ name: webshot
113
119
  requirement: !ruby/object:Gem::Requirement
114
120
  requirements:
115
121
  - - "~>"
116
122
  - !ruby/object:Gem::Version
117
- version: '0.4'
123
+ version: '0.1'
118
124
  type: :runtime
119
125
  prerelease: false
120
126
  version_requirements: !ruby/object:Gem::Requirement
121
127
  requirements:
122
128
  - - "~>"
123
129
  - !ruby/object:Gem::Version
124
- version: '0.4'
130
+ version: '0.1'
125
131
  description: Snapcrawl is a command line utility for crawling a website and saving
126
132
  screenshots.
127
133
  email: db@dannyben.com
@@ -150,8 +156,9 @@ files:
150
156
  homepage: https://github.com/DannyBen/snapcrawl
151
157
  licenses:
152
158
  - MIT
153
- metadata: {}
154
- post_install_message:
159
+ metadata:
160
+ rubygems_mfa_required: 'true'
161
+ post_install_message:
155
162
  rdoc_options: []
156
163
  require_paths:
157
164
  - lib
@@ -159,15 +166,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
159
166
  requirements:
160
167
  - - ">="
161
168
  - !ruby/object:Gem::Version
162
- version: '2.3'
169
+ version: '3.0'
163
170
  required_rubygems_version: !ruby/object:Gem::Requirement
164
171
  requirements:
165
- - - ">="
172
+ - - ">"
166
173
  - !ruby/object:Gem::Version
167
- version: '0'
174
+ version: 1.3.1
168
175
  requirements: []
169
- rubygems_version: 3.2.3
170
- signing_key:
176
+ rubygems_version: 3.4.17
177
+ signing_key:
171
178
  specification_version: 4
172
179
  summary: Crawl a website and take screenshots (CLI + Library)
173
180
  test_files: []