#author("2023-10-08T04:01:58+09:00","default:kanateko","kanateko")
#author("2024-02-01T21:05:21+09:00","default:kanateko","kanateko")
&tag(プラグイン,自作,追加,未公開);

#ref(steamapi.jpg,center,wrap,500x)

#contentsx

*SteamのAPIを利用して様々な情報を取得するプラグイン [#o32f44bd]
#infobox(plugin,except=ライセンス){{
name=steamapi
ver=1.1.7
ver=1.1.8
pukiwiki=1.5.4
update=2023-09-26
update=2024-02-01
}}


Valveの提供する [[Steam Web API>https://partner.steamgames.com/doc/webapi]] などを利用してゲームの概要やそのコミュニティの情報などを取得・表示することができるプラグイン。

v1.1.0時点でゲームの概要 (レビューやタグも含む) やニュース、実績といった情報を利用できる。取得した情報はサーバーにキャッシュしておき定期的に更新をチェックするので、情報を手動で更新する手間を省くことができる。

#clear

#box(label,label-style=full,box-color=blue,title=このプラグインでできること){{
-AppIDで指定したゲームの様々な情報を表示する。
--ゲーム概要
---対応言語、ユーザータグ (ジャンル) 、レビュースコアは個別にも呼び出し可能。
---Steamでセール中の場合価格表示に割引を反映させる。
---未発売の場合は "近日登場" のラベルを表示する。
---DLCがある場合は (その一部を) 表示する。
--ニュース
---サムネイル付きで最大10個まで表示できる。
--実績一覧
---秘密の実績も表示可能。
---秘密の実績の表示/非表示の切り替え機能あり。
---個別に実績の説明文を書き換えることもできる。
-一定時間ごとに更新をチェックする。
--更新間隔を変更したり強制的に更新させることもできる。
--最終更新の表示/非表示を切替可能。
}}


*ダウンロード[#nc904a0b]
//最新: [[GitHub>https://github.com/kanateko/pukiwiki-plugin]]

#box(caution,width=400px){{{
このプラグインは現在公開されていません。
}}}

|~日付|~バージョン|~備考|h
|CENTER:120|CENTER:60|590|c
|2024-02-01|1.1.7|#ul(実績の取得方法を変更)|
|2023-09-26|1.1.7|#ul(実績タイトルのオートリンクオプションを追加)|
|2022-07-10|1.1.6|#ul(実績のオートリンクオプションが有効な場合にキャッシュを作成して表示を高速化する機能を追加)|
|~|1.1.5|#ul(実績の説明文に含まれる既存のページ名をリンク化するオプションを追加)|
|2022-07-06|1.1.3|#ul(編集権限を無視して実績を編集できていた問題を修正)|
|2022-07-05|1.1.2|#ul(一部記号を含む実績のタイトルが上書き用タイトルと一致しないバグを修正,実績の上書き時にエディタを空にするとプレビューに元の説明文が表示されるように改善,実績のタイトルか説明文に"="を含む場合、上書きオプションのセパレータを"="2つ以上に変更できる機能を追加)|
|~|1.1.0|#ul(実績の個別編集機能を実装,ニュースの表示数に1-10の制限を追加)|
|2022-07-04|1.0.3|#ul(ゲーム概要の表示バグをいくつか修正)|
|~|1.0.2|#ul(ニュース取得を高速化 (3~5倍程度高速化))|
|~|1.0.1|#ul(エラーの内容を細分化,各機能でデータが取得できていないのにエラーが表示されなかった問題を修正)|
|2022-07-03|1.0.0|#ul(実績一覧の表示機能を追加)|
|2022-07-02|0.9.4|#ul(早期アクセス開始日の表示を調整)|
|~|0.9.3|#ul(前後に空白の入った引数に対応)|
|~|0.9.2|#ul(DLCリストの表示を修正)|
|~|0.9.1|#ul(DLCリストがうまく取得できていなかった不具合を修正)|
|~|0.9.0|#ul(ストアのクローラーとタグ、ゲーム概要と言語対応をそれぞれ分離,言語をAPIからではなくストアのクロール結果から取得するように変更,ストアのクロール時に年齢認証画面でスタックする問題を解消)|
|2022-07-01|0.8.1|#ul(概要表示に早期アクセス開始日オプションを追加)|
|~|0.8.0|#ul(初版作成 (ニュース、ゲーム概要、レビュー、タグ))|

//*セットアップ

//*プラグイン設定

*使用方法 [#z1692974]
 #steamapi(<タイプ>,<AppID>[,オプション]){{
 [オプション]
 [オプション]
 [オプション]
 ︙
 }}

AppIDはストアURLの `store.steampowered.com/app/******`  ← この数字の部分

オプションの指定はカッコ内に書いてもマルチラインで書いてもいいが、長くなりがちなものはマルチラインで書いたほうが見やすくなる。

**タイプ [#tb9754c7]
必ず最初に指定する。
***summary - 概要表示 [#we6a64fb]
指定したゲームの以下の情報を表示する。

#box(solid,box-color=black){{
-''名前''
--読み、ルビを追加可能 (後述) 。
-''発売日''
--早期アクセス開始日を追加可能 (後述) 。
--未発売のゲームの場合は "近日登場" のラベルが表示される。
-''開発元''
-''パブリッシャー''
-''価格''
--セール中は割引率と割引後の価格も表示される。
-''日本語対応状況''
-''ユーザータグ (ジャンル)''
-''レビュースコア''
--マウスオーバーで詳細な内訳が表示される。
-''DLC''
--DLCがない場合は項目自体が表示されない。
--最大5つのDLCが表示され、それ以上ある場合はストアへのリンクが表示される。
-''ストアリンク''
--その他ストアへのリンクを追加可能 (後述) 。
}}

#box(label,title=オプション,box-color=black){{
:ruby = < 任意の文字列 >|名前の下にカッコ書きで読みなどを追加する。
:ea = < Y 年 m 月 d 日 >|早期アクセスの開始日と正式リリースにを分けて表示する。
:tag = < 文字列 > &#124; < 文字列 > &#124; ...|タグを追加する。
:tagnum = < 数字 >''|初期状態で表示するタグの数を変更する。
:epic, ps, xbox, switch, android, ios = <URL>|他のストアへのリンクになったアイコンを表示する。
:< 任意の文字列 > = < 任意の文字列 >|独自の項目を追加する。右辺ではPukiWiki記法を使用可能。
}}

以下のtags, reviews, languageはsummaryの一部として表示される。
個別に呼び出せるようにはなっているが基本的に使うことはない。

***tags - ユーザータグ一覧 [#q32be863]
ユーザータグの一覧を表示する。
デフォルトでは最初の5個を表示し、残りは折りたたむ。

#box(label,title=オプション,box-color=black){{
:tag = < 文字列 > &#124; < 文字列 > &#124; ...|タグを追加する。
:num = < 数字 >|初期状態で表示するタグの数を変更する。
}}

***reviews - ユーザーレビュー [#c0d2883f]
直近30日と全期間のレビュー評価を表示する。
各評価にマウスオーバーするとレビューの総数、好評数、不評数の詳細が表示される。

***language - 対応言語 [#oe741b37]
対応言語の一覧、もしくは日本語の対応状況を表示する。

#box(label,title=オプション,box-color=black){{
:ja|日本語のみを表示する。
}}

***news - Steamニュース一覧 [#o2a7ced9]
Steamコミュニティで公開されたゲームのニュースを表示する。
見た目はSteamストアでの表示をある程度再現している。

#box(label,title=オプション,box-color=black){{
:num = < 1 ~ 10 >|ニュースの表示数を変更する。指定しない場合は自動的に2。
}}

***achievements - 実績一覧 [#s65f8eef]
そのゲームの実績一覧とそれぞれグローバル取得率を表示する。サーチやソート機能付き。
実績の言語はゲーム側で対応していればデフォルトで日本語になる。

秘密の実績はデフォルトで表示するようになっているが、実績名の横にある目のアイコン (&fa(s){eye};) で表示/非表示を切り替えられる。
またはリストの上にある同アイコンのスライダーを使えば一括で表示/非表示を切替可能。
初期状態で非表示にしたい場合は後述のオプションで指定する。

実績の説明文を書き換えたい場合は各実績の右上に表示される鉛筆アイコン (&fa(s){pencil};) から専用の編集画面を表示できる。

#fig(edit.jpg,center,cap=編集画面,width=500,light)

編集画面ではテキストエリアに入力された内容が下のプレビューにリアルタイムで反映される。
テキストエリアを空にした場合は元々の説明文が表示される。
テキストエリア内で改行した場合は保存時に`&amp;br;`に変換され、編集時に自動的に改行に変換される。

"変更を保存"を押すと下図のように変更内容がマルチライン部分に追記される。
この際、マルチライン内の実績名の並びが実際の表示の並びと違っている場合、自動的に実際の並びに合わせてソートしてから保存する。

#fig(saved.jpg,center,cap=実績を日本語に書き換えた際のもの,width=500,light)

通常の編集画面からマルチライン部分を編集すれば一度に複数の実績を編集できる。
実績名や説明文に "=" を含む場合は両者を繋ぐ "=" の数を2つ以上に増やす。

#box(label,title=オプション,box-color=black){{
:< 実績名 > = < 説明文 >|
該当する実績名の説明文を書き換える。

:autolink|
実績の説明文に含まれる既存のページ名をリンクに変換する。書き換えた説明文は対象外。
このオプションが有効な場合、通常の編集画面でプレビューせずにページの更新をすると、実績の表示が更新されないので注意。個別編集機能で更新した場合は問題なし。もしくは一度このオプションを外せば更新される。

:autolink-title|
実績名にオートリンクを適用する。

:refer = < Steam64ID >|
該当のゲームを所持している公開ユーザーのSteam64ID。特にエラーが表示されていなければ必要なし。
//:refer = < Steam64ID >|
//該当のゲームを所持している公開ユーザーのSteam64ID。特にエラーが表示されていなければ必要なし。
}}

**オプション (汎用) [#k70550b1]
全てのタイプで使用できるオプション。

#box(border){{
:passage or nopassage|経過時間の表示/非表示。summaryとnewsのみデフォルトで表示。
:< 数字 > h|更新のチェック間隔を変更する。0h を指定してプレビューすればキャッシュを強制的に更新できる。
}}
*使用例 [#i841292d]
サンプルを[[練習用Wiki>https://jpngamerswiki.com/_sandbox/?steamapi]]に置いておくので試してみたい方はそちらへ。

*追加予定 [#eee1d16a]
-要求スペック表とストアの詳細な説明文
--summaryで一緒に取ってきてるのでそのうち追加予定。
-プレイヤー数
--プレイ中の人数は公式のAPIで提供されているのでそのうち追加予定。

*備考 [#ze3f5a5c]
-自サイトの編集支援用に作成したもののため、独自の仕様が含まれていたりPHP8以上じゃないと動かないといった事情があるので今のところ公開予定は無い。

*コメント [#sa4ceac8]
#pcomment(reply)