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 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