ReelGood API を使用して Netflix の番組や映画を検索およびフィルタリングする
で作られました:
このアプリは現在壊れています - ReelGood はサイトで V3 API を使用するように移行しており、V2 API は機能しなくなりました。新しい API エンドポイントの使用方法を知り、PR を投稿したい場合は、ぜひご協力ください。
問題 #5 を参照してください。
これまでのところ、このプロジェクトはテンプレートを使用して、API 結果の1ページをテキストと画像として表しているだけです。
複雑なレポートやフィルタリングはありません。
また、Mustache ではなく Vue でこれを再構築するかもしれません。

ReelGood は、Netflix を含む多くのオンライン サービスにわたるテレビ番組や映画のリストを提供するサービスです。
ReelGood の Web サイトには、検索やフィルタリングに簡単にアクセスできる優れた GUI があります。この一環として API も使用します。独自のショー ガイド レポートと推奨リストを作成したかったので、クライアント側 JS を使用して API からデータを取得し、Web サイト上にレンダリングしました。
サイトを見る:
Netlify / Lambda 関数を初めて使用する場合は、私のクックブックを参照してください。
JSON API エンドポイントを直接テストします。
リポジトリのクローンを作成します。
$ git clone [email protected]:MichaelCurrin/netflix-assistant.git
$ cd netflix-assistantビルドやインストールの手順はありません。
以下に続けてください。
サーバーレスを使用した API リクエスト
このアプリはブラウザーリクエストを ReelGood API で直接行うことはできません (ローカルでは問題ありませんが、デプロイされたサイトではエラーが発生します)。 API が変更されたため、CORS エラーが発生しました。
そこで、このアプリは Netlify の無料のFunctions機能 (AWS Lambda 上に構築) を使用するように再設計されました。
関数は短い JS スクリプトを使用して定義され、これは Netlify でホストされます。この関数のエンドポイントに対してリクエストが行われると、ReelGood API に対してリクエストが行われ、結果がキャッシュされた JSON 応答として返されます。
これは、Python や Node API を構築するよりもはるかに簡単です。これは、より多くのコードが必要であり、Netlify でホストできないためです。
欠点は、関数がクラウドでのみ動作し、ローカル サーバーでは動作しないことです。
これを回避するにはいくつかの方法があります。
httpライブラリを使用して短いスクリプトを使用してサーバーをセットアップし、特定のエンドポイントで JS スクリプトを呼び出すための追加の行を追加するだけです。これは、必要なサーバーとポートが 1 つだけであることを意味します。ローカルでの使用は制限されていることに注意してください。上記のセクションを参照してください。
ルート ディレクトリで Web サーバーを起動します。
この要点のアプローチを参照するか、以下のアプローチを使用してください。
$ python3 -m http.serverブラウザで開きます。例えば
このプロジェクトには、Bash と cURL を使用して ReelGood API からデータを取得する基本的なシェル スクリプトがあります。
このアプローチは、上で説明したオンデマンド関数を使用するのではなく、API からデータを収集し、JSON データとして保存することです。JSON データは、デプロイされたアプリに残すことも、それを気にする場合はバージョン管理にコミットすることもできます。その後、フロントエンドはそのデータを使用できるようになります。すべてのページングがすでに処理されているため、はるかに高速になります。ただし、データが若干古くなり、大きな静的 JSON ファイルをクエリする必要があります。 JSON ファイルに目的のフィールドのみが含まれるように、いくつかのクリーンアップを実行できます。
このスクリプトは、IMDB と ReelGood スコアが 50% を超える番組の最初の 2 ページを API から取得します。スマートにページングしたい場合は、Python などを使用したより高度な処理をお勧めします。つまり、ページがなくなるまで、より高いskip値に置き換えます。
次のように実行します。
$ cd scrape
$ ./get_shows.sh次に、 outサブディレクトリに作成された JSON ファイルを表示します。
リモートセットアップ
このリポジトリは、静的 Web サイトと、外部 API へのサーバーレス バックエンド呼び出し用の Netlify 関数として、Netlify に無料でデプロイできます。
API リクエストには CORS ヘッダーを設定する必要がありますが、これは Github Pages では設定できません。また、これは Netlify の Function を使用しますが、GitHub Pages ではサポートされていません。
ReelGood の Web サイトには、Netflix でストリーミングできるテレビ番組や映画が表示されます。
このページでは、フィルター パラメーター、順序付けオプション、表示形式オプションがサポートされています。
ショー データは ReelGood API から取得されます。
これは、ページの最初の読み込み時、フィルタリング/並べ替えを適用したとき、およびページの下部にある[さらに読み込む]をクリックしたときにも行われます。
API は無料で使用でき、FAQ ページには API アクセスのリクエストに関する詳細が記載されています。電子メールを送信しなくても、API に簡単にアクセスできることがわかりました。それに関するドキュメントはまだ見つかっていないので、GUI での選択と実行された API リクエストを比較し、API リクエストのフィールドがどのように機能するか、および応答フィールドが何を意味するかを推測します。
$.getJSON (フロントエンド) とaxios (関数) の混合を避けることを検討してください。CORS エラーを回避するために、このプロジェクトは Netlify の関数 (別名 Lambda) を使用してサーバー側でデータをリクエストし、そのデータをブラウザーリクエストと同じドメインで利用できるようにします。
「Netlify 機能」を参照してください。
ブログ投稿も参照してください。
ローカル設定では、Netlify ライブラリを使用することも、 ENV=devや local/remote などのフラグに基づいて、元の URL (幸いにも Netlify では発生しますが、localhost では CORS エラーが発生しません) を使用することへのフォールバックを使用することもできます。
@MichaelCurrin によって MIT のもとでリリースされました。