CheapCharts API スキル
iTunes(Apple TV)、Amazon Prime Video、Vudu、Google Playのデジタル映画やテレビ番組向けの無料公開API価格トラッカー。認証不要、レート制限なし。並列呼び出しも安全です。
deals.pyスクリプトは8つの同時DetailDataワーカーを使用しています。
リポジトリ: https://github.com/tracerman/cheapcharts-skill
API ベースURL: https://buster.cheapcharts.de/v1/gptapi/
全期間最低価格(ATL)確認: https://buster.cheapcharts.de/v1/DetailData.php(非公式内部エンドポイント - 落とし穴 #17 参照)
デフォルトワークフロー(標準パターン)
ユーザーがお得情報、値下がり、価格、「今何が安いか」などについて質問した場合、以下のフローに従ってください。
- ストアを決定する。 デフォルトは
itunes(米国)、または複数ストアの場合はitunes,amazon,vudu,googlePlayを使用します。 - アイテムタイプを決定する。 映画は
buymovies、テレビはseasons、Searchのみの場合はallを使用します。 sort=latestPricechangeでお得情報を取得する 「最新」/「本日の値下がり」/「変更があったもの」の質問に使用します。「ベストなお得情報」にはsort=greatestSavings、「最新リリース」にはsort=releaseDateを使用します。- 「今日」の主張をDetailDataで検証する 各候補について
priceHdLastChangeDate(またはpriceSdLastChangeDate)を確認します。最初にレスポンスのstatusフィールドを常にチェックしてください -status=errorは、そうでなければ呼び出しが静かに失敗していることを意味します(落とし穴 #15 参照)。 - 偽の値下がりを除外する(
priceBefore - price <= $1)およびreleaseDateでソートする際のバンドルプレースホルダー日付を除外します。 - ATLフラグでエンリッチする(DetailDataの
priceHdIsLowest/priceSdIsLowest)。すべてのレポートで各値下がりが過去最低額かどうかを表示できるようにします。CheapChartsはアイテムごとに1回追加の呼び出しを行います。標準レポートテンプレートについては「プレゼンテーションガイドライン」セクションを参照してください。
Pythonによる検証を含む完全な「本日の値下がり」レシピは「ワークフローレシピ」セクションにあります。
使用するケース
- ユーザーがデジタルストアの映画/テレビ番組の価格について質問する場合
- ユーザーがデジタル映画のお得情報や割引を見つけたい場合
- ユーザーがチャート(人気/トレンド)を閲覧したい場合
- ユーザーがジャンル別のおすすめを希望する場合
- ユーザーがストア間(iTunes、Amazon、Vudu、Google Play)の価格を比較したい場合
- ユーザーが価格履歴や過去最低価格を確認したい場合
- ユーザーがCheapChartsを直接言及した場合
使用しないケース: 物理メディア(Blu-ray/DVD)、ストリーミングサブスクリプションカタログ(Netflix/Disney+)、映画レビュー/批評(代わりにウェブ検索を使用)。
クイック決定ガイド
| ユーザーの発言 | 使用するエンドポイント | 理由 |
|---|---|---|
| 「最新のお得情報」/「本日の値下がり」/「変更があったもの」 | Deals + DetailData | デフォルトワークフロー: sort=latestPricechange で取得後、各アイテムの priceHdLastChangeDate が今日と一致するか検証(レシピ「今日の値下がり」参照) |
| 「$X以下のお得情報を探して」 | Deals | maxPrice でフィルター + sort=greatestSavings |
| 「評価の高いお得情報」/「批評家絶賛の$X以下」 | Deals | imdbRating + maxPrice でフィルター(両方サーバーサイドフィルター、レシピ参照) |
| 「4K / Dolby Vision / Atmos 映画」 | Deals + クライアントフィルター | has4K=1 サーバーフィルターは動作しません(落とし穴 #16) - 取得後にクライアントサイドでフィルター |
| 「セール中の最新リリース」 | Deals | sort=releaseDate + バンドルプレースホルダーフィルター(落とし穴 #12 参照) |
| 「今人気のもの」/「売れているもの」 | Charts または Topseller | 単一ストアは Charts、クロスストアは Topseller |
| 「[タイトル]はいくら?」 | Search 次に Prices | Search で imdbId を取得し、Prices で複数ストアの価格を確認(落とし穴 #19: iTunes = Apple TV) |
| 「ベストなコンプリートシリーズのお得情報」 | Deals (seasons) | クライアントサイドで isBundle=1 をフィルタリング(レシピ) |
| 「[ジャンル]の映画をおすすめして」 | Recommendations | 特定のジャンル + imdbRating を指定(落とし穴 #18: ジャンルなしだとチャートデータを返す) |
| 「最も売れているものは?」 | Topseller | クロスストアのトップセラー |
| 「[タイトル]を検索」 | Search | タイトルベースの検索、メタデータを返す |
| 「[タイトル]は過去最低ですか?」/「ATLのお得情報」/「過去最低価格」 | Deals + DetailData | DetailData は priceHdIsLowest / priceSdIsLowest フラグを公開 - priceHdEvolution を解析する必要はありません(レシピ「全期間最低価格(ATL)のお得情報」参照)。過去の実際の最低金額や以前のATLの変更日が必要な場合のみ priceHdEvolution を使用。 |
| 「セールが終了したばかりのものは?」/「次の値下がりターゲット」 | 候補セットに対する DetailData | priceBefore < price は、タイトルの直近の変更が値上げであったことを意味します - セールが終了したばかりです。これらは近い将来値下がりする可能性が最も高いものであり、静かに除外せずにアクティブなお得情報と一緒に報告する必要があります。落とし穴 #31 参照。 |
API エンドポイント
共通パラメータ: Charts、Deals、Prices、Recommendations は共通パラメータ(
action、store、country、itemType、imdbRating、rottenTomatoesRating)を共有します。Search と Topseller は独自のパラメータセットを持ちます(以下の各セクションを参照)。
1. Search - Search.php
タイトルでアイテムを検索します。タイトルしかなく、IMDb IDが必要な場合は、最初にこれを使用します。
必須: action=search、query=<title>(または searchTerm=<title> - エイリアス。ベンダーの llms.txt による)
オプション: store=itunes(デフォルト)、country=us(デフォルト)、itemType=all(デフォルト)、limit=20(デフォルト20、最大20)、offset=0(制限を超えた結果のページングオフセット)
(RECIPES.md を参照)
フラットリストを返します: {"status":"success","results":[...items...]}。各アイテムには imdbId(利用可能な場合)、mediaType、itemType、priceFollowUpItemType、store、country、cheapChartsProductPageUrl、title、artist、releaseDate、releaseYear、currency、price、currentPrice、has4K、hdrFormat、imdbRating、rottenTomatoesRating が含まれます(詳細は共通アイテムフィールド表を参照)。
2. Charts - Charts.php
映画またはテレビシーズンの現在のチャートランキング。
必須: action=getCharts、store、country、itemType(buymovies または seasons)
オプション: genre=All、quality=hd4k、limit、imdbRating(最小)、rottenTomatoesRating(最小)、releaseYear(例: 2025-2025)
(RECIPES.md を参照)
返却: {"status":"success","results":{"buymovies":[...]}}。アイテムには rank フィールドが含まれます。
3. Deals - Deals.php
現在のお得情報と値下がり。お買い得品探しに最適。
必須: action=getDeals、store、country、itemType(buymovies または seasons)
オプション: genre=All、quality=hd4k、sort=latestPricechange、maxPrice、releaseYear(形式: 2020-2025 - 単一年も 2026-2026 のように動作します。デフォルト: 全年代)、limit、imdbRating(最小レーティング0-10、デフォルト0 = フィルターなし、例: imdbRating=7)、rottenTomatoesRating(最小スコア0-100、デフォルト0 = フィルターなし、例: rottenTomatoesRating=80)、has4K=1(機能しません - 無視されます。代わりにクライアントサイドでフィルタリング)
ソートオプション: latestPricechange(デフォルト)、price、greatestSavings、greatestPercentageSavings、popularity、alphabetical、releaseDate(昇順のみ - 落とし穴 #11 参照)
日付フィルター: releaseYear=YYYY-YYYY は単一年(2026-2026)と範囲(2024-2026)の両方を受け入れます。Deals と Charts エンドポイントで動作します。Recommendations、Prices、Search ではサポートされていません。
(RECIPES.md を参照)
返却: {"status":"success","results":{"buymovies":[...]}}。アイテムには price、priceBefore、imdbRating、rottenTomatoesRating が含まれます。
4. Prices - Prices.php
IMDb IDで特定のタイトルの現在の価格を検索します。
必須: action=getPrices、store、country、itemType=buymovies、imdbIDs(注意: llms.txtの共通パラメータは Prices に対して seasons を有効としていますが、Prices固有のパラメータテーブルと経験的テストでは buymovies のみが動作することが確認されています - 落とし穴 #7 参照)(カンマ区切り、例: tt0468569,tt2911666)
(RECIPES.md を参照)
返却: {"status":"success","results":{"buymovies":[...]}}。Deals と同じアイテム構造です。
5. Recommendations - Recommendations.php
厳選されたおすすめ。ジャンルと品質でフィルタリング可能。
必須: action=getRecommendations、store、country、itemType(buymovies または seasons)
オプション: genre=All、quality=hd4k、limit、imdbRating、rottenTomatoesRating
注意: llms.txt はここで imdbRating/rottenTomatoesRating をサポートしているとしていますが、経験的テストでは Recommendations ではこれらは静かに無視されます(落とし穴 #23)。代わりに sort=greatestSavings + レーティングフィルターで Deals を使用してください。
(RECIPES.md を参照)
返却: {"status":"success","results":{"buymovies":[...]}}。アイテムには description フィールドが含まれる場合があります。
6. Topseller - Topseller.php
複数ストアにわたるトップセラー。itemType、imdbRating、rottenTomatoesRating は不要です(他のエンドポイントとは異なります)。
必須: action=getTopsellerForStartpage、country、store(カンマ区切り、例: itunes,amazon,vudu,googlePlay)
オプション: maxItemCount=5(デフォルト5、ストアおよびカテゴリごと)
(RECIPES.md を参照)
返却: {"status":"success","results":{"itunes":{"movies":[...],"seasons":[...]},"amazon":{...}}}。ストアごと、次に映画/シーズンでグループ化。フィールドの利用可能性はストアによって異なります - has4K、hasAtmos、hdrFormat、isMovieBundle は iTunes アイテムにのみ表示されます(落とし穴 #3 参照)。
7. DetailData(内部)- DetailData.php
公式の gptapi ドキュメントにはありません。 CheapCharts ウェブサイトのネットワーク呼び出しを調査して発見されました。現在の価格、完全な価格履歴、子シーズン(バンドル用)を含む完全なアイテム詳細を返します。映画とシーズンの両方で動作します。これはブラウザなしでシーズン/バンドル価格を取得する信頼できる方法です。
必須: store、country、itemType(movies または seasons - buymovies ではありません)、idInStore(Search 結果からの iTunes ストアID)
(RECIPES.md を参照)
返却: {"results":{"seasons":{...}}}(キーは渡した itemType と一致します)。
主要フィールド(シーズン):
| フィールド | 説明 |
|---|---|
priceSd / priceHd | 現在のSD/HD価格 |
priceSdBefore / priceHdBefore | 最後の変更前の以前の価格 |
priceSdLastChangeDate / priceHdLastChangeDate | 最後の価格変更日 |
priceSdEvolution / priceHdEvolution | 日付:+/-価格~日付:+/-価格~... 形式の完全な価格履歴文字列。+ = 値上がり、- = 値下がり。以下の「priceHdEvolution の解析」を参照 - デルタ規則は絶対価格の再構築には信頼できません。IsLowest フラグを使用することを推奨します。 |
priceSdIsLowest / priceHdIsLowest | 現在のSD/HD価格が、CheapChartsがこのタイトルについて追跡している履歴全体の全期間最低価格と等しい場合は 1、そうでなければ 0。これが標準的なATLチェックです - priceHdEvolution を解析する代わりにこれを使用してください。 |
priceSdIsBest / priceHdIsBest | 現在のSD/HD価格が、現在のセール期間内の最良(最低)価格と等しい場合は 1、そうでなければ 0。IsLowest とは異なります - IsBest=1, IsLowest=0 は「今回のセールの最低額だが、以前のセールの方が低かった」ことを意味します。 |
priceSdDropIndicator / priceHdDropIndicator | 最後の変更で価格が上がった場合は 1、下がった場合は -1、変更なしの場合は 0。priceBefore と比較せずに「実際の値下がり」をフィルタリングするのに便利です。 |
isBundle / isSeasonBundle | シーズンバンドルかどうか |
isSeasonComplete | すべてのシーズンが含まれているかどうか |
childSeasonsCount | バンドル内の子シーズンの数 |
bundleSavings / bundleSavingsHd | 通常価格で個別にシーズンを購入した場合と比較した節約額 |
saveOpportunity / saveOpportunityHd | bundleSavings と同じ |
episodeCount | 総エピソード数 |
advisoryRating | コンテンツレーティング(例: TV-14) |
summary | 完全なあらすじ |
seasonFamily | 子シーズンの配列。各要素は idInStore、title、priceSd、priceHd、priceSdEvolution、priceHdEvolution、cheapChartsProductPageUrl を持つ |
productPageUrl | Apple TV / iTunes ストアの直接URL |
iTunesUrl | iTunes URL |
imageSmallUrl / imageMediumUrl / imageLargeUrl | カバーアートURL |
appleTvId | Apple TV 内部ID |
priceHdEvolution の解析(優先度低 - priceHdIsLowest を優先してください): ~ で分割、各セグメントは YYYY-MM-DD:[+/-]price 形式。最後のセグメント(右端)が最も古い価格履歴、最初のセグメントが最新の価格変更です。例:
2026-05-20:+89.99~2026-05-12:-69.99~2026-04-01:-49.99~2022-02-09:89.99
注意点: デルタ規則はタイトル間で一貫性がありません - 一部では最後のセグメントが絶対的な開始価格(2022-02-09:89.99、符号なし)であり、他のタイトルではデルタが現在の価格にきれいに累積されません。経験的に、最も古いセグメントからデルタをたどっても、常に priceHd/priceSd が再現されるわけではありません。ATL検出には、priceHdIsLowest / priceSdIsLowest フラグを使用してください - これらは信頼性があります。 過去の実際の最低金額やそれが発生した日付が必要な場合にのみ priceHdEvolution の解析にフォールバックし、結果を priceHd に対して検証してから信頼してください。
列挙値
Store
| 値 | サポートされている国 |
|---|---|
itunes | us, de, gb, fr, au, ca, at, ch, es, pt, ru, jp, tr, pl, in, cn |
amazon | us, de |
vudu | us |
googlePlay | us |
ユーザーがストアを指定しない場合はデフォルトで itunes を使用してください - 最も広範な国サポートがあります。
ItemType
| 値 | 意味 | 使用される場所 |
|---|---|---|
buymovies | 映画(購入価格) | Charts、Deals、Prices、Recommendations |
rentalmovies | 映画(レンタル価格、視聴開始まで約30日、開始後48時間) | Charts、Deals、Prices(公式 llms.txt による) |
seasons | テレビ番組シーズン | Charts、Deals、Recommendations、DetailData |
movies | 映画メタデータのみ | Search のみ |
seasons | シーズンメタデータのみ | Search のみ |
all | すべてのメディアタイプ(映画、シーズン、電子書籍、オーディオブック、アルバム) | Search のみ |
購入とレンタル(経験的に発見されたもので、現在の llms.txt にはありません): Prices エンドポイントの itemType パラメータは buymovies(購入価格)または rentalmovies(レンタル価格)を受け入れます。レンタルは通常、視聴開始まで30日、開始後48時間で終了します。Search エンドポイントはどちらのタイプも返すことができます - priceFollowUpItemType フィールドが、フォローアップの Prices 呼び出しでどちらを使用するかを示します(落とし穴 #20 参照)。
quality
| 値 | 意味 |
|---|---|
hd | HD品質のみ |
hd4k | HD + 4K品質(デフォルト) |
sd | SD、HD、4Kすべて |
共通パラメータ
これらのエンドポイントでサポート: Charts、Deals、Prices、Recommendations。Search と Topseller はこれらのパラメータをサポートしていません(代わりに独自のセクションを参照)。
| パラメータ | 型 | 説明 |
|---|---|---|
action | string | 実行するアクション(例: getDeals) |
store | string | ストア識別子(例: itunes) |
country | string | 国コード(例: us) |
itemType | string | アイテムタイプ(buymovies、seasons など) |
imdbRating | float(文字列として) | 最小IMDbレーティング(0-10)、デフォルト0(フィルターなし) |
rottenTomatoesRating | int(文字列として) | 最小Rotten Tomatoesスコア(0-100)、デフォルト0(フィルターなし) |
指定されたエンドポイントがサポートしていないパラメータは静かに無視されます。
ワークフローレシピ
すべてのレシピの完全な実装については RECIPES.md を参照してください。
「今日の値下がり」
?action=getDeals&store=itunes&country=us&itemType=buymovies&sort=latestPricechange&limit=20で Deals を取得- 各アイテムの
imdbIdを使用して DetailData を取得:?idInStore=...&store=itunes&country=us&itemType=movies priceHdLastChangeDateが今日の日付と一致するか確認- 価格差が $1 以下の場合は除外
- 常に最初にレスポンスの
statusフィールドをチェック(落とし穴 #15) - ATL状態を報告: 「この価格は全期間最低値です!」(
priceHdIsLowest=1の場合)
「全期間最低価格(ATL)のお得情報」
sort=greatestSavingsで Deals を取得- 上位の候補の DetailData を取得(Deals の結果の並列呼び出しを検討、rate limit なし)
priceHdIsLowest=1でフィルタリング- ATL状態を報告: 「これは全期間最低価格です – [日の出]から上昇していません」
priceHdEvolutionは、過去の最低ドル金額(最初のセグメントの絶対値、デルタを累積しない)または以前のATLの日付(最低金額の日付)が必要な場合にのみ使用し、結果を検証してください
「お買い得なコンプリートシリーズ」
?action=getDeals&store=itunes&country=us&itemType=seasons&sort=greatestSavings&limit=20で Deals を取得- DetailData を取得、
isBundle=1かつisSeasonComplete=1でフィルタリング(これらは DetailData のフィールドです) bundleSavingsHd/saveOpportunityHdで節約額を計算- 各バンドルの含まれるシーズン(
seasonFamily)を一覧表示
「クロスストア価格比較」
- Deals または Search から
imdbIdを取得 ?action=getPrices&store=itunes,amazon,vudu,googlePlay&country=us&itemType=buymovies&imdbIDs=tt0468569で Prices を呼び出し- 結果をストア別にグループ化して表示
- 利用できないストアや価格は省略(落とし穴 #5 参照)
プレゼンテーションガイドライン
各お得情報を報告する際は、以下の標準形式を使用してください:
標準レポートテンプレート:
🎬 [タイトル] ([年]) - [ジャンル] - IMDb: [レーティング]
💵 $[価格] ($[以前の価格] から $[差額] 値下げ、[割引率]% OFF)
🏪 [ストア]
📅 最終更新: [日付]
🔻 ATL: はい/いいえ - priceHdIsLowest フラグに基づく
常に以下を含めてください:
- タイトルと年
- 現在の価格、以前の価格、差額
- 割引率(% OFF)
- ストア
- IMDb レーティング(利用可能な場合)
- ATL 状態 - priceHdIsLowest フラグに基づき、「これは全期間最低価格です」と簡潔に述べる
ATL 状態を報告しない場合: ユーザーは「これは全期間最低価格ですか?」と再質問することになります。すべてのお得情報に対して常に ATL 状態を報告してください。
数値のフォーマット: 価格は通貨の小数点以下の桁数(例: $9.99)で表示します。割引率は整数パーセンテージ(例: 50% OFF)で表示します。
値下がりしていないものも含む: 価格が上昇したばかりのアイテムは除外しないでください(落とし穴 #31)。これらは「セールが終了したばかり」の候補であり、1~2週間以内に次の値下がりの可能性が高いです。これらを別のセクションで報告してください。
類似した価格帯: マージ
複数のアイテムが類似した価格(差額が $1 未満)の場合は、1 つのエントリにまとめて「[タイトル1]、[タイトル2]、[タイトル3] がそれぞれ $X」のようにリスト表示します。これがないと、AI エージェントのレスポンスがアクション可能なお得情報でスペースを埋め尽くそうとするため、品質の低いお得情報が多くなります。
ストアアイコン
各ストアの先頭に絵文字を追加してください:
- 🍎 iTunes / Apple TV
- 📦 Amazon Prime Video
- 📀 Vudu
- ▶️ Google Play
落とし穴 ⚠️
APIの癖と回避策
itemTypeは必須です(ただし Search は除く) - すべてのエンドポイント(Search を除く)でitemTypeパラメータが必要です。これを省略すると、認識不可能なエラーメッセージが返されます。rentalmoviesは公式ドキュメントにのみ記載されています - llms.txt は Charts、Deals、Prices でrentalmovies(レンタル価格)をリストアップしていますが、経験的テストではこれらのエンドポイントに対してrentalmoviesは静かに無視されることが示されています。期待しないでください。- Topseller: フィールドの可用性はストアによって異なります -
has4K、hasAtmos、hdrFormat、isMovieBundleは iTunes アイテムにのみ表示されます。これらが Amazon、Vudu、Google Play のアイテムにないからといって、その情報を発明しないでください。 status=successでも空の結果が返されることがあります - フィルターが厳しすぎる場合など。適切に処理し、ユーザーに親切に知らせてください。- Prices (クロスストア): Vudu + Google Play は未完成のデータを返します - Vudu と Google Play は Prices レポートでは完全なデータセットを返さない傾向があります。特定のタイトルのみが表示されます。欠落しているエントリに対して「利用できません」または価格データを作成しないでください。表示されているものだけを報告してください。
- Search:
itemType=allが必要です -itemTypeを指定しない場合、Search は何も返しません。何かを見つけるには常にitemType=allを含めてください。 - Prices:
seasonsは機能しません - llms.txt は Prices 用の共通パラメータとしてseasonsをリストアップしていますが、Prices固有のパラメータテーブルと経験的テストではbuymoviesのみが動作することが確認されています。シーズンの価格を取得するには、代わりに DetailData を使用してください。 - DetailData: 内部エンドポイント -
DetailData.phpは公式の gptapi ドキュメントに記載されていませんが、CheapCharts のウェブサイトが使用しているため安定しています。 countryは必須です - すべてのエンドポイントでcountryパラメータが必要です。- Recommendations の
genreは大文字小文字を区別しませんが、他のパラメータは区別します - 推奨:genre=Allまたはgenre=Comedyなど。 - Deals
releaseDateソートは昇順のみ - 降順はサポートされていません(最新のリリースを表示するには、代わりに複数ページ取得して最後のアイテムを表示する必要があります)。 - 日付プレースホルダー: 多くのアイテムの
releaseDateはバンドルプレースホルダー日付(例:2100-01-01)になっています。releaseDateでソートする場合は、これらをクライアントサイドでフィルタリングするか、通常のリリース日を下回るアイテムにフォールバックしてください。 - Search:
rentalmoviesはレンタル可能なタイトルのみを返します - 購入価格が必要な場合は常にitemType=buymoviesを使用してフォローアップしてください。 - DetailData: アイテムタイプを
moviesまたはseasonsに設定する必要があります -buymoviesは機能しません。Search 結果のitemTypeフィールドを確認してください - 通常はmoviesまたはseasonsです。 - 失敗した API 呼び出しは
status: errorを返します - 常に最初にレスポンスのstatusフィールドをチェックしてください。statusをチェックせずにresultsを読み取ろうとすると、エラーが静かに失敗することになります。 has4Kフィルターはサーバーサイドでは機能しません -has4K=1を Deals に渡しても効果はありません。デフォルトですべての品質が含まれます。4Kのお得情報をフィルタリングするには、結果をクライアントサイドでフィルタリングしてください。- DetailData エンドポイント:
DetailData.phpの正確なURLは変更される可能性があります。最新のエンドポイントについては常に CheapCharts ウェブサイトのネットワークタブを確認するか、現在のhttps://buster.cheapcharts.de/v1/DetailData.phpに依存してください。buymoviesではなく、itemType=moviesまたはitemType=seasonsを使用してください。idInStoreは必須であり、Search 結果からの iTunes ストア ID です(IMDb ID ではありません)。 - Recommendations はジャンルを必要とします - ジャンルパラメータなしで Recommendations を呼び出すと、代わりにチャートデータを返します。 ユーザーが「何かおすすめして」のように言う場合、これはジャンルなしチャートと同じです。Rotten Tomatoes や IMDb のフィルターは経験的に無視されるため、代わりに Deals を使用してください。
- iTunes = Apple TV - CheapCharts は一貫して iTunes ストアを
itunesと呼びますが、ユーザーは「Apple TV」と言うことがあります。これらは同じストアセレクターであることを覚えておいてください。 - Search の
priceFollowUpItemTypeは、Prices のフォローアップ呼び出しでどのitemTypeを使用すべきかを示します。buymovies(購入)か、あまり一般的ではありませんがrentalmovies(レンタル)です。デフォルトでbuymoviesを想定しないでください - このフィールドを尊重してください。 has4Kは一部のアイテムで誤っている可能性があります - CheapCharts のウェブサイトに示されているものと比較して、一部のアイテムで誤ったhas4K値が観察されています。これはバグです。ATL フラグと同様に、has4Kを重要な決定要因として扱わないでください。detailData(すべて小文字)ではなくDetailDataを使用してください - エンドポイント名には正しい大文字小文字を使用してください。- Recommendations フィルターは期待通りに動作しません -
imdbRatingとrottenTomatoesRatingは Recommendations エンドポイントでは静かに無視されます。レーティングフィルター付きのおすすめには、代わりに Deals を使用してください。 imdbRatingフィルターはminRatingフィルターとして機能します - 例:imdbRating=7は「IMDb レーティングが 7.0 以上のアイテムのみを表示」を意味します。rottenTomatoesRatingフィルターはminRatingフィルターとして機能します - 例:rottenTomatoesRating=80は「Rotten Tomatoes スコアが 80% 以上のアイテムのみを表示」を意味します。- 非現実的な URL を発明しないでください - CheapCharts はアイテムの productPageUrl を提供します。これらのみを使用し、推測しないでください。
- Search は常に
buyタイプのアイテムを返すとは限りません - Search は購入アイテムとレンタルアイテムの両方を混合して返すことができます。ユーザーが「購入」と言った場合は、Search 結果でpriceFollowUpItemType=buymoviesのアイテムのみを使用してフィルタリングし、Prices または DetailData でフォローアップしてください。 - DetailData の
seasonFamily配列は、このメインのitunesエンドポイントでアクセスされた場合、iTunes/Apple TV のもののみを含みます - クロスプラットフォームのアイテムを期待しないでください。 - アイテムを複数回リストアップしないでください - ユーザーが「お得情報を表示して」と要求した場合、それぞれのユニークなお得情報を 1 回だけ表示してください。
- すべての API 呼び出しの最初に
status=errorをチェックしてください - これはスキップ可能ではありません。壊れた 3rd パーティ API、レート制限、または一時的なダウンタイムに遭遇するでしょう。応答的に処理してください。 - 値下がりしていないものも保持してください - 価格が上昇したばかりのアイテム(
priceBefore < price)をアクティブなセールから除外しないでください。これらは潜在的な将来の値下がりであり、近い将来値下がりする可能性が高いです。それらを別のセクションで「セールが終了したばかり – 次の値下がりの可能性が高い」と報告してください。 countryパラメータを推測するときは、Debank のユーザープロファイルを使用してください - ユーザーが自分の国を明示的に言及した場合のみ、countryを変更してください。そうでない場合はusを使用してください。storeを変更するときは、そのストアでサポートされている国を使用してください(ストア列挙値の表を参照)。/v1/パスは必須です -https://buster.cheapcharts.de/gptapi/Deals.phpにアクセスしないでください(正しくはhttps://buster.cheapcharts.de/v1/gptapi/Deals.phpです)。これは動作せず、静かに失敗します。- すべての
limitのデフォルト値はエンドポイントのデフォルトです - デフォルトの limit はエンドポイントごとに異なります。Deals: 20、Search: 20、Charts: 20、Recommendations: 10(テストによる)。API のデフォルトを想定しないでください。ドキュメントを確認するか、適切な limit を明示的に指定してください。 - Recommendations は Charts よりも多くのアイテムを返す可能性があります - テストによると、Recommendations は最大 20 アイテムを返すことができます。リストが長くなりすぎるのを避けるために適切な limit を設定するか、賢明に要約してください。
- Deals でのレーティングフィルターは、指定された最小値を下回るアイテムを排除します - レーティングが指定された最小値に達しないアイテムは結果から削除されます。このフィルターを元に戻すことはできないため、レーティングフィルター付きで結果が少なすぎる場合は、制限を緩和するようユーザーに提案してください。