### PlayStation Title Info Checker v1.5.2 (20210526) by kood (@kood_infothief) ###

http://kood.info/pstic/
http://kood.info/pstic/changelog.html
[PS1/PS2/PS3/PS4/PS5/PSP/PSVITA] コンテンツの [タイトルID/コンテンツID/PSストアの製品ページのURL] から知る事の出来る情報を表示します。
タイトルIDは以下の形式を認識するようにしています。
[XXXXYYYYY形式、XXXX-YYYYY形式、XXXXYYYYY_YY形式、XXXX_YYY.YY形式]
コンテンツIDは以下の形式を認識するようにしています。
[(アルファベット2文字)(数字4文字)-(XXXXYYYYY形式のタイトルID)_(英数字2文字)-(英数字16文字)]
(例:JP0761-PCSG00407_00-DUNTRA2VTRLATSOM)
コンテンツIDを入力するとそこからタイトルIDが、URLを入力するとそこからプロダクトID(コンテンツIDと同じ形式)とタイトルIDが抜き出されそれらを使用する処理が行われます。

### チェック (※各チェックで取得された情報は後に続くチェックで使用される事があります) ###

  • 識別
  • URLの導出/スクレイピング
  • その他
  • ### URLのパラメータ ###

    以下のパラメータを使用可能です。複数のパラメータを使用する場合は&で繋げてください。
    ※「PlayStation Title Info Checker」部分をダブルクリックすると、その時の状態のパラメータを付与したURLがコンソールに出力&クリップボードにコピーされます。
    • id : [タイトルID/コンテンツID/PSストアの製品ページのURL]の何れか
    • ps5bc : nでPS5BC Checkを無効に(チェックを解除)
    • tmdb : nでTmdb Checkを無効に(チェックを解除)
    • update: nでUpdate Checkを無効に(チェックを解除)
    • store : nでChihiro Check/Store Checkを無効に(チェックを解除)
    • store : セレクトボックスの値を指定(パラメータによる指定無しでdefault)
    • page : yでStore Checkを有効に(セレクトボックスを"Page"に)
    • official : nでOfficial Checkを無効に(チェック解除)、exでセレクトボックスを"+ PS3/PSP/PSVita"に
    • redump : nでRedump Checkを無効に(チェック解除)
    • psxdc : nでPSXDatacenter Checkを無効に(チェック解除)
    • manual : [psp/ps3/vita/ps4]の何れかを指定でTmdbとUpdateのURLの導出だけを行うManual Modeに
    例)
    • /?id=CUSA06027&store=us/en
    • /?id=NPJB00015&update=n&store=n
    • /?id=JP0005-BLJM61239_00-ODINSPHERELEPA00&store=n
    • /?id=JP0761-PCSG00407_00-DUNTRA2VTRLATSOM&official=ex
    • /?id=https://store.playstation.com/ja-jp/product/JP0177-PPSA01852_00-JUDGEEYES0000000
    • /?id=CUSA00001&manual=ps4

    ### Resetボタン ###

    一度チェックを実行するとResetボタンが表示されます。
    Resetボタンはグローバル変数のリセットとテキストボックス/表示のクリアを行います。
    チェックボックスにチェックを入れる際、変数に格納されている内容によってはそのままそのチェックが実行されるため、それを避けたい場合は押してください。 通常は押さなくても構いません。テキストボックスに新たなタイトルID/コンテンツID/URLを入力した場合も変数のリセットと表示のクリアが行われます。

    ### Tid Cid Check ###

    PS3/PSP/PSVitaのタイトルIDとコンテンツIDを対応付けたjsonからコンテンツIDを取得します。
    コンテンツIDが必要な場合に実行されます。
    (全てのタイトルIDとコンテンツIDが登録されているわけではありません)
    jsonはNPSのtsvからタイトルIDとコンテンツIDとタイトル名を抽出した物です。
    ps3_psp_psv_tid_cid.json
    tid_cid.phpを使用してjsonから特定のタイトルIDの情報を取得する事が可能です。
    例:tid_cid.php?tid=PCSG00338

    ### OfficialPage/GameFAQs Check ###

    アジア圏で採用されているPS4/PSVitaの物理メディアのタイトルIDを用いて、playstation.comのソフトウェアカタログやGameFAQsのリリース情報ページを探し、そのページから他のチェックに必要なタイトルID(PS4の場合はCUSA、PSVitaの場合はPCSx)を探すと同時に、他の情報も取得/表示します。
    まずソフトウェアカタログのURLを作成し、それが404であればGoogle検索で目的のページを探します。
    PS4/PSVitaの物理メディアのタイトルIDを検出した場合は必ずこのチェックが実行されます。
    検索によってソフトウェアカタログとGameFAQsのページの両方が見つかった場合、前者が優先され、目的であるタイトルIDが見つからなかった場合にはGameFAQsからタイトルIDを探すようにしています。目的であるタイトルIDが見つからなかった場合、他のチェックは出来ないのでそこで処理は終了です。
    ※ソフトウェアカタログ関連の処理はリージョンが日本だと判定された場合のみ実行されます。
    ※単純なスクレイピングなのでGoogleからは429エラーが返って来る可能性が割と高いです。
    ※Google検索で何らかのエラーが発生した場合はYahoo検索を行います。
    取得/表示する情報(OfficialPage)
    • タイトル
    • タイトルID
    • プロダクトID
    • ゲームカバー(ダイアログ)
    • 発売日
    • ジャンル
    • パブリッシャー
    • JAN
    • レーティング
    • タイトル紹介(ダイアログ)
    • 動画・画像(ダイアログ)
    • セーブ先(PSVitaタイトルの場合のみ)
    • プレイヤー人数
    取得/表示する情報(GameFAQs)
    • タイトル
    • タイトルID
    • 発売日
    • パブリッシャー
    • JAN
    • レーティング

    ### OfficialPage Check ###

    PS1/PS2/PS3/PSP/PSVitaのタイトルID/コンテンツIDでソフトウェアカタログのURLを作成し、そこから情報を取得/表示します。取得する情報はOfficial/GameFAQs Checkの場合と同じです。
    このチェックは後述するChihiro CheckとTumbler Searchの後に実行されます。
    仮にそれらに失敗し、このチェックでプロダクトIDやTumbler Searchに必要な新しいタイトル名が見つかった場合、再度Chihiro CheckやTumbler Searchが実行されます。
    Official(JP)のチェックボックスにチェックが入っている場合のみ実行されます。また、リージョンが日本だと判定された場合のみ実行されます。デフォルトでPS3/PSP/PSVitaを対象外にしているのは、ソフトウェアカタログの情報表示に需要があるのかどうかが分からないためです。 PS3/PSP/PSVitaタイトルのソフトウェアカタログを見たい方やChihiro Check/Tumbler Searchの成功率を上げたい方はセレクトボックスを変更してください。
    PS1/PS2タイトルの場合、ソフトウェアカタログにアーカイブスの案内があればプロダクトIDが取得出来るので、PS1/PS2のタイトルIDからアーカイブスのChihiroのjsonに到達出来る可能性があります。その処理が嫌な場合はChihiroのチェックボックスのチェックを外してください。

    ### PS5BC Check ###

    PS4のタイトルIDから、PS5との互換性情報を取得/表示します。
    2020年10月より公開された新PS StoreのAPIは、ゲームライブラリでPS4タイトルの互換性情報をjsonで返します。ただChekerを新APIに対応させるのは面倒なため、このチェックではandshrew氏のリポジトリから情報を取得します。andshrew氏のリポジトリでは互換性情報とTmdbから取得可能な一部情報がまとめられたjsonが公開されています。
    https://github.com/andshrew/supreme-enigma
    https://andshrew.github.io/supreme-enigma/
    Checkerで表示する情報はタイトルと互換性情報のみです。互換性情報は以下の4種です。
    • COMPATIBLE
      このゲームをPS5でプレイするには、システムソフトウェアを最新バージョンにアップデートしてください。このゲームはPS5でプレイできますが、PS4で利用できる機能の一部はPS5では利用できない場合があります。詳細については PlayStation.com/bc を参照してください。
      (PS Storeより引用)
    • BOOTABLE
      このゲームをPS5でプレイすると、エラーが起きたり、予期しない動作が生じたり、PS4で利用できる機能の一部がPS5では利用できない可能性があります。このゲームをPS5でプレイするにはシステムソフトウェアを最新バージョンに更新してください。詳細については PlayStation.com/bc を参照してください。
      (PS Storeより引用)
    • NOT_COMPATIBLE
      PS4でのみプレイできます
      (PS Storeより引用)
    • N/A
      (APIで情報が取得出来ないタイトル。主にベータ版や体験版)

    ### Tmdb Check ###

    PS1/PS2/PS3/PS4のタイトルIDから、ゲームのメタデータを記したTmdbのxml(PS1/PS2/PS3)/json(PS4)のURLを導出し、そこから情報を取得/表示します。 Tmdbのチェックボックスにチェックが入っている場合のみ実行されます。PS1/PS2タイトルではタイトルIDがSLUSの場合のみ実行されます。(PS3用にTmdbが用意されているのだと思います)。全てのゲームに対してTmdbのxml/jsonが存在するわけでは無いようです。
    ※データが存在しない場合には "404" と表示されます。
    URL例) 取得/表示する情報 (PS1/PS2/PS3) 取得/表示する情報 (PS4)

    ### Update Check ###

    PS3/PS4/PS5/PSP/PSVitaのタイトルIDから、ゲームの更新データの情報を記したxmlのURLを導出し、そこから情報を取得/表示します。Updateのチェックボックスにチェックが入っている場合のみ実行されます。
    ※PS5のxmlのURLはCheckerによる導出ではなく、以下のTSVを参照しています。
     https://raw.githubusercontent.com/1jtp8sobiu/ps5-pkg/master/PS5_XML.tsv
    ※データが存在しない場合には "404" と表示されます。
    URL例) 取得/表示する情報 (PSP/PS3) 取得/表示する情報 (PSVita) 取得/表示する情報 (PS4) 取得/表示する情報 (PS5)

    ### Chihiro Check ###

    2020年10月以前の旧PS Storeが製品情報のjsonを得るために使用していたchihiro-apiのURLを作成し、そこから情報を取得/一部を表示します。 PS Storeのチェックボックスにチェックが入っている場合かつセレクトボックスが"Chihiro"の場合に実行されます。
    ※データが存在しない場合には "404" と表示されます。
    ※PS5のタイトルID/コンテンツIDでも実行できますが、jsonを取得出来ないIDも存在します。
    URL例) 私が把握している製品情報のjsonのURLのフォーマットは以下の6種です。
    プロダクトIDはコンテンツIDと同じ形式のIDです。コンテンツIDと同じ事が多いですが、バンドル製品等ではコンテンツ自体のIDとは異なるIDが割り当てられている事があります。

    CheckerではcontainerとtitlecontainerのURLの作成を採用しています。
    titlecontainerはPS4タイトルで有効で、異なるリージョンのjson取得にも対応しているようです。
    CUSA06027(日本版MHW)を例にすると、国コード/言語コードがjp/jaだとCUSA06027のjsonが取得出来、us/enだと北米版MHWであるCUSA07713のjsonが取得出来ます。
    (resolveでも同様にPS4のタイトルIDから異なるリージョンのjsonの得が可能です)

    CheckerではDLCやテーマのjson取得も考慮し、titlecontainerで済むPS4のゲーム本編(PS4のタイトルID入力)以外はコンテンツIDを用いてcontainerのURLを作成するようにしています。
    containerでjsonを取得する場合、コンテンツIDを使用すると製品情報が取得出来、タイトルID使用すると製品情報そのものというよりもDLC等を含めた検索結果のようなjsonが取得出来ます。
    containerのURLを作成する場合、Checkerでは基本的にはコンテンツIDを使用します。
    PS5のタイトルIDが入力された場合と、後述するTumbler SearchでプロダクトIDが見つからなかった場合にはタイトルIDを用いたcontainerのURLを作成します。

    PS4/PS5のタイトルID入力時以外は、Chihiro Checkよりも前のチェックで取得したコンテンツIDを用いてURLを作成し、情報の取得を試みます。 コンテンツIDが取得できていない場合、他のチェックで取得したタイトル名を用いてPS StoreのAPIであるValkyrieの検索機能tumbler-searchのURLを作成し、そこからプロダクトIDを探します。(tumbler-searchのjsonからコンテンツIDを探す処理をCheckerではTumbler Searchと表記しています)
    それでもコンテンツID/プロダクトIDが見つからなかった場合は、タイトルIDを用いてcontainerのURLを作成し、そこからプロダクトIDを探します。

    PS5のタイトルIDが入力された場合は、タイトルIDを用いてcontainerのURLを作成し、そこからゲーム本編の情報を出力し(複数のエディションがある場合は全て出力)、ゲーム本編以外の情報を"Other Products"というダイアログにし、その後jsonから見つかったプロダクトIDでChihiro Checkを行います。

    国コードと言語コードに関しては、コードのセレクトボックスが"default"の場合、6通りの国コードと言語コードの組み合わせから、他のチェックで判別したリージョン情報をもとに決定します。("jp/ja","us/en","gb/en","kr/ko","hk/zh","hk/en")
    リージョンが判別出来ていない場合、ブラウザの言語設定が日本語であればリージョンをJapanと見做し、言語設定が日本語以外ならリージョンをUSと見做します。
    セレクトボックスが"default"かつPS StoreのURLを入力してチェックを開始した場合は、URL中の国コードと言語コードを使用するようにしています。
    国コードと言語コードの組み合わせは多数存在するため、PS StoreのURLを入力してチェックを開始しない限り、データが存在しない無効なURLが作成される可能性があります。その事と、別リージョンのjsonを取得したい場合を考慮し、セレクトボックスで国コードと言語コードを選択出来るようにしています。
    セレクトボックスで"default"以外を選択すると、選択した国コードと言語コードを用いたURLが作成されます。

    取得/表示する情報(コンテンツID使用時) 取得/表示する情報(タイトルID使用時)
    Eligibilitiesは、おそらく、所持している場合は購入可能/不可になる製品の情報が格納された配列です。おそらく、operatorがtrueの製品を所持していると購入可能となり、falseの製品を所持していると購入不可となります。CheckerではIDとoperatorの情報を表示します。他の情報は役割が不明なので表示するようにはしていません。IDがコンテンツIDの形式の場合は、クリックするとそのIDでChihiro Checkを実行出来るようにしています。
    Entitlementsは、おそらく、購入する事で実際に得られる製品の情報が格納された配列です。通常は1つで、バンドル製品の場合に複数の製品の情報が格納されています。Checkerでは複数件登録されている場合に表示します。(タイトル、ID、音声言語、字幕言語、サイズ)
    Discount/Rewardは、セール/Plus限定価格/EAAccess限定価格、の情報が存在する場合に表示します。
    サイズ、Eligibilities、Entitlements、Discount/Rewardはdefault_skuという製品情報のオブジェクトから取得しています。default_skuの他にskusという製品情報の配列が存在し、default_skuの内容を含め複数件登録されている場合があります。通常はdefault_skuと同内容の物のみですが、私が把握している限りではdefault_skuのoperatorがfalseの場合に購入不可ではなく製品内容を変更したい場合に複数件登録されています。
    (バレットガールズ2のDLCでのみ確認。バレットガールズ2のDLCは、バレットガールズの同名のDLCを所持している場合に無料になる(それをoperatorで判定している?))
    複数件登録されている場合、CheckerではNon default skuとして表示します。
    (ID、価格、Eligibilities、Entitlements、Discount/Reward)

    テスト不足ですが、PS VideoのプロダクトIDを用いたChihiro Checkにも対応しています。
    取得/表示する情報 (PS Video)

    ### Tumbler Search ###

    Chihiro Checkで有効なURLが作成されなかった場合に、PS StoreのAPIであるValkyrieの検索機能tumbler-searchのURLを作成し、プロダクトIDを探します。URLの作成では他のチェックで取得したタイトル名を使用します。(検索結果を増やすため、検索結果を減らす可能性がある文字以降を取り除いた文字列でURLを作成します)
    (検索結果から無駄を省くため、"platform=vita" のようにして検索結果を対象のハードに絞ります)
    tumbler-searchのjsonから、以下のいずれかに該当する製品のプロダクトIDを探します。
    • タイトルIDが一致
    • タイトル名が一致(®や™は無い物として扱います)
    • 関連製品のプロダクトID中のタイトルIDが一致
    • プロダクトIDの末尾16文字が一致
    コンテンツID/プロダクトIDの末尾16文字はゲームの開発者が自由に設定可能な文字列です。
    そのため、全く別の製品と一致してしまう可能性があります。
    Tumbler SearchでプロダクトIDが見つからなかった場合は、タイトルIDを用いてcontainerのURLを作成し、そこからプロダクトIDを探します。

    ### Store Check ###

    2020年10月より公開された新PS Storeから情報を取得し表示します。
    コンテンツID/プロダクトIDが必要となります。(新PS StoreのAPIはタイトルIDをサポートしていない?)
    PS Storeのチェックボックスにチェックが入っている場合かつセレクトボックスが"Page"の場合に実行されます。
    (名称をPageとしている理由は、やっている事がhtmlのスクレイピングのため。それについては後述)
    PSVideoを除くChihiro Checkが可能なIDで実行出来るようにしています。
    国コードと言語コードに関しては、Chihiro Check同様にセレクトボックスで指定可能です。

    取得/表示する情報
    • タイトル
    • 製品ページのリンク
    • パブリッシャー
    • 発売日
    • プラットフォーム
    • コンテンツの種別
    • 価格
    • レーティング
    • ジャンル
    • 製品の説明文
    • 各エディションの概要
    • 製品の動画/画像
    • 全エディションの動画/画像
    • Compatibility Notice

    新APIの仕様がChecker向きではないと判断し、製品ページのhtmlから新APIと同等のjsonを抽出しそれを扱うようにしています。 jsonの抽出プログラムはproduct.phpとして公開しています。
    使用するパラメータは、codeがPS StoreのURL中にもある[言語-国コード]、cidがコンテンツIDです。
    product.php?code=ja-jp&cid=JP9000-PPSA01339_00-DEMONSSOULS00000
    パラメータが不正な場合はエラー1かエラー3が表示されます。
    htmlの取得に問題があった場合はエラー4かエラー5が表示されます。

    ### Redump Check ###

    PS1/PS2/PSPのタイトルIDをRedumpの検索機能に投げ、Redumpから情報を取得/表示します。
    Redumpのチェックボックスにチェックが入っている場合のみ実行されます。
    基本的に各タイトルIDに対するRedumpのページは1つのみですが、同じタイトルIDでもバグ修正等によってハッシュ等が異なるゲームが存在し、そのようなゲームは同じタイトルIDであってもRedumpではページが分けられています。 Redumpの検索機能にタイトルIDを投げると、そのタイトルIDのページが1つのみの場合は直接そのページが返されますが、複数存在する場合、ページ選択が可能な検索結果ページが返されます。後者の場合、Checkerでは検索結果ページから各ゲームページのURLを取得し、その後1つ目のURLの情報を取得/表示します。2つ目以降のURLの使用に関しては、リンク横の矢印アイコンで切り替えられるようにしています。
    (同じタイトルIDのページが複数存在する例:SLPS00025, SLUS20090)
    取得/表示する情報
    • Title
    • Media
    • Region
    • Languages
    • Serial
    • EXE date
    • Version
    • Edition
    • Layerbreak
    • Number of tracks
    • Write offset
    • Barcode
    • Internal Serial
    • Size
    • CRC-32
    • MD5
    • SHA-1
    • Rings

    ### PSXDatacenter Check ###

    PS1/PS2のタイトルIDからPSXDatacenterのURLを探し、PSXDatacenterから情報を取得/表示します。
    URLはCheckerが持つ ps1_ps2_psxdatacenter.json から探します。
    PSXDatacenterのチェックボックスにチェックが入っている場合のみ実行されます。
    取得/表示する情報
    • Title
    • Serial
    • Region
    • Developer
    • Publisher
    • Release Date
    • Game Cover(ダイアログ)
    • Disc Information(ダイアログ)
    • Description(ダイアログ)
    • Game Features(ダイアログ)
    • Screenshots(ダイアログ)
    • Emulation Compatibility(ダイアログ)
    • Game Controls(ダイアログ)
    • Game Cheats(ダイアログ)
    • High Resolution Covers(ダイアログ)
    • Other Regions Released(ダイアログ)

    ### Download ###

    ご自身のWebサーバ環境で使用したい場合は以下からダウンロードしてください。
    PlayStationTitleInfoChecker v1.5.2.zip
    スクレイピングに使用するscraper.phpとredump.phpではリファラーの判定を行っています。
    "http://localhost/" 以外で使用する場合は、11行目のコメント(//)を外してから使用してください。

    ### Credits ###