unclekryon 0.4.9.pre.alpha
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/Gemfile +34 -0
- data/Gemfile.lock +43 -0
- data/LICENSE +674 -0
- data/README.md +55 -0
- data/Rakefile +59 -0
- data/bin/unclekryon +30 -0
- data/iso/can_provs_terrs.yaml +54 -0
- data/iso/countries.yaml +3050 -0
- data/iso/iso.yaml +8 -0
- data/iso/languages.yaml +5641 -0
- data/iso/regions.yaml +42 -0
- data/iso/subregions.yaml +6 -0
- data/iso/usa_states.yaml +230 -0
- data/lib/unclekryon.rb +384 -0
- data/lib/unclekryon/data/album_data.rb +147 -0
- data/lib/unclekryon/data/artist_data.rb +109 -0
- data/lib/unclekryon/data/artist_data_data.rb +146 -0
- data/lib/unclekryon/data/aum_data.rb +75 -0
- data/lib/unclekryon/data/base_data.rb +79 -0
- data/lib/unclekryon/data/pic_data.rb +76 -0
- data/lib/unclekryon/data/release_data.rb +57 -0
- data/lib/unclekryon/data/social_data.rb +39 -0
- data/lib/unclekryon/data/timespan_data.rb +70 -0
- data/lib/unclekryon/dev_opts.rb +41 -0
- data/lib/unclekryon/hacker.rb +327 -0
- data/lib/unclekryon/iso.rb +341 -0
- data/lib/unclekryon/iso/base_iso.rb +196 -0
- data/lib/unclekryon/iso/can_prov_terr.rb +113 -0
- data/lib/unclekryon/iso/country.rb +133 -0
- data/lib/unclekryon/iso/language.rb +241 -0
- data/lib/unclekryon/iso/region.rb +53 -0
- data/lib/unclekryon/iso/subregion.rb +53 -0
- data/lib/unclekryon/iso/usa_state.rb +106 -0
- data/lib/unclekryon/jsoner.rb +124 -0
- data/lib/unclekryon/log.rb +111 -0
- data/lib/unclekryon/parsers/kryon_aum_year_album_parser.rb +499 -0
- data/lib/unclekryon/parsers/kryon_aum_year_parser.rb +413 -0
- data/lib/unclekryon/server.rb +29 -0
- data/lib/unclekryon/trainer.rb +231 -0
- data/lib/unclekryon/uploader.rb +29 -0
- data/lib/unclekryon/util.rb +228 -0
- data/lib/unclekryon/version.rb +26 -0
- data/unclekryon.gemspec +67 -0
- metadata +189 -0
data/iso/regions.yaml
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
Regions:
|
|
3
|
+
Africa: !ruby/object:UncleKryon::Region
|
|
4
|
+
updated_on: '2018-06-11 17:35:28'
|
|
5
|
+
name: Africa
|
|
6
|
+
code: Africa
|
|
7
|
+
Antarctica: !ruby/object:UncleKryon::Region
|
|
8
|
+
updated_on: '2018-06-11 17:35:28'
|
|
9
|
+
name: Antarctica
|
|
10
|
+
code: Antarctica
|
|
11
|
+
Asia: !ruby/object:UncleKryon::Region
|
|
12
|
+
updated_on: '2018-06-11 17:35:28'
|
|
13
|
+
name: Asia
|
|
14
|
+
code: Asia
|
|
15
|
+
Australia: !ruby/object:UncleKryon::Region
|
|
16
|
+
updated_on: '2018-06-11 17:35:28'
|
|
17
|
+
name: Australia
|
|
18
|
+
code: Australia
|
|
19
|
+
Europe: !ruby/object:UncleKryon::Region
|
|
20
|
+
updated_on: '2018-06-11 17:35:28'
|
|
21
|
+
name: Europe
|
|
22
|
+
code: Europe
|
|
23
|
+
North America: !ruby/object:UncleKryon::Region
|
|
24
|
+
updated_on: '2018-06-11 17:35:28'
|
|
25
|
+
name: North America
|
|
26
|
+
code: North America
|
|
27
|
+
Oceania: !ruby/object:UncleKryon::Region
|
|
28
|
+
updated_on: '2018-06-11 17:35:28'
|
|
29
|
+
name: Oceania
|
|
30
|
+
code: Oceania
|
|
31
|
+
South America: !ruby/object:UncleKryon::Region
|
|
32
|
+
updated_on: '2018-06-11 17:35:28'
|
|
33
|
+
name: South America
|
|
34
|
+
code: South America
|
|
35
|
+
Western Mediterranean: !ruby/object:UncleKryon::Region
|
|
36
|
+
updated_on: '2018-06-11 17:35:28'
|
|
37
|
+
name: Western Mediterranean
|
|
38
|
+
code: Western Mediterranean
|
|
39
|
+
World: !ruby/object:UncleKryon::Region
|
|
40
|
+
updated_on: '2018-06-11 17:35:28'
|
|
41
|
+
name: World
|
|
42
|
+
code: World
|
data/iso/subregions.yaml
ADDED
data/iso/usa_states.yaml
ADDED
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
---
|
|
2
|
+
USA States:
|
|
3
|
+
AK: !ruby/object:UncleKryon::UsaState
|
|
4
|
+
updated_on: '2018-06-11 17:31:44'
|
|
5
|
+
name: Alaska
|
|
6
|
+
code: AK
|
|
7
|
+
AL: !ruby/object:UncleKryon::UsaState
|
|
8
|
+
updated_on: '2018-06-11 17:31:44'
|
|
9
|
+
name: Alabama
|
|
10
|
+
code: AL
|
|
11
|
+
AR: !ruby/object:UncleKryon::UsaState
|
|
12
|
+
updated_on: '2018-06-11 17:31:44'
|
|
13
|
+
name: Arkansas
|
|
14
|
+
code: AR
|
|
15
|
+
AS: !ruby/object:UncleKryon::UsaState
|
|
16
|
+
updated_on: '2018-06-11 17:31:44'
|
|
17
|
+
name: American Samoa
|
|
18
|
+
code: AS
|
|
19
|
+
AZ: !ruby/object:UncleKryon::UsaState
|
|
20
|
+
updated_on: '2018-06-11 17:31:44'
|
|
21
|
+
name: Arizona
|
|
22
|
+
code: AZ
|
|
23
|
+
CA: !ruby/object:UncleKryon::UsaState
|
|
24
|
+
updated_on: '2018-06-11 17:31:44'
|
|
25
|
+
name: California
|
|
26
|
+
code: CA
|
|
27
|
+
CO: !ruby/object:UncleKryon::UsaState
|
|
28
|
+
updated_on: '2018-06-11 17:31:44'
|
|
29
|
+
name: Colorado
|
|
30
|
+
code: CO
|
|
31
|
+
CT: !ruby/object:UncleKryon::UsaState
|
|
32
|
+
updated_on: '2018-06-11 17:31:44'
|
|
33
|
+
name: Connecticut
|
|
34
|
+
code: CT
|
|
35
|
+
DC: !ruby/object:UncleKryon::UsaState
|
|
36
|
+
updated_on: '2018-06-11 17:31:44'
|
|
37
|
+
name: District of Columbia
|
|
38
|
+
code: DC
|
|
39
|
+
DE: !ruby/object:UncleKryon::UsaState
|
|
40
|
+
updated_on: '2018-06-11 17:31:44'
|
|
41
|
+
name: Delaware
|
|
42
|
+
code: DE
|
|
43
|
+
FL: !ruby/object:UncleKryon::UsaState
|
|
44
|
+
updated_on: '2018-06-11 17:31:44'
|
|
45
|
+
name: Florida
|
|
46
|
+
code: FL
|
|
47
|
+
GA: !ruby/object:UncleKryon::UsaState
|
|
48
|
+
updated_on: '2018-06-11 17:31:44'
|
|
49
|
+
name: Georgia
|
|
50
|
+
code: GA
|
|
51
|
+
GU: !ruby/object:UncleKryon::UsaState
|
|
52
|
+
updated_on: '2018-06-11 17:31:44'
|
|
53
|
+
name: Guam
|
|
54
|
+
code: GU
|
|
55
|
+
HI: !ruby/object:UncleKryon::UsaState
|
|
56
|
+
updated_on: '2018-06-11 17:31:44'
|
|
57
|
+
name: Hawaii
|
|
58
|
+
code: HI
|
|
59
|
+
IA: !ruby/object:UncleKryon::UsaState
|
|
60
|
+
updated_on: '2018-06-11 17:31:44'
|
|
61
|
+
name: Iowa
|
|
62
|
+
code: IA
|
|
63
|
+
ID: !ruby/object:UncleKryon::UsaState
|
|
64
|
+
updated_on: '2018-06-11 17:31:44'
|
|
65
|
+
name: Idaho
|
|
66
|
+
code: ID
|
|
67
|
+
IL: !ruby/object:UncleKryon::UsaState
|
|
68
|
+
updated_on: '2018-06-11 17:31:44'
|
|
69
|
+
name: Illinois
|
|
70
|
+
code: IL
|
|
71
|
+
IN: !ruby/object:UncleKryon::UsaState
|
|
72
|
+
updated_on: '2018-06-11 17:31:44'
|
|
73
|
+
name: Indiana
|
|
74
|
+
code: IN
|
|
75
|
+
KS: !ruby/object:UncleKryon::UsaState
|
|
76
|
+
updated_on: '2018-06-11 17:31:44'
|
|
77
|
+
name: Kansas
|
|
78
|
+
code: KS
|
|
79
|
+
KY: !ruby/object:UncleKryon::UsaState
|
|
80
|
+
updated_on: '2018-06-11 17:31:44'
|
|
81
|
+
name: Kentucky
|
|
82
|
+
code: KY
|
|
83
|
+
LA: !ruby/object:UncleKryon::UsaState
|
|
84
|
+
updated_on: '2018-06-11 17:31:44'
|
|
85
|
+
name: Louisiana
|
|
86
|
+
code: LA
|
|
87
|
+
MA: !ruby/object:UncleKryon::UsaState
|
|
88
|
+
updated_on: '2018-06-11 17:31:44'
|
|
89
|
+
name: Massachusetts
|
|
90
|
+
code: MA
|
|
91
|
+
MD: !ruby/object:UncleKryon::UsaState
|
|
92
|
+
updated_on: '2018-06-11 17:31:44'
|
|
93
|
+
name: Maryland
|
|
94
|
+
code: MD
|
|
95
|
+
ME: !ruby/object:UncleKryon::UsaState
|
|
96
|
+
updated_on: '2018-06-11 17:31:44'
|
|
97
|
+
name: Maine
|
|
98
|
+
code: ME
|
|
99
|
+
MI: !ruby/object:UncleKryon::UsaState
|
|
100
|
+
updated_on: '2018-06-11 17:31:44'
|
|
101
|
+
name: Michigan
|
|
102
|
+
code: MI
|
|
103
|
+
MN: !ruby/object:UncleKryon::UsaState
|
|
104
|
+
updated_on: '2018-06-11 17:31:44'
|
|
105
|
+
name: Minnesota
|
|
106
|
+
code: MN
|
|
107
|
+
MO: !ruby/object:UncleKryon::UsaState
|
|
108
|
+
updated_on: '2018-06-11 17:31:44'
|
|
109
|
+
name: Missouri
|
|
110
|
+
code: MO
|
|
111
|
+
MP: !ruby/object:UncleKryon::UsaState
|
|
112
|
+
updated_on: '2018-06-11 17:31:44'
|
|
113
|
+
name: Northern Mariana Islands
|
|
114
|
+
code: MP
|
|
115
|
+
MS: !ruby/object:UncleKryon::UsaState
|
|
116
|
+
updated_on: '2018-06-11 17:31:44'
|
|
117
|
+
name: Mississippi
|
|
118
|
+
code: MS
|
|
119
|
+
MT: !ruby/object:UncleKryon::UsaState
|
|
120
|
+
updated_on: '2018-06-11 17:31:44'
|
|
121
|
+
name: Montana
|
|
122
|
+
code: MT
|
|
123
|
+
NC: !ruby/object:UncleKryon::UsaState
|
|
124
|
+
updated_on: '2018-06-11 17:31:44'
|
|
125
|
+
name: North Carolina
|
|
126
|
+
code: NC
|
|
127
|
+
ND: !ruby/object:UncleKryon::UsaState
|
|
128
|
+
updated_on: '2018-06-11 17:31:44'
|
|
129
|
+
name: North Dakota
|
|
130
|
+
code: ND
|
|
131
|
+
NE: !ruby/object:UncleKryon::UsaState
|
|
132
|
+
updated_on: '2018-06-11 17:31:44'
|
|
133
|
+
name: Nebraska
|
|
134
|
+
code: NE
|
|
135
|
+
NH: !ruby/object:UncleKryon::UsaState
|
|
136
|
+
updated_on: '2018-06-11 17:31:44'
|
|
137
|
+
name: New Hampshire
|
|
138
|
+
code: NH
|
|
139
|
+
NJ: !ruby/object:UncleKryon::UsaState
|
|
140
|
+
updated_on: '2018-06-11 17:31:44'
|
|
141
|
+
name: New Jersey
|
|
142
|
+
code: NJ
|
|
143
|
+
NM: !ruby/object:UncleKryon::UsaState
|
|
144
|
+
updated_on: '2018-06-11 17:31:44'
|
|
145
|
+
name: New Mexico
|
|
146
|
+
code: NM
|
|
147
|
+
NV: !ruby/object:UncleKryon::UsaState
|
|
148
|
+
updated_on: '2018-06-11 17:31:44'
|
|
149
|
+
name: Nevada
|
|
150
|
+
code: NV
|
|
151
|
+
NY: !ruby/object:UncleKryon::UsaState
|
|
152
|
+
updated_on: '2018-06-11 17:31:44'
|
|
153
|
+
name: New York
|
|
154
|
+
code: NY
|
|
155
|
+
OH: !ruby/object:UncleKryon::UsaState
|
|
156
|
+
updated_on: '2018-06-11 17:31:44'
|
|
157
|
+
name: Ohio
|
|
158
|
+
code: OH
|
|
159
|
+
OK: !ruby/object:UncleKryon::UsaState
|
|
160
|
+
updated_on: '2018-06-11 17:31:44'
|
|
161
|
+
name: Oklahoma
|
|
162
|
+
code: OK
|
|
163
|
+
OR: !ruby/object:UncleKryon::UsaState
|
|
164
|
+
updated_on: '2018-06-11 17:31:44'
|
|
165
|
+
name: Oregon
|
|
166
|
+
code: OR
|
|
167
|
+
PA: !ruby/object:UncleKryon::UsaState
|
|
168
|
+
updated_on: '2018-06-11 17:31:44'
|
|
169
|
+
name: Pennsylvania
|
|
170
|
+
code: PA
|
|
171
|
+
PR: !ruby/object:UncleKryon::UsaState
|
|
172
|
+
updated_on: '2018-06-11 17:31:44'
|
|
173
|
+
name: Puerto Rico
|
|
174
|
+
code: PR
|
|
175
|
+
RI: !ruby/object:UncleKryon::UsaState
|
|
176
|
+
updated_on: '2018-06-11 17:31:44'
|
|
177
|
+
name: Rhode Island
|
|
178
|
+
code: RI
|
|
179
|
+
SC: !ruby/object:UncleKryon::UsaState
|
|
180
|
+
updated_on: '2018-06-11 17:31:44'
|
|
181
|
+
name: South Carolina
|
|
182
|
+
code: SC
|
|
183
|
+
SD: !ruby/object:UncleKryon::UsaState
|
|
184
|
+
updated_on: '2018-06-11 17:31:44'
|
|
185
|
+
name: South Dakota
|
|
186
|
+
code: SD
|
|
187
|
+
TN: !ruby/object:UncleKryon::UsaState
|
|
188
|
+
updated_on: '2018-06-11 17:31:44'
|
|
189
|
+
name: Tennessee
|
|
190
|
+
code: TN
|
|
191
|
+
TX: !ruby/object:UncleKryon::UsaState
|
|
192
|
+
updated_on: '2018-06-11 17:31:44'
|
|
193
|
+
name: Texas
|
|
194
|
+
code: TX
|
|
195
|
+
UM: !ruby/object:UncleKryon::UsaState
|
|
196
|
+
updated_on: '2018-06-11 17:31:44'
|
|
197
|
+
name: United States Minor Outlying Islands
|
|
198
|
+
code: UM
|
|
199
|
+
UT: !ruby/object:UncleKryon::UsaState
|
|
200
|
+
updated_on: '2018-06-11 17:31:44'
|
|
201
|
+
name: Utah
|
|
202
|
+
code: UT
|
|
203
|
+
VA: !ruby/object:UncleKryon::UsaState
|
|
204
|
+
updated_on: '2018-06-11 17:31:44'
|
|
205
|
+
name: Virginia
|
|
206
|
+
code: VA
|
|
207
|
+
VI: !ruby/object:UncleKryon::UsaState
|
|
208
|
+
updated_on: '2018-06-11 17:31:44'
|
|
209
|
+
name: Virgin Islands, U.S.
|
|
210
|
+
code: VI
|
|
211
|
+
VT: !ruby/object:UncleKryon::UsaState
|
|
212
|
+
updated_on: '2018-06-11 17:31:44'
|
|
213
|
+
name: Vermont
|
|
214
|
+
code: VT
|
|
215
|
+
WA: !ruby/object:UncleKryon::UsaState
|
|
216
|
+
updated_on: '2018-06-11 17:31:44'
|
|
217
|
+
name: Washington
|
|
218
|
+
code: WA
|
|
219
|
+
WI: !ruby/object:UncleKryon::UsaState
|
|
220
|
+
updated_on: '2018-06-11 17:31:44'
|
|
221
|
+
name: Wisconsin
|
|
222
|
+
code: WI
|
|
223
|
+
WV: !ruby/object:UncleKryon::UsaState
|
|
224
|
+
updated_on: '2018-06-11 17:31:44'
|
|
225
|
+
name: West Virginia
|
|
226
|
+
code: WV
|
|
227
|
+
WY: !ruby/object:UncleKryon::UsaState
|
|
228
|
+
updated_on: '2018-06-11 17:31:44'
|
|
229
|
+
name: Wyoming
|
|
230
|
+
code: WY
|
data/lib/unclekryon.rb
ADDED
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# encoding: UTF-8
|
|
3
|
+
# frozen_string_literal: true
|
|
4
|
+
|
|
5
|
+
#--
|
|
6
|
+
# This file is part of UncleKryon-server.
|
|
7
|
+
# Copyright (c) 2017-2019 Jonathan Bradley Whited (@esotericpig)
|
|
8
|
+
#
|
|
9
|
+
# UncleKryon-server is free software: you can redistribute it and/or modify
|
|
10
|
+
# it under the terms of the GNU General Public License as published by
|
|
11
|
+
# the Free Software Foundation, either version 3 of the License, or
|
|
12
|
+
# (at your option) any later version.
|
|
13
|
+
#
|
|
14
|
+
# UncleKryon-server is distributed in the hope that it will be useful,
|
|
15
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
16
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
17
|
+
# GNU General Public License for more details.
|
|
18
|
+
#
|
|
19
|
+
# You should have received a copy of the GNU General Public License
|
|
20
|
+
# along with UncleKryon-server. If not, see <https://www.gnu.org/licenses/>.
|
|
21
|
+
#++
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
require 'rubygems'
|
|
25
|
+
require 'bundler/setup'
|
|
26
|
+
|
|
27
|
+
require 'optparse'
|
|
28
|
+
|
|
29
|
+
require 'unclekryon/dev_opts'
|
|
30
|
+
require 'unclekryon/hacker'
|
|
31
|
+
require 'unclekryon/iso'
|
|
32
|
+
require 'unclekryon/jsoner'
|
|
33
|
+
require 'unclekryon/log'
|
|
34
|
+
require 'unclekryon/server'
|
|
35
|
+
require 'unclekryon/trainer'
|
|
36
|
+
require 'unclekryon/uploader'
|
|
37
|
+
require 'unclekryon/util'
|
|
38
|
+
require 'unclekryon/version'
|
|
39
|
+
|
|
40
|
+
require 'unclekryon/data/album_data'
|
|
41
|
+
require 'unclekryon/data/artist_data'
|
|
42
|
+
require 'unclekryon/data/artist_data_data'
|
|
43
|
+
require 'unclekryon/data/aum_data'
|
|
44
|
+
require 'unclekryon/data/base_data'
|
|
45
|
+
require 'unclekryon/data/pic_data'
|
|
46
|
+
require 'unclekryon/data/release_data'
|
|
47
|
+
require 'unclekryon/data/social_data'
|
|
48
|
+
require 'unclekryon/data/timespan_data'
|
|
49
|
+
|
|
50
|
+
require 'unclekryon/iso/base_iso'
|
|
51
|
+
require 'unclekryon/iso/can_prov_terr'
|
|
52
|
+
require 'unclekryon/iso/country'
|
|
53
|
+
require 'unclekryon/iso/language'
|
|
54
|
+
require 'unclekryon/iso/region'
|
|
55
|
+
require 'unclekryon/iso/subregion'
|
|
56
|
+
require 'unclekryon/iso/usa_state'
|
|
57
|
+
|
|
58
|
+
require 'unclekryon/parsers/kryon_aum_year_album_parser'
|
|
59
|
+
require 'unclekryon/parsers/kryon_aum_year_parser'
|
|
60
|
+
|
|
61
|
+
module UncleKryon
|
|
62
|
+
class Main
|
|
63
|
+
OPT_HELP_UPDATED_ON = %Q^Change all "updated_*on" datetimes to <datetime> (e.g., #{Util.format_datetime(DateTime.now())})^
|
|
64
|
+
|
|
65
|
+
include Logging
|
|
66
|
+
|
|
67
|
+
def initialize(args)
|
|
68
|
+
@args = args
|
|
69
|
+
@cmd = nil
|
|
70
|
+
@did_cmd = false
|
|
71
|
+
@options = {}
|
|
72
|
+
@parsers = []
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def run()
|
|
76
|
+
parser = OptionParser.new do |op|
|
|
77
|
+
op.program_name = 'unclekryon'
|
|
78
|
+
op.version = VERSION
|
|
79
|
+
|
|
80
|
+
op.banner = <<~EOS
|
|
81
|
+
Usage: #{op.program_name} [options] <sub_cmd> [options] <sub_cmd>...
|
|
82
|
+
|
|
83
|
+
Sub Commands:
|
|
84
|
+
hax kryon aum year
|
|
85
|
+
iso list
|
|
86
|
+
|
|
87
|
+
Options:
|
|
88
|
+
EOS
|
|
89
|
+
|
|
90
|
+
op.on('-d','--dev','Raise errors on missing data, etc.') do
|
|
91
|
+
DevOpts.instance.dev = true
|
|
92
|
+
end
|
|
93
|
+
op.on('-n','--no-clobber','No clobbering of files, dry run; prints to console') do
|
|
94
|
+
@options[:no_clobber] = true
|
|
95
|
+
end
|
|
96
|
+
op.on('-h','--help','Print help to console')
|
|
97
|
+
op.on('-t','--test','Fill in training data with random values, etc. for fast testing') do
|
|
98
|
+
DevOpts.instance.test = true
|
|
99
|
+
end
|
|
100
|
+
op.on('-v','--version','Print version to console')
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
@parsers.push(parser)
|
|
104
|
+
parser.order!(@args,into: @options)
|
|
105
|
+
|
|
106
|
+
if shift_args()
|
|
107
|
+
parse_hax_cmd()
|
|
108
|
+
parse_iso_cmd()
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
if !@did_cmd
|
|
112
|
+
if @options[:version]
|
|
113
|
+
puts "#{parser.program_name} v#{parser.version}"
|
|
114
|
+
else
|
|
115
|
+
@parsers.each do |p|
|
|
116
|
+
puts p
|
|
117
|
+
puts
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
s = <<~EOS
|
|
121
|
+
Examples:
|
|
122
|
+
| # To view all of the options for the sub commands:
|
|
123
|
+
| $ #{parser.program_name} hax kryon aum year
|
|
124
|
+
| $ #{parser.program_name} iso list
|
|
125
|
+
|
|
|
126
|
+
| <hax>:
|
|
127
|
+
| # Train the data 1st before haxing (if there is no training data)
|
|
128
|
+
| $ #{parser.program_name} -d hax -t kryon aum year -t 2017 -s
|
|
129
|
+
| $ #{parser.program_name} -d hax -t kryon aum year -t 2017 -a 2.2
|
|
130
|
+
|
|
|
131
|
+
| # Hax the data (even though --title is not required, it is recommended)
|
|
132
|
+
| $ #{parser.program_name} -d hax kryon aum year -t 2017 -s
|
|
133
|
+
| $ #{parser.program_name} -d hax kryon aum year -t 2017 -a 10.9
|
|
134
|
+
| $ #{parser.program_name} -d hax kryon aum year -a 2017.9.29
|
|
135
|
+
|
|
|
136
|
+
| # Hax the 2nd "6.4" album (if there are 2)
|
|
137
|
+
| $ #{parser.program_name} -d hax kryon aum year -t 2017 -a 6.4:2
|
|
138
|
+
|
|
|
139
|
+
| <iso>:
|
|
140
|
+
| $ #{parser.program_name} -n iso -u '2019-04-16 11:11:00'
|
|
141
|
+
| $ #{parser.program_name} iso list -r
|
|
142
|
+
EOS
|
|
143
|
+
puts s.gsub(/^\|/,'')
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def shift_args()
|
|
149
|
+
return !@args.nil?() && !(@cmd = @args.shift()).nil?()
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def parse_hax_cmd()
|
|
153
|
+
return if !cmd?('hax')
|
|
154
|
+
|
|
155
|
+
parser = OptionParser.new do |op|
|
|
156
|
+
op.banner = '<hax> options:'
|
|
157
|
+
|
|
158
|
+
op.on('-d','--dir <dir>',"Directory to save the hax data to (default: #{Hacker::HAX_DIRNAME})") do |dir|
|
|
159
|
+
@options[:hax_dirname] = dir
|
|
160
|
+
end
|
|
161
|
+
op.on('-t','--train','Train the data using machine learning')
|
|
162
|
+
op.on('-i','--train-dir <dir>',"Directory to save the training data to (default: #{Hacker::TRAIN_DIRNAME})") do |dir|
|
|
163
|
+
@options[:train_dirname] = dir
|
|
164
|
+
end
|
|
165
|
+
op.on('-u','--updated-on <datetime>',OPT_HELP_UPDATED_ON) do |datetime|
|
|
166
|
+
@options[:updated_on] = datetime
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
@parsers.push(parser)
|
|
171
|
+
parser.order!(@args,into: @options)
|
|
172
|
+
|
|
173
|
+
if do_cmd?()
|
|
174
|
+
if @options[:updated_on]
|
|
175
|
+
hax_dirname = @options[:hax_dirname] ? @options[:hax_dirname] : Hacker::HAX_DIRNAME
|
|
176
|
+
gsub_updated_on(hax_dirname,@options[:updated_on])
|
|
177
|
+
|
|
178
|
+
@did_cmd = true
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
if shift_args()
|
|
183
|
+
parse_hax_kryon_cmd()
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
def parse_hax_kryon_cmd()
|
|
188
|
+
return if !cmd?('kryon')
|
|
189
|
+
|
|
190
|
+
parser = OptionParser.new do |op|
|
|
191
|
+
op.banner = '<kryon> options:'
|
|
192
|
+
|
|
193
|
+
op.on('-f','--file <file>',"File to save the hax data to (default: #{Hacker::HAX_KRYON_FILENAME})") do |file|
|
|
194
|
+
@options[:hax_kryon_filename] = file
|
|
195
|
+
end
|
|
196
|
+
op.on('-t','--train-file <file>',"File to save the training data to (default: #{Hacker::TRAIN_KRYON_FILENAME})") do |file|
|
|
197
|
+
@options[:train_kryon_filename] = file
|
|
198
|
+
end
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
@parsers.push(parser)
|
|
202
|
+
parser.order!(@args,into: @options)
|
|
203
|
+
|
|
204
|
+
if shift_args()
|
|
205
|
+
parse_hax_kryon_aum_cmd()
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
def parse_hax_kryon_aum_cmd()
|
|
210
|
+
return if !cmd?('aum')
|
|
211
|
+
|
|
212
|
+
if shift_args()
|
|
213
|
+
parse_hax_kryon_aum_year_cmd()
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
def parse_hax_kryon_aum_year_cmd()
|
|
218
|
+
return if !cmd?('year')
|
|
219
|
+
|
|
220
|
+
parser = OptionParser.new do |op|
|
|
221
|
+
op.banner = '<year> options:'
|
|
222
|
+
|
|
223
|
+
op.on('-t','--title <title>','Title of year release to hack (e.g., 2017)')
|
|
224
|
+
op.on('-a','--album <album>','Album to hack (e.g., 2017.12.25, 1.10, 6.4:2)')
|
|
225
|
+
op.on('-s','--albums','Hack all albums')
|
|
226
|
+
op.on('-b','--begin-album <album>','Hack all albums starting from <album>') do |begin_album|
|
|
227
|
+
@options[:albums] = true
|
|
228
|
+
@options[:begin_album] = begin_album
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
@parsers.push(parser)
|
|
233
|
+
parser.order!(@args,into: @options)
|
|
234
|
+
|
|
235
|
+
if do_cmd?()
|
|
236
|
+
log_opts()
|
|
237
|
+
|
|
238
|
+
hacker = Hacker.new(@options)
|
|
239
|
+
|
|
240
|
+
if @options[:train]
|
|
241
|
+
if @options[:album]
|
|
242
|
+
hacker.train_kryon_aum_year_album(@options[:album],@options[:title])
|
|
243
|
+
@did_cmd = true
|
|
244
|
+
elsif @options[:title]
|
|
245
|
+
if @options[:albums]
|
|
246
|
+
hacker.train_kryon_aum_year_albums(@options[:title],@options[:begin_album])
|
|
247
|
+
else
|
|
248
|
+
hacker.train_kryon_aum_year(@options[:title])
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
@did_cmd = true
|
|
252
|
+
end
|
|
253
|
+
else
|
|
254
|
+
if @options[:album]
|
|
255
|
+
hacker.parse_kryon_aum_year_album(@options[:album],@options[:title])
|
|
256
|
+
@did_cmd = true
|
|
257
|
+
elsif @options[:title]
|
|
258
|
+
if @options[:albums]
|
|
259
|
+
hacker.parse_kryon_aum_year_albums(@options[:title],@options[:begin_album])
|
|
260
|
+
else
|
|
261
|
+
hacker.parse_kryon_aum_year(@options[:title])
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
@did_cmd = true
|
|
265
|
+
end
|
|
266
|
+
end
|
|
267
|
+
end
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
def parse_iso_cmd()
|
|
271
|
+
return if !cmd?('iso')
|
|
272
|
+
|
|
273
|
+
parser = OptionParser.new do |op|
|
|
274
|
+
op.banner = '<iso> options:'
|
|
275
|
+
|
|
276
|
+
op.on('-d','--dir <dir>',"Directory to read/write ISO data (default: #{BaseIsos::DEFAULT_DIR})") do |dir|
|
|
277
|
+
@options[:iso_dirname] = dir
|
|
278
|
+
end
|
|
279
|
+
op.on('-u','--updated-on <datetime>',OPT_HELP_UPDATED_ON) do |datetime|
|
|
280
|
+
@options[:updated_on] = datetime
|
|
281
|
+
end
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
@parsers.push(parser)
|
|
285
|
+
parser.order!(@args,into: @options)
|
|
286
|
+
|
|
287
|
+
if do_cmd?()
|
|
288
|
+
if @options[:updated_on]
|
|
289
|
+
iso_dirname = @options[:iso_dirname] ? @options[:iso_dirname] : BaseIsos::DEFAULT_DIR
|
|
290
|
+
gsub_updated_on(iso_dirname,@options[:updated_on])
|
|
291
|
+
|
|
292
|
+
@did_cmd = true
|
|
293
|
+
end
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
if shift_args()
|
|
297
|
+
parse_iso_list_cmd()
|
|
298
|
+
end
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
def parse_iso_list_cmd()
|
|
302
|
+
return if !cmd?('list')
|
|
303
|
+
|
|
304
|
+
parser = OptionParser.new do |op|
|
|
305
|
+
op.banner = '<list> options:'
|
|
306
|
+
|
|
307
|
+
op.on('-c','--canada','List Canadian provinces and territories')
|
|
308
|
+
op.on('-u','--usa','List USA states')
|
|
309
|
+
op.on('-o','--country','List countries')
|
|
310
|
+
op.on('-l','--language','List languages')
|
|
311
|
+
op.on('-r','--region','List regions (i.e., continents, etc.)')
|
|
312
|
+
op.on('-s','--subregion','List subregions')
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
@parsers.push(parser)
|
|
316
|
+
parser.order!(@args,into: @options)
|
|
317
|
+
|
|
318
|
+
if do_cmd?()
|
|
319
|
+
if @options[:canada]
|
|
320
|
+
puts Iso.can_provs_terrs
|
|
321
|
+
@did_cmd = true
|
|
322
|
+
elsif @options[:usa]
|
|
323
|
+
puts Iso.usa_states
|
|
324
|
+
@did_cmd = true
|
|
325
|
+
elsif @options[:country]
|
|
326
|
+
puts Iso.countries
|
|
327
|
+
@did_cmd = true
|
|
328
|
+
elsif @options[:language]
|
|
329
|
+
puts Iso.languages
|
|
330
|
+
@did_cmd = true
|
|
331
|
+
elsif @options[:region]
|
|
332
|
+
puts Iso.regions
|
|
333
|
+
@did_cmd = true
|
|
334
|
+
elsif @options[:subregion]
|
|
335
|
+
puts Iso.subregions
|
|
336
|
+
@did_cmd = true
|
|
337
|
+
end
|
|
338
|
+
end
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
def gsub_updated_on(dirname,updated_on)
|
|
342
|
+
updated_on = Util.parse_datetime_s(updated_on) # Raise errors on bad format
|
|
343
|
+
updated_on = Util.format_datetime(updated_on)
|
|
344
|
+
|
|
345
|
+
Dir.glob(File.join(dirname,'*.yaml')) do |filepath|
|
|
346
|
+
lines = IO.readlines(filepath)
|
|
347
|
+
update_count = 0
|
|
348
|
+
|
|
349
|
+
lines.each_with_index do |line,i|
|
|
350
|
+
if line =~ /\A\s*updated\_.*on\:.*\Z/i
|
|
351
|
+
line = line.split(':')[0] << ": '#{updated_on}'"
|
|
352
|
+
lines[i] = line
|
|
353
|
+
update_count += 1
|
|
354
|
+
end
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
if !@options[:no_clobber]
|
|
358
|
+
File.open(filepath,'w') do |file|
|
|
359
|
+
file.puts lines
|
|
360
|
+
end
|
|
361
|
+
end
|
|
362
|
+
|
|
363
|
+
puts %Q^"#{filepath}" updated_on: #{update_count}^
|
|
364
|
+
end
|
|
365
|
+
end
|
|
366
|
+
|
|
367
|
+
def log_opts()
|
|
368
|
+
log.info("Using options#{@options}")
|
|
369
|
+
end
|
|
370
|
+
|
|
371
|
+
def cmd?(cmd)
|
|
372
|
+
return !@did_cmd && !@cmd.nil?() && @cmd.match?(/\A[[:space:]]*#{Regexp.escape(cmd)}[[:space:]]*\z/i)
|
|
373
|
+
end
|
|
374
|
+
|
|
375
|
+
def do_cmd?()
|
|
376
|
+
return !@options[:help] && !@options[:version]
|
|
377
|
+
end
|
|
378
|
+
end
|
|
379
|
+
end
|
|
380
|
+
|
|
381
|
+
if $0 == __FILE__
|
|
382
|
+
main = UncleKryon::Main.new(ARGV)
|
|
383
|
+
main.run()
|
|
384
|
+
end
|