kiwicourse 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Build Status](https://travis-ci.org/Kiwi-Learn/kiwi-scraper.svg?branch=master)](https://travis-ci.org/Kiwi-Learn/kiwi-scraper)
|
4
|
-
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/kiwicourse.svg)](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
|