gym_finder 1.0.0 → 1.0.1

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
- SHA1:
3
- metadata.gz: 2fb6bb856937918867e24853ade1d88c21bb96e3
4
- data.tar.gz: 292429d65fc9e59e37cf5ff696a2f452b102cfbe
2
+ SHA256:
3
+ metadata.gz: '006209e469d7d2a111ad24469d13845939bd6b0199fd4004ebb171bf5bbb61bc'
4
+ data.tar.gz: d82e44de799f56f9b9a1cfb27310757ddd0fbc74cc2204c5034dd09500e5aebe
5
5
  SHA512:
6
- metadata.gz: a9b737b2464ae764f09be88bb4e272c46852d6f87e2f33ca12bfd6c182c7f126630f59017671d1cab0f428d4b30967252c3239fb24169c512661f5afbd0df74f
7
- data.tar.gz: f035457eefeacfe57cee11c4a3666508edb9c74a624d30657fe40b702fa378b425c01d54b8f22cd30c1dab4f2d34d3b28fe08ef96833c0e0902d3fc796c6a5b8
6
+ metadata.gz: bbea3bae1a1d995b73bb8779d8b58cd9634777c0d8543507f420ada7eed650b40742890da3260e3e53555e11a92f177de3b2430777a8559412a7f957830d218b
7
+ data.tar.gz: e2e939dae1e7568194edccf3e591f23e29b6c6f5fd076489828b8826c1072496d4c64848c1c1f46e85f2c118350a6b1146e2f89515dfa567622a6a256bcb08b4
@@ -17,7 +17,7 @@ module GymFinder
17
17
  class Conn
18
18
  attr_accessor :cookie
19
19
  def initialize
20
- @conn = EventMachine::HttpRequest.new('https://scr.cyc.org.tw/')
20
+ @conn = EventMachine::HttpRequest.new('https://scr.cyc.org.tw/', tls: { verify_peer: true })
21
21
  @pending = 0
22
22
  @processed = 0
23
23
  end
@@ -73,7 +73,7 @@ module GymFinder
73
73
  def initialize(
74
74
  username: ENV['GYM_FINDER_USERNAME'],
75
75
  password: ENV['GYM_FINDER_PASSWORD'],
76
- retry_captcha: 3
76
+ retry_captcha: 30
77
77
  )
78
78
  @parser = Parser.new
79
79
  @username = username
@@ -81,10 +81,10 @@ module GymFinder
81
81
  @retry_captcha = retry_captcha
82
82
  end
83
83
 
84
- def fetch(*params)
84
+ def fetch(**params)
85
85
  captcha_error_count = 0
86
86
  begin
87
- _fetch(*params)
87
+ _fetch(**params)
88
88
  rescue CaptchaError => error
89
89
  captcha_error_count += 1
90
90
  raise error if captcha_error_count == @retry_captcha
@@ -117,7 +117,7 @@ module GymFinder
117
117
  Captcha_text: captcha_text
118
118
  }
119
119
  ) do |client|
120
- raise CaptchaError if client.response.include?('驗證碼錯誤')
120
+ raise CaptchaError unless client.response.include?('修改會員資料')
121
121
  GYMS.select(&gym_filter).each do |gym|
122
122
  uri = URI(gym.reservation)
123
123
  conn.get(path: uri.path) do |client|
@@ -10,8 +10,15 @@ module GymFinder
10
10
  w.close
11
11
  r2, w2 = IO.pipe
12
12
  Open3.pipeline(
13
- ['convert', '-', '-resize', '400%', '-threshold', '25%', '-'],
14
- ['tesseract', 'stdin', 'stdout', '--psm', '8', '-c', 'tessedit_char_whitelist=0123456789', err: File.open("/dev/null", "wb")],
13
+ [
14
+ 'convert', '-', '-channel', 'RGB', '-colorspace', 'GRAY',
15
+ '-depth', '1', '-negate',
16
+ '-define', 'connected-components:mean-color=true',
17
+ '-define', 'connected-components:area-threshold=2',
18
+ '-connected-components', '4',
19
+ '-crop', '60x17+4+4', '-'
20
+ ],
21
+ ['tesseract', 'stdin', 'stdout', '--psm', '8', '-c', 'tessedit_char_whitelist=0123456789', err: File.open('/dev/null', 'wb')],
15
22
  in: r,
16
23
  out: w2
17
24
  )
@@ -10,11 +10,11 @@ module GymFinder
10
10
  class Parser
11
11
  def parse_reservation(html)
12
12
  doc = Nokogiri::HTML(html)
13
- selector = '#ContentPlaceHolder1_button_image > table > tr > td > img[onclick*="net_booking"]'
13
+ selector = 'img[onclick*="net_booking"]'
14
14
  Reservation.new.tap do |reservation|
15
15
  reservation.available_courts = doc.css(selector).map do |node|
16
16
  Reservation::Court.new.tap do |court|
17
- court.name = node['alt']
17
+ court.name = node['title']
18
18
  court.pt = node['onclick'][/PT=(\d+)/, 1]
19
19
  end
20
20
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gym_finder
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jian Weihang
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-03 00:00:00.000000000 Z
11
+ date: 2020-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -80,7 +80,7 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- description:
83
+ description:
84
84
  email: tonytonyjan@gmail.com
85
85
  executables:
86
86
  - gym_finder
@@ -100,11 +100,11 @@ files:
100
100
  - lib/gym_finder/post_processor.rb
101
101
  - lib/gym_finder/reservation.rb
102
102
  - lib/gym_finder/time_table.rb
103
- homepage:
103
+ homepage:
104
104
  licenses:
105
105
  - MIT
106
106
  metadata: {}
107
- post_install_message:
107
+ post_install_message:
108
108
  rdoc_options: []
109
109
  require_paths:
110
110
  - lib
@@ -119,9 +119,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  - !ruby/object:Gem::Version
120
120
  version: '0'
121
121
  requirements: []
122
- rubyforge_project:
123
- rubygems_version: 2.4.5
124
- signing_key:
122
+ rubygems_version: 3.1.2
123
+ signing_key:
125
124
  specification_version: 4
126
125
  summary: gym finder
127
126
  test_files: []