admiral_stats_parser 0.1.2 → 0.1.3
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 796696607ab5a39710315dc1ed6600d0c369c288
|
4
|
+
data.tar.gz: 9c4a7460c5b6d327fc7e40df0336d26c474d9e41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5c2a4c39242db212e3f008c5e3ac265127452d88d197fdd1644180d2da1aa00cb34d90060553720813769bd570e08eee3c6e7e9b0555237c8aa81b330fa19ba
|
7
|
+
data.tar.gz: a41747e0b954ccff156a99deb229c49a8db1c058d3e70a6b70a381fbf05b815ebd826dc1eb21e1a85834f364a0cc5f79257701b82cbf249528b71fd38c261fa0
|
data/README.md
CHANGED
@@ -42,25 +42,27 @@ AdmiralStatsParser.parse_equip_list_info(json, api_version)
|
|
42
42
|
|
43
43
|
## Specification
|
44
44
|
|
45
|
-
提督情報ページから返される JSON
|
45
|
+
提督情報ページから返される JSON メッセージの形式は、過去に何度か変更されており、今後も変更される可能性があります。このツールでは、kancolle-arcade.net が返す JSON メッセージの形式のことを API version と呼びます。
|
46
46
|
|
47
47
|
AdmiralStatsParser は、以下の API version をサポートしています。
|
48
48
|
|
49
49
|
| API version | 期間 |
|
50
50
|
|------------:|:-----|
|
51
51
|
| 1 | 2016-04-26 〜 2016-06-29 |
|
52
|
-
| 2 | 2016-06-30(REVISION 2 のリリース日)〜 |
|
52
|
+
| 2 | 2016-06-30(REVISION 2 のリリース日)〜 2016-09-14 |
|
53
|
+
| 3 | 2016-09-15 〜 |
|
53
54
|
|
54
55
|
各 API version でパースできる JSON の種類は以下の通りです。また、同じ情報でも、API version によって、含まれる情報量が異なる場合があります。その場合は Supported (1), Supported (2) のように記載して区別しています。
|
55
56
|
|
56
|
-
| 提督情報での表示 | URL | API version 1 | API version 2 |
|
57
|
-
|
58
|
-
| 基本情報 | Personal/basicInfo | Supported (1) | Supported (2) |
|
59
|
-
| 海域情報 | Area/captureInfo | Supported (1) | Supported (2) |
|
60
|
-
| 艦娘図鑑 | TcBook/info | Supported (1) | Supported (2) |
|
61
|
-
| 装備図鑑 | EquipBook/info | Supported | Supported |
|
62
|
-
| 艦娘一覧 | CharacterList/info | - | Supported
|
63
|
-
| 装備一覧 | EquipList/info | - | Supported |
|
57
|
+
| 提督情報での表示 | URL | API version 1 | API version 2 | API version 3 |
|
58
|
+
|:----------------|:----|:--------------|:--------------|:-------------|
|
59
|
+
| 基本情報 | Personal/basicInfo | Supported (1) | Supported (2) | Supported (2) |
|
60
|
+
| 海域情報 | Area/captureInfo | Supported (1) | Supported (2) | Supported (2) |
|
61
|
+
| 艦娘図鑑 | TcBook/info | Supported (1) | Supported (2) | Supported (2) |
|
62
|
+
| 装備図鑑 | EquipBook/info | Supported | Supported | Supported |
|
63
|
+
| 艦娘一覧 | CharacterList/info | - | Supported (1) | Supported (2) |
|
64
|
+
| 装備一覧 | EquipList/info | - | Supported | Supported |
|
65
|
+
| 任務一覧 | Quest/info | - | Unsupported | Unsupported |
|
64
66
|
|
65
67
|
## Development
|
66
68
|
|
@@ -3,16 +3,28 @@ require 'admiral_stats_parser/model/character_list_info'
|
|
3
3
|
|
4
4
|
class CharacterListInfoParser
|
5
5
|
MANDATORY_KEYS = {
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
2 => {
|
7
|
+
:book_no => Integer,
|
8
|
+
:lv => Integer,
|
9
|
+
:ship_type => String,
|
10
|
+
:ship_sort_no => Integer,
|
11
|
+
:remodel_lv => Integer,
|
12
|
+
:ship_name => String,
|
13
|
+
:status_img => String,
|
14
|
+
},
|
15
|
+
3 => {
|
16
|
+
:book_no => Integer,
|
17
|
+
:lv => Integer,
|
18
|
+
:ship_type => String,
|
19
|
+
:ship_sort_no => Integer,
|
20
|
+
:remodel_lv => Integer,
|
21
|
+
:ship_name => String,
|
22
|
+
:status_img => String,
|
23
|
+
:star_num => Integer,
|
24
|
+
}
|
13
25
|
}
|
14
26
|
|
15
|
-
def self.parse(json)
|
27
|
+
def self.parse(json, api_version)
|
16
28
|
items_array = JSON.parse(json)
|
17
29
|
|
18
30
|
unless items_array.is_a?(Array)
|
@@ -23,7 +35,7 @@ class CharacterListInfoParser
|
|
23
35
|
items_array.each do |items|
|
24
36
|
result = CharacterListInfo.new
|
25
37
|
|
26
|
-
MANDATORY_KEYS.each do |key, key_class|
|
38
|
+
MANDATORY_KEYS[api_version].each do |key, key_class|
|
27
39
|
# 必須のキーが含まれなければエラー
|
28
40
|
camel_case_key = key.to_s.split('_').inject([]){ |buffer,e| buffer.push(buffer.empty? ? e : e.capitalize) }.join
|
29
41
|
unless items.include?(camel_case_key)
|
data/lib/admiral_stats_parser.rb
CHANGED
@@ -10,79 +10,87 @@ require 'admiral_stats_parser/parser/equip_list_info_parser'
|
|
10
10
|
module AdmiralStatsParser
|
11
11
|
# 最新の API バージョンを返します。
|
12
12
|
def self.get_latest_api_version
|
13
|
-
return
|
13
|
+
return 3
|
14
14
|
end
|
15
15
|
|
16
16
|
# エクスポート時刻を元に、API バージョンを推測して返します。
|
17
17
|
def self.guess_api_version(exported_at)
|
18
18
|
# version 2 の開始日
|
19
|
-
|
19
|
+
return 1 if exported_at < Time.parse('2016-06-30T07:00:00+0900')
|
20
|
+
|
21
|
+
# version 3 の開始日
|
22
|
+
return 2 if exported_at < Time.parse('2016-09-15T07:00:00+0900')
|
20
23
|
|
21
|
-
return 1 if (exported_at < t2)
|
22
24
|
return self.get_latest_api_version
|
23
25
|
end
|
24
26
|
|
25
27
|
# 基本情報をパースします。
|
26
28
|
def self.parse_personal_basic_info(json, api_version)
|
27
29
|
case api_version
|
28
|
-
when 1
|
29
|
-
|
30
|
-
|
31
|
-
|
30
|
+
when 1
|
31
|
+
PersonalBasicInfoParser.parse(json, 1)
|
32
|
+
when 2, 3
|
33
|
+
PersonalBasicInfoParser.parse(json, 2)
|
34
|
+
else
|
35
|
+
raise 'unsupported API version'
|
32
36
|
end
|
33
37
|
end
|
34
38
|
|
35
39
|
# 海域情報をパースします。
|
36
40
|
def self.parse_area_capture_info(json, api_version)
|
37
41
|
case api_version
|
38
|
-
when 1
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
+
when 1
|
43
|
+
AreaCaptureInfoParser.parse(json, 1)
|
44
|
+
when 2, 3
|
45
|
+
AreaCaptureInfoParser.parse(json, 2)
|
46
|
+
else
|
47
|
+
raise 'unsupported API version'
|
42
48
|
end
|
43
49
|
end
|
44
50
|
|
45
51
|
# 艦娘図鑑をパースします。
|
46
52
|
def self.parse_tc_book_info(json, api_version)
|
47
53
|
case api_version
|
48
|
-
when 1
|
49
|
-
|
50
|
-
|
51
|
-
|
54
|
+
when 1
|
55
|
+
TcBookInfoParser.parse(json, 1)
|
56
|
+
when 2, 3
|
57
|
+
TcBookInfoParser.parse(json, 2)
|
58
|
+
else
|
59
|
+
raise 'unsupported API version'
|
52
60
|
end
|
53
61
|
end
|
54
62
|
|
55
63
|
# 装備図鑑をパースします。
|
56
64
|
def self.parse_equip_book_info(json, api_version)
|
57
65
|
case api_version
|
58
|
-
when 1, 2
|
59
|
-
|
60
|
-
|
61
|
-
|
66
|
+
when 1, 2, 3
|
67
|
+
EquipBookInfoParser.parse(json)
|
68
|
+
else
|
69
|
+
raise 'unsupported API version'
|
62
70
|
end
|
63
71
|
end
|
64
72
|
|
65
73
|
# 艦娘一覧をパースします。
|
66
74
|
def self.parse_character_list_info(json, api_version)
|
67
75
|
case api_version
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
76
|
+
when 1
|
77
|
+
raise 'API version 1 does not support character list info'
|
78
|
+
when 2, 3
|
79
|
+
CharacterListInfoParser.parse(json, api_version)
|
80
|
+
else
|
81
|
+
raise 'unsupported API version'
|
74
82
|
end
|
75
83
|
end
|
76
84
|
|
77
85
|
# 装備一覧をパースします。
|
78
86
|
def self.parse_equip_list_info(json, api_version)
|
79
87
|
case api_version
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
88
|
+
when 1
|
89
|
+
raise 'API version 1 does not support equip list info'
|
90
|
+
when 2, 3
|
91
|
+
EquipListInfoParser.parse(json)
|
92
|
+
else
|
93
|
+
raise 'unsupported API version'
|
86
94
|
end
|
87
95
|
end
|
88
96
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: admiral_stats_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masahiro Yoshizawa
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|