kiwicourse 0.1.3 → 0.2.0
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 +4 -4
- data/Gemfile +3 -0
- data/README.md +4 -4
- data/bin/coursesdesc +26 -22
- data/kiwicourse.gemspec +24 -0
- data/lib/coursesdesc/courses.rb +7 -6
- data/lib/coursesdesc/version.rb +1 -1
- metadata +44 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 246d16f297ca76d8808e685baf302863fc9299f8
|
|
4
|
+
data.tar.gz: 084cd47504741280261bd0a7c01b95c306018246
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f8c8bca2444d784f19c0969ddbd7fe104c95eb5ee90c2d8b369584545e7ab0b85ddb9b742da882e73c2a180e450a638bd60955598aad4ae53fa8fb90af8ff89d
|
|
7
|
+
data.tar.gz: 1ce54d883dd6d714cb7f78b0d588698bbe3e7c0e1fde57944b1ec2c7bee2f0c854fe0ac3317e610c8252a990edeefeb4bb81d917b0170ba555a63958a6d470f3
|
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# kiwi-scraper
|
|
2
2
|
|
|
3
3
|
[](https://travis-ci.org/Kiwi-Learn/kiwi-scraper)
|
|
4
|
-
|
|
4
|
+
[](https://badge.fury.io/rb/kiwicourse)
|
|
5
5
|
|
|
6
6
|
Kiwi Scraper is a great tool to get [Sharecourse](http://sharecourse.net/sharecourse/general/home/) description!
|
|
7
7
|
|
|
@@ -11,12 +11,12 @@ We respect Sharecourse's `robots.txt`
|
|
|
11
11
|
|
|
12
12
|
Install it with the following command:
|
|
13
13
|
```sh
|
|
14
|
-
$
|
|
14
|
+
$ gem install kiwicourse
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
Run it from the command line.
|
|
18
18
|
```sh
|
|
19
|
-
$
|
|
19
|
+
$ coursesdesc
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
Screenshots
|
|
@@ -32,7 +32,7 @@ Screenshots
|
|
|
32
32
|
|
|
33
33
|
Use it from your Ruby code:
|
|
34
34
|
````ruby
|
|
35
|
-
require '
|
|
35
|
+
require 'kiwicourse'
|
|
36
36
|
sc = KiwiScraper::ShareCourse.new
|
|
37
37
|
|
|
38
38
|
course_found = sc.course_name
|
data/bin/coursesdesc
CHANGED
|
@@ -1,31 +1,35 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
-
require '
|
|
2
|
+
require 'digest'
|
|
3
|
+
require 'thor'
|
|
4
|
+
require 'fuzzy_match'
|
|
5
|
+
require 'launchy'
|
|
3
6
|
require 'coursesdesc' # for production
|
|
4
|
-
|
|
5
7
|
# require '../lib/coursesdesc/courses.rb' # for cmd line testing purposes
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
class KiwiCLI < Thor
|
|
10
|
+
desc 'search COURSENAME', 'Search a course on ShareCourse'
|
|
11
|
+
def search(coursename)
|
|
12
|
+
sc = KiwiScraper::ShareCourse.new
|
|
13
|
+
result = FuzzyMatch.new(sc.course_name).find(coursename)
|
|
14
|
+
puts result
|
|
15
|
+
end
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
desc 'list', 'List all courses on ShareCourse'
|
|
18
|
+
def list
|
|
19
|
+
sc = KiwiScraper::ShareCourse.new
|
|
20
|
+
sc.course_name.each do |ele_courses|
|
|
19
21
|
puts ele_courses
|
|
20
22
|
end
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
desc 'open COURSENAME', 'open the course page on browser'
|
|
26
|
+
def open(coursename)
|
|
27
|
+
sc = KiwiScraper::ShareCourse.new
|
|
28
|
+
# puts sc.courses_name_to_url_mapping
|
|
29
|
+
input_key = Digest::SHA256.digest coursename
|
|
30
|
+
course_url = sc.courses_name_to_url_mapping[input_key]
|
|
31
|
+
Launchy.open(course_url)
|
|
30
32
|
end
|
|
31
33
|
end
|
|
34
|
+
|
|
35
|
+
KiwiCLI.start(ARGV)
|
data/kiwicourse.gemspec
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
$LOAD_PATH.push File.expand_path('../lib', __FILE__)
|
|
2
|
+
require 'coursesdesc/version'
|
|
3
|
+
Gem::Specification.new do |s|
|
|
4
|
+
s.name = 'kiwicourse'
|
|
5
|
+
s.version = CoursesDesc::VERSION
|
|
6
|
+
s.date = CoursesDesc::DATE
|
|
7
|
+
s.executables << 'coursesdesc'
|
|
8
|
+
s.summary = 'Course outline of Sharecourese'
|
|
9
|
+
s.description = 'Get course name and url list from Sharecourese of NTHU.'
|
|
10
|
+
s.authors = ['John Lin', 'Robert Chang', 'Vicky Lee', 'Sam Cheng']
|
|
11
|
+
s.files = `git ls-files`.split("\n")
|
|
12
|
+
s.test_files = `git ls-files spec/*`.split("\n")
|
|
13
|
+
s.homepage = 'https://github.com/Kiwi-Learn/kiwi-scraper'
|
|
14
|
+
s.license = 'MIT'
|
|
15
|
+
|
|
16
|
+
# depend gem
|
|
17
|
+
s.add_development_dependency 'minitest'
|
|
18
|
+
s.add_development_dependency 'vcr'
|
|
19
|
+
s.add_development_dependency 'webmock'
|
|
20
|
+
s.add_runtime_dependency 'oga'
|
|
21
|
+
s.add_runtime_dependency 'thor'
|
|
22
|
+
s.add_runtime_dependency 'fuzzy_match'
|
|
23
|
+
s.add_runtime_dependency 'launchy'
|
|
24
|
+
end
|
data/lib/coursesdesc/courses.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'oga'
|
|
2
2
|
require 'open-uri'
|
|
3
|
+
require 'digest'
|
|
3
4
|
|
|
4
5
|
module KiwiScraper
|
|
5
6
|
# parse course description from sharecourse web
|
|
@@ -50,17 +51,17 @@ module KiwiScraper
|
|
|
50
51
|
name << course.text
|
|
51
52
|
end
|
|
52
53
|
|
|
54
|
+
hash_name = []
|
|
55
|
+
name.each_index do |index|
|
|
56
|
+
hash_name[index] = Digest::SHA256.digest name[index]
|
|
57
|
+
end
|
|
58
|
+
|
|
53
59
|
url = []
|
|
54
60
|
@document.xpath('//div[@onclick]').each do |course|
|
|
55
61
|
url << course.attributes[2].value.split("'")[1]
|
|
56
62
|
end
|
|
57
63
|
|
|
58
|
-
|
|
59
|
-
result = []
|
|
60
|
-
name.each_index do |index|
|
|
61
|
-
element = Hash[key.zip [name[index], url[index]]]
|
|
62
|
-
result << element
|
|
63
|
-
end
|
|
64
|
+
result = Hash[hash_name.zip(url)]
|
|
64
65
|
|
|
65
66
|
result
|
|
66
67
|
end
|
data/lib/coursesdesc/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kiwicourse
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- John Lin
|
|
@@ -69,6 +69,48 @@ dependencies:
|
|
|
69
69
|
- - ">="
|
|
70
70
|
- !ruby/object:Gem::Version
|
|
71
71
|
version: '0'
|
|
72
|
+
- !ruby/object:Gem::Dependency
|
|
73
|
+
name: thor
|
|
74
|
+
requirement: !ruby/object:Gem::Requirement
|
|
75
|
+
requirements:
|
|
76
|
+
- - ">="
|
|
77
|
+
- !ruby/object:Gem::Version
|
|
78
|
+
version: '0'
|
|
79
|
+
type: :runtime
|
|
80
|
+
prerelease: false
|
|
81
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
82
|
+
requirements:
|
|
83
|
+
- - ">="
|
|
84
|
+
- !ruby/object:Gem::Version
|
|
85
|
+
version: '0'
|
|
86
|
+
- !ruby/object:Gem::Dependency
|
|
87
|
+
name: fuzzy_match
|
|
88
|
+
requirement: !ruby/object:Gem::Requirement
|
|
89
|
+
requirements:
|
|
90
|
+
- - ">="
|
|
91
|
+
- !ruby/object:Gem::Version
|
|
92
|
+
version: '0'
|
|
93
|
+
type: :runtime
|
|
94
|
+
prerelease: false
|
|
95
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
96
|
+
requirements:
|
|
97
|
+
- - ">="
|
|
98
|
+
- !ruby/object:Gem::Version
|
|
99
|
+
version: '0'
|
|
100
|
+
- !ruby/object:Gem::Dependency
|
|
101
|
+
name: launchy
|
|
102
|
+
requirement: !ruby/object:Gem::Requirement
|
|
103
|
+
requirements:
|
|
104
|
+
- - ">="
|
|
105
|
+
- !ruby/object:Gem::Version
|
|
106
|
+
version: '0'
|
|
107
|
+
type: :runtime
|
|
108
|
+
prerelease: false
|
|
109
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
110
|
+
requirements:
|
|
111
|
+
- - ">="
|
|
112
|
+
- !ruby/object:Gem::Version
|
|
113
|
+
version: '0'
|
|
72
114
|
description: Get course name and url list from Sharecourese of NTHU.
|
|
73
115
|
email:
|
|
74
116
|
executables:
|
|
@@ -83,6 +125,7 @@ files:
|
|
|
83
125
|
- README.md
|
|
84
126
|
- Rakefile
|
|
85
127
|
- bin/coursesdesc
|
|
128
|
+
- kiwicourse.gemspec
|
|
86
129
|
- lib/coursesdesc.rb
|
|
87
130
|
- lib/coursesdesc/courses.rb
|
|
88
131
|
- lib/coursesdesc/version.rb
|