snapcrawl 0.5.3 → 0.5.4.rc1

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