@piyoraik/ffxiv-lodestone-character-lookup 1.0.0 → 1.0.2
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.
- package/README.md +61 -6
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
# @piyoraik/ffxiv-lodestone-character-lookup
|
|
2
2
|
|
|
3
|
-
FFXIV の Lodestone
|
|
3
|
+
FFXIV の Lodestone を使って、以下を行うための共通ライブラリです。
|
|
4
|
+
|
|
5
|
+
- `募集者: キャラクター名 @ サーバー名` をパースして検索パラメータを作る
|
|
6
|
+
- キャラクター検索の先頭ヒットから「キャラクターURL(/lodestone/character/.../)」を取得する
|
|
7
|
+
- キャラクターの「アチーブメント(カテゴリ4)」ページから、高難度(絶/零式)の達成状況を判定する
|
|
8
|
+
|
|
9
|
+
## 動作環境
|
|
10
|
+
|
|
11
|
+
- Node.js: `>= 22`(22/24想定)
|
|
12
|
+
- モジュール形式: CommonJS(TypeScript からは通常の `import { ... } from ...` で利用できます)
|
|
4
13
|
|
|
5
14
|
## インストール
|
|
6
15
|
|
|
@@ -8,7 +17,7 @@ FFXIV の Lodestone(キャラクター検索→キャラクターURL取得・
|
|
|
8
17
|
yarn add @piyoraik/ffxiv-lodestone-character-lookup
|
|
9
18
|
```
|
|
10
19
|
|
|
11
|
-
##
|
|
20
|
+
## 最短の使い方(募集者 → Lodestone URL → クリア判定)
|
|
12
21
|
|
|
13
22
|
```ts
|
|
14
23
|
import {
|
|
@@ -20,17 +29,63 @@ import {
|
|
|
20
29
|
parseUltimateClearsFromAchievementHtml
|
|
21
30
|
} from "@piyoraik/ffxiv-lodestone-character-lookup";
|
|
22
31
|
|
|
23
|
-
|
|
24
|
-
|
|
32
|
+
// 例: xivpf などの「募集者」表示に合わせた形式
|
|
33
|
+
const creator = parseCreator("Hoge Fuga @ World");
|
|
34
|
+
if (!creator) throw new Error("募集者の形式が不正です");
|
|
25
35
|
|
|
36
|
+
// 1) Lodestoneの検索URLを作る
|
|
26
37
|
const searchUrl = buildLodestoneSearchUrl(creator);
|
|
38
|
+
|
|
39
|
+
// 2) 検索の先頭ヒットからキャラクターURLを取る
|
|
27
40
|
const characterUrl = await fetchTopCharacterUrl(searchUrl);
|
|
28
|
-
if (!characterUrl) throw new Error("
|
|
41
|
+
if (!characterUrl) throw new Error("キャラクターが見つかりませんでした");
|
|
29
42
|
|
|
43
|
+
// 3) アチーブメントページ(カテゴリ4)のURLを作る
|
|
30
44
|
const achievementUrl = buildAchievementCategoryUrl(characterUrl);
|
|
31
|
-
if (!achievementUrl) throw new Error("
|
|
45
|
+
if (!achievementUrl) throw new Error("アチーブURLの生成に失敗しました");
|
|
32
46
|
|
|
47
|
+
// 4) HTMLを取得して達成状況を判定
|
|
33
48
|
const html = await fetchAchievementCategoryHtml(achievementUrl);
|
|
34
49
|
const result = parseUltimateClearsFromAchievementHtml(html);
|
|
35
50
|
console.log(result);
|
|
36
51
|
```
|
|
52
|
+
|
|
53
|
+
## 公開API(関数の挙動)
|
|
54
|
+
|
|
55
|
+
## API一覧(概要)
|
|
56
|
+
|
|
57
|
+
| 関数 | 返り値 | 用途 |
|
|
58
|
+
|---|---|---|
|
|
59
|
+
| `parseCreator(creator)` | `{ name, world } \| undefined` | `Name @ World` を分解 |
|
|
60
|
+
| `buildLodestoneSearchUrl(info)` | `string` | キャラクター検索URLを生成 |
|
|
61
|
+
| `fetchTopCharacterUrl(searchUrl)` | `Promise<string \| undefined>` | 検索結果の先頭ヒットのキャラURLを取得 |
|
|
62
|
+
| `buildAchievementCategoryUrl(characterUrl)` | `string \| undefined` | カテゴリ4のアチーブURLを生成 |
|
|
63
|
+
| `fetchAchievementCategoryHtml(url)` | `Promise<string>` | アチーブHTMLを取得 |
|
|
64
|
+
| `parseUltimateClearsFromAchievementHtml(html)` | `{ status, clears }` | 高難度(絶/零式)達成状況を抽出 |
|
|
65
|
+
| `getHighEndAchievements()` | `HighEndAchievementDefinition[]` | 同梱定義(正式名/略称/種別)を取得 |
|
|
66
|
+
| `getHighEndAchievementShortMap()` | `Map<string, string>` | `正式名 -> 略称` |
|
|
67
|
+
| `getHighEndAchievementGroupMap()` | `Map<string, "ultimate" \| "savage">` | `正式名 -> 種別` |
|
|
68
|
+
|
|
69
|
+
## 対応アチーブメント(高難度)
|
|
70
|
+
|
|
71
|
+
このライブラリが達成判定に対応しているアチーブメントの一覧です(`getHighEndAchievements()` の内容と同じ)。
|
|
72
|
+
|
|
73
|
+
| 種別 | 略称 | 正式名 |
|
|
74
|
+
|---|---|---|
|
|
75
|
+
| 絶 | 絶バハ | 絶バハムートを狩りし者 |
|
|
76
|
+
| 絶 | 絶テマ | 絶アルテマウェポンを破壊せし者 |
|
|
77
|
+
| 絶 | 絶アレキ | 絶アレキサンダーを破壊せし者 |
|
|
78
|
+
| 絶 | 絶竜詩 | 絶竜詩戦争を平定せし者 |
|
|
79
|
+
| 絶 | 絶オメガ | 絶オメガ検証戦を完遂せし者 |
|
|
80
|
+
| 絶 | 絶エデン | 絶もうひとつの未来を見届けし者 |
|
|
81
|
+
| 零式 | 【パンデモ】辺獄 | 万魔殿の辺獄を完全制覇せし者:ランク1 |
|
|
82
|
+
| 零式 | 【パンデモ】煉獄 | 万魔殿の煉獄を完全制覇せし者:ランク1 |
|
|
83
|
+
| 零式 | 【パンデモ】天獄 | 万魔殿の天獄を完全制覇せし者:ランク1 |
|
|
84
|
+
| 零式 | 【アルカディア】ライトヘビー | アルカディアのライトヘビー級を制覇せし者:ランク1 |
|
|
85
|
+
| 零式 | 【アルカディア】クルーザー | アルカディアのクルーザー級を完全制覇せし者:ランク1 |
|
|
86
|
+
| 零式 | 【アルカディア】ヘビー | アルカディアのヘビー級を完全制覇せし者:ランク1 |
|
|
87
|
+
|
|
88
|
+
## 注意
|
|
89
|
+
|
|
90
|
+
- Lodestone検索は「先頭ヒット」を採用します(同名が複数いる場合、意図と違うキャラに当たる可能性があります)
|
|
91
|
+
- HTML構造(class名など)が変わるとパースが壊れます(その場合はバージョン更新で追随します)
|
package/package.json
CHANGED