whenkani 0.1.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 +7 -0
- data/.gitignore +9 -0
- data/.travis.yml +5 -0
- data/Gemfile +4 -0
- data/README.md +52 -0
- data/Rakefile +1 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/exe/whenkani +40 -0
- data/lib/whenkani.rb +24 -0
- data/lib/whenkani/version.rb +3 -0
- data/whenkani.gemspec +26 -0
- metadata +97 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9f7f0865d0d3596b94ea14a999d4c3a0a1ee16ce
|
4
|
+
data.tar.gz: 03adb254a2fbf46ebe991ae857ae4ac729263d95
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 63f991b89ea064f9103e84422fe49caf54646b33395018fe2d48b591e6d364a30665cd6b70bff173e93ef528a6e15765c8156d7e365e798b56c97b4192d4782a
|
7
|
+
data.tar.gz: b491e9a3b154207eab6859514233ac812a90ed5036d22d7f7f70aeaf440936022c9dc6744241b93652d4903df4d2d0e429b71eeb7a10e041eb939da98744445c
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
# Whenkani
|
2
|
+
|
3
|
+
Tells you when you're ready to study at
|
4
|
+
[WaniKani](https://www.wanikani.com/dashboard).
|
5
|
+
|
6
|
+
## Installing
|
7
|
+
|
8
|
+
```
|
9
|
+
$ bundle gem install whenkani
|
10
|
+
```
|
11
|
+
|
12
|
+
## Usage
|
13
|
+
|
14
|
+
First, you'll need your API key from your [Account
|
15
|
+
page](https://www.wanikani.com/account)
|
16
|
+
|
17
|
+
Set the API key via an environment variable (usually sourced in a profile):
|
18
|
+
|
19
|
+
```
|
20
|
+
$ WANIKANI_API_KEY=abcdef12345 whenkani
|
21
|
+
```
|
22
|
+
|
23
|
+
Set the API key as a command line argument:
|
24
|
+
```
|
25
|
+
$ whenkani abcdef12345
|
26
|
+
```
|
27
|
+
|
28
|
+
## Output
|
29
|
+
|
30
|
+
### When you're ready to study
|
31
|
+
|
32
|
+
When you have lessons or reviews to do, you'll see this output:
|
33
|
+
|
34
|
+
```
|
35
|
+
$ whenkani
|
36
|
+
You're ready to study!
|
37
|
+
https://www.wanikani.com/dashboard
|
38
|
+
```
|
39
|
+
|
40
|
+
`whenkani` will exit with code 0 if you're ready to study.
|
41
|
+
|
42
|
+
### When you have no lessons or reviews
|
43
|
+
|
44
|
+
When you don't have lessons yet, whenkani will tell you how long to wait:
|
45
|
+
|
46
|
+
```
|
47
|
+
$ whenkani
|
48
|
+
You're not ready, come back in 4 minutes
|
49
|
+
```
|
50
|
+
|
51
|
+
`whenkani` will exit non-zero if you're not ready to study. This may be useful
|
52
|
+
if you want to incorporate this gem into other automation scripts.
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "whenkani"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
data/exe/whenkani
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
require "whenkani"
|
2
|
+
|
3
|
+
api_key = ARGV[0] || ENV['WANIKANI_API_KEY']
|
4
|
+
if api_key.nil? || api_key.empty?
|
5
|
+
raise <<~USAGE
|
6
|
+
|
7
|
+
No API key was provided. It's at the bottom fo your WaniKani Account page:
|
8
|
+
https://www.wanikani.com/account
|
9
|
+
|
10
|
+
usage (environment variable):
|
11
|
+
WANIKANI_API_KEY=abcdef12345 whenkani
|
12
|
+
|
13
|
+
usage (command line argument):
|
14
|
+
whenkani abcdef12345
|
15
|
+
|
16
|
+
USAGE
|
17
|
+
end
|
18
|
+
|
19
|
+
def human_time(seconds)
|
20
|
+
if seconds < 60
|
21
|
+
"#{seconds} seconds"
|
22
|
+
elsif seconds < (60 * 60)
|
23
|
+
"#{seconds / 60} minutes"
|
24
|
+
elsif seconds < (60 * 60 * 24)
|
25
|
+
"#{seconds / (60 * 60)} hours"
|
26
|
+
else
|
27
|
+
"#{seconds / (60 * 60 * 24)} days"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
seconds = WhenKani.new(api_key).seconds_until_review
|
32
|
+
|
33
|
+
if seconds > 0
|
34
|
+
puts "You're not ready, come back in #{human_time(seconds)}"
|
35
|
+
exit 42
|
36
|
+
else
|
37
|
+
puts "You're ready to study!"
|
38
|
+
puts "https://www.wanikani.com/dashboard"
|
39
|
+
exit 0
|
40
|
+
end
|
data/lib/whenkani.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require "net/http"
|
2
|
+
require "json"
|
3
|
+
require "whenkani/version"
|
4
|
+
|
5
|
+
class WhenKani
|
6
|
+
def initialize(api_key)
|
7
|
+
@api_key = api_key
|
8
|
+
end
|
9
|
+
|
10
|
+
def seconds_until_review
|
11
|
+
uri = URI("https://www.wanikani.com/api/user/#{@api_key}/study-queue")
|
12
|
+
response = JSON.parse(Net::HTTP.get(uri))
|
13
|
+
raise response["error"]["message"] if response.has_key?("error")
|
14
|
+
info = response["requested_information"]
|
15
|
+
seconds = info["next_review_date"] - Time.new.to_i
|
16
|
+
if info["reviews_available"] > 0 ||
|
17
|
+
info["lessons_available"] > 0 ||
|
18
|
+
seconds < 0
|
19
|
+
0
|
20
|
+
else
|
21
|
+
seconds
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/whenkani.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'whenkani/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "whenkani"
|
8
|
+
spec.version = WhenKani::VERSION
|
9
|
+
spec.authors = ["Justin Searls"]
|
10
|
+
spec.email = ["searls@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Tells you when you're ready to study WaniKani}
|
13
|
+
spec.description = %q{Helps you know when you're ready to study WaniKani}
|
14
|
+
spec.homepage = "https://github.com/searls/whenkani"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
|
+
f.match(%r{^(test|spec|features)/})
|
18
|
+
end
|
19
|
+
spec.bindir = "exe"
|
20
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
|
+
spec.require_paths = ["lib"]
|
22
|
+
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.13"
|
24
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
25
|
+
spec.add_development_dependency "pry"
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: whenkani
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Justin Searls
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-01-17 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.13'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.13'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: Helps you know when you're ready to study WaniKani
|
56
|
+
email:
|
57
|
+
- searls@gmail.com
|
58
|
+
executables:
|
59
|
+
- whenkani
|
60
|
+
extensions: []
|
61
|
+
extra_rdoc_files: []
|
62
|
+
files:
|
63
|
+
- ".gitignore"
|
64
|
+
- ".travis.yml"
|
65
|
+
- Gemfile
|
66
|
+
- README.md
|
67
|
+
- Rakefile
|
68
|
+
- bin/console
|
69
|
+
- bin/setup
|
70
|
+
- exe/whenkani
|
71
|
+
- lib/whenkani.rb
|
72
|
+
- lib/whenkani/version.rb
|
73
|
+
- whenkani.gemspec
|
74
|
+
homepage: https://github.com/searls/whenkani
|
75
|
+
licenses: []
|
76
|
+
metadata: {}
|
77
|
+
post_install_message:
|
78
|
+
rdoc_options: []
|
79
|
+
require_paths:
|
80
|
+
- lib
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
requirements: []
|
92
|
+
rubyforge_project:
|
93
|
+
rubygems_version: 2.5.2
|
94
|
+
signing_key:
|
95
|
+
specification_version: 4
|
96
|
+
summary: Tells you when you're ready to study WaniKani
|
97
|
+
test_files: []
|