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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e988219130015e86489a2fdf189975279b6848be
4
- data.tar.gz: 286208cfa2b38628c28ce8ece3ee9a033a7495e1
3
+ metadata.gz: 246d16f297ca76d8808e685baf302863fc9299f8
4
+ data.tar.gz: 084cd47504741280261bd0a7c01b95c306018246
5
5
  SHA512:
6
- metadata.gz: a211742cf923827e67910f9af40422923281d1207f2bc91e38536db7befd3a15461129164a523972a0ef89051c84cc3ba86308538db004f3e36cc17f56123de6
7
- data.tar.gz: 48ed6c08b71709c6786179120dd9aab4639e6b21d7059ec52fdf80f3dffaadd456003446e139cf0c61108fb5dffadcfc6688e07f27318f09f1c83419e14e673b
6
+ metadata.gz: f8c8bca2444d784f19c0969ddbd7fe104c95eb5ee90c2d8b369584545e7ab0b85ddb9b742da882e73c2a180e450a638bd60955598aad4ae53fa8fb90af8ff89d
7
+ data.tar.gz: 1ce54d883dd6d714cb7f78b0d588698bbe3e7c0e1fde57944b1ec2c7bee2f0c854fe0ac3317e610c8252a990edeefeb4bb81d917b0170ba555a63958a6d470f3
data/Gemfile CHANGED
@@ -3,6 +3,9 @@ source 'https://rubygems.org'
3
3
  gem 'oga'
4
4
  gem 'minitest'
5
5
  gem 'vcr'
6
+ gem 'thor'
7
+ gem 'fuzzy_match'
8
+ gem 'launchy'
6
9
  gem 'webmock'
7
10
 
8
11
  group :test do
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
- $ bundle install
14
+ $ gem install kiwicourse
15
15
  ```
16
16
 
17
17
  Run it from the command line.
18
18
  ```sh
19
- $ ./bin/coursesdesc
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 './lib/coursesdesc/courses.rb'
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 'readline'
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
- puts ' _________ _______ ____'
8
- puts ' / __/ ___/ ____ / ___/ / / _/'
9
- puts ' _\\ \\/ /__ /___/ / /__/ /___/ / '
10
- puts ' /___/\\___/ \\___/____/___/ '
11
- puts ''
12
-
13
- sc = KiwiScraper::ShareCourse.new
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
- while buf = Readline.readline('> ', true)
16
- if buf == 'courses'
17
- course_found = sc.course_name
18
- course_found.each do |ele_courses|
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
- elsif buf == 'url'
22
- url_found = sc.course_url
23
- url_found.each do |ele_urls|
24
- puts ele_urls
25
- end
26
- elsif buf == 'test'
27
- puts 'testing'
28
- else
29
- puts 'Command not found!'
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)
@@ -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
@@ -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
- key = ['course_name', 'course_url']
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
@@ -1,5 +1,5 @@
1
1
  # Versioning
2
2
  module CoursesDesc
3
- VERSION = '0.1.3'
3
+ VERSION = '0.2.0'
4
4
  DATE = '2015-10-15'
5
5
  end
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.1.3
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