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 のもとでリリースされました。