kuport 0.1.1 → 0.1.2

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
  SHA1:
3
- metadata.gz: d557006f0d56c89fbdb480e83b49968de1de417f
4
- data.tar.gz: '08482c0c932d94505bead4d9b09c9de7601f4846'
3
+ metadata.gz: 99e516f62b18e1d41bf2018a86d343714e4802b2
4
+ data.tar.gz: db66947697cb358425e6858e6a02de0ee3edb8ee
5
5
  SHA512:
6
- metadata.gz: 8ddcf75d7351972b180c9920de29806789d3477a0480cc92b22f88d2e9c6eced5aa68b83f0c6c680c6191a4b7a0a43679ebb81a3f3c07fa65bd6f14413b71c12
7
- data.tar.gz: 4990062b8f8a42db7d9e35189f11c308b166497db76bf2ea239889f7ac0696c01c679f830b0ded5f59e7b12ce7a66e5f81da923d3edd81d691f420c3ab461738
6
+ metadata.gz: c2f90af43af72870c3f7b6b1891c9c787e57d7e072ae2c7fdfbe1b1b299485835cd390c5c9829b10e14c3df2ccd40f2b23b3bf62a67b9ef6c4b347bc577ca000
7
+ data.tar.gz: b83aa1178067ee1506a2595f16e73434e69b2ba09eaf702c576ff010d2b96c54ea8fce0a83367a08d31bdbf5d0045b5520151b3ae0a52ad606891f6eab975605
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## Installation
6
6
 
7
- ```shell
7
+ ```bash
8
8
  $ gem install kuport
9
9
  ```
10
10
 
@@ -14,7 +14,7 @@ $ gem install kuport
14
14
 
15
15
  端末でjsonを読むには`jid`がおすすめ。
16
16
 
17
- ```
17
+ ```bash
18
18
  $ go get github.com/simeji/jid/cmd/jid
19
19
  $ cat sample.json | jid
20
20
  ```
@@ -24,7 +24,7 @@ $ cat sample.json | jid
24
24
  一度ログインすればキャッシュが効くので、暫くは`--id`とパスワード入力は不要。
25
25
 
26
26
 
27
- ```shell
27
+ ```bash
28
28
  # 個人宛メッセージ取得
29
29
  $ kuport --id jx91234 -m
30
30
 
data/bin/kuport CHANGED
@@ -2,6 +2,8 @@
2
2
  require 'optparse'
3
3
  require 'kuport'
4
4
 
5
+ using Kuport::ClassExtensions
6
+
5
7
  # ruby2.3 <<~DOC
6
8
  example_usage = <<USAGE
7
9
  example usage
@@ -97,7 +99,8 @@ if opts[:id]
97
99
  end
98
100
 
99
101
  if opts[:download]
100
- Kuport.quit('Need --output-file', 20) if Kuport.url?(opts[:download]) && opts[:output_file].nil?
102
+ Kuport.quit('Need --output-file', 20) if opts[:download].url? && opts[:output_file].nil?
103
+ opts[:download] = STDIN.read if opts[:download] == '-'
101
104
  kp.download(opts[:download], opts[:output_file])
102
105
  end
103
106
 
data/lib/kuport.rb CHANGED
@@ -12,6 +12,7 @@ require 'kuport/helper'
12
12
 
13
13
  class Kuport
14
14
  extend Kuport::Helper
15
+ using Kuport::ClassExtensions
15
16
 
16
17
  class DownloadError < StandardError; end
17
18
 
@@ -91,7 +92,7 @@ class Kuport
91
92
 
92
93
  def login(id)
93
94
  return true if login_cookie
94
- Kuport.quit('Please student id', 4) if Kuport.blank?(id)
95
+ Kuport.quit('Please student id', 4) if id.blank?
95
96
 
96
97
  3.times do
97
98
  return true if login_passwd(id, Kuport.input_passwd)
@@ -131,7 +132,7 @@ class Kuport
131
132
  # url_or_json is "http://....", {name:, path:}, or [{name:, path:}, ...]
132
133
  # If url_or_json is URL, need file_path
133
134
  def download(url_or_json, file_path=nil)
134
- if Kuport.url?(url_or_json)
135
+ if url_or_json.url?
135
136
  download_file(file_path, url_or_json)
136
137
  return
137
138
  end
data/lib/kuport/helper.rb CHANGED
@@ -1,13 +1,7 @@
1
- class Kuport
2
- module Helper
3
- def basename_noext(path)
4
- File.basename(path, File.extname(path))
5
- end
6
1
 
7
- def br_to_return(element)
8
- element.search('br').each{|br| br.replace("\n")}
9
- end
10
2
 
3
+ class Kuport
4
+ module Helper
11
5
  def to_abs_url(base, part)
12
6
  uri = URI.parse(part)
13
7
  uri = URI.join(base, uri) if URI::Generic === uri
@@ -22,14 +16,6 @@ class Kuport
22
16
  Nokogiri::HTML.parse(page.content.toutf8)
23
17
  end
24
18
 
25
- def to_half_str(str)
26
- NKF.nkf('-m0Z1 -w -W', str)
27
- end
28
-
29
- def url?(str)
30
- str =~ /\A#{URI::regexp}\z/
31
- end
32
-
33
19
  def input_num(str)
34
20
  print str
35
21
  gets.to_i rescue nil
@@ -50,9 +36,39 @@ class Kuport
50
36
  warn mes
51
37
  exit ret
52
38
  end
39
+ end
40
+
41
+ module ClassExtensions
42
+ refine Object do
43
+ def blank?
44
+ true
45
+ end
46
+ end
47
+
48
+ refine String do
49
+ def to_half_str
50
+ NKF.nkf('-m0Z1 -w -W', self)
51
+ end
52
+
53
+ def url?
54
+ self =~ /\A#{URI::regexp}\z/
55
+ end
56
+
57
+ def blank?
58
+ self.empty?
59
+ end
60
+ end
61
+
62
+ refine Nokogiri::XML::Node do
63
+ def br_to_return
64
+ self.search('br').each{|br| br.replace("\n")}
65
+ end
66
+ end
53
67
 
54
- def blank?(var)
55
- var.nil? || var.empty?
68
+ refine File do
69
+ def self.basename_noext(path)
70
+ File.basename(path, File.extname(path))
71
+ end
56
72
  end
57
73
  end
58
74
  end
@@ -1,4 +1,5 @@
1
1
  class Kuport::Message
2
+ using Kuport::ClassExtensions
2
3
  attr_reader :agent, :base_url, :title, :body, :links
3
4
 
4
5
  # return [Message,...]
@@ -1,4 +1,5 @@
1
1
  class Kuport::Timetable
2
+ using Kuport::ClassExtensions
2
3
  attr_reader :year, :dates, :table, :special
3
4
 
4
5
  def initialize(doc)
@@ -15,7 +16,7 @@ class Kuport::Timetable
15
16
  end
16
17
 
17
18
  def parse_dates(dates_doc)
18
- Kuport.br_to_return(dates_doc)
19
+ dates_doc.br_to_return
19
20
  tds = dates_doc.css('td')
20
21
  @year = tds.shift.text
21
22
 
@@ -34,11 +35,11 @@ class Kuport::Timetable
34
35
  tds.shift # 横枠破棄(1~7時限 集中講義等)
35
36
 
36
37
  tds.zip(@table).each do |(td, day)| # 各曜日のn限
37
- Kuport.br_to_return(td)
38
+ td.br_to_return
38
39
  name,room,period = parse_class_text(td.text)
39
40
 
40
41
  # 休講とか (kyuko)
41
- status = td.css('img').map{|img| Kuport.basename_noext(img['src'])}
42
+ status = td.css('img').map{|img| File.basename_noext(img['src'])}
42
43
  day[1] << {name: name, room: room, period: period, status: status}
43
44
  end
44
45
  end
@@ -47,7 +48,7 @@ class Kuport::Timetable
47
48
  def parse_class_text(text)
48
49
  text.strip!
49
50
  text = '' if text == '-'
50
- text = Kuport.to_half_str(text)
51
+ text = text.to_half_str
51
52
 
52
53
  name,room,period = text.split("\n")
53
54
  name.sub!(/\[(.+)\]/, '\1') if name
@@ -1,3 +1,3 @@
1
1
  class Kuport
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kuport
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - u+
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-24 00:00:00.000000000 Z
11
+ date: 2017-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  requirements: []
109
109
  rubyforge_project:
110
- rubygems_version: 2.5.2
110
+ rubygems_version: 2.6.8
111
111
  signing_key:
112
112
  specification_version: 4
113
113
  summary: Kuport scraping library and command