admiral_stats_parser 0.1.2 → 0.1.3

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: e41abf13d204c287de809f223072607d73a3134d
4
- data.tar.gz: 7234707dd1222a7ca5c77c28fc261e0f5e8901ff
3
+ metadata.gz: 796696607ab5a39710315dc1ed6600d0c369c288
4
+ data.tar.gz: 9c4a7460c5b6d327fc7e40df0336d26c474d9e41
5
5
  SHA512:
6
- metadata.gz: b485d58af2f887ed3a67f0b651316711d3b749515dad3f52bd7f6121b6750fbcd1df83d15784ea3a738b254974d4496acdd48e81fe75086ecd5035fba7c19e15
7
- data.tar.gz: ac599af3dff180cb13c29a3a5a60efc55b473a08d26f1b5137499e5eea8349e0a7e8d95dbfede2c2251d7a833fbd63852ccc859be683511417cfe23fc19307de
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 メッセージの形式は、過去に一度変更されており、今後も変更される可能性があります。このツールでは、kancolle-arcade.net が返す JSON メッセージの形式のことを API version と呼びます。
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
 
@@ -24,6 +24,9 @@ class CharacterListInfo
24
24
  # 艦娘のステータス画像(横長の画像)のファイル名
25
25
  attr_accessor :status_img
26
26
 
27
+ # 星の数(1〜5)
28
+ attr_accessor :star_num
29
+
27
30
  # 累計経験値表
28
31
  EXP_TABLE = {
29
32
  92 => 584500,
@@ -3,16 +3,28 @@ require 'admiral_stats_parser/model/character_list_info'
3
3
 
4
4
  class CharacterListInfoParser
5
5
  MANDATORY_KEYS = {
6
- :book_no => Integer,
7
- :lv => Integer,
8
- :ship_type => String,
9
- :ship_sort_no => Integer,
10
- :remodel_lv => Integer,
11
- :ship_name => String,
12
- :status_img => String,
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)
@@ -1,3 +1,3 @@
1
1
  module AdmiralStatsParser
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -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 2
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
- t2 = Time.parse('2016-06-30T00:00:00+0900')
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, 2
29
- PersonalBasicInfoParser.parse(json, api_version)
30
- else
31
- raise 'unsupported API version'
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, 2
39
- AreaCaptureInfoParser.parse(json, api_version)
40
- else
41
- raise 'unsupported API version'
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, 2
49
- TcBookInfoParser.parse(json, api_version)
50
- else
51
- raise 'unsupported API version'
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
- EquipBookInfoParser.parse(json)
60
- else
61
- raise 'unsupported API version'
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
- when 1
69
- raise 'API version 1 does not support character list info'
70
- when 2
71
- CharacterListInfoParser.parse(json)
72
- else
73
- raise 'unsupported API version'
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
- when 1
81
- raise 'API version 1 does not support equip list info'
82
- when 2
83
- EquipListInfoParser.parse(json)
84
- else
85
- raise 'unsupported API version'
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.2
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-08-21 00:00:00.000000000 Z
11
+ date: 2016-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler