使用 ReelGood API 在 Netflix 上搜尋和過濾節目和電影
製成:
此應用程式目前已損壞 - ReelGood 已遷移到在其網站上使用 V3 API,而 V2 API 不再運作。如果您想了解如何使用新的 API 端點並貢獻 PR,請這樣做。
請參閱問題#5。
到目前為止,該專案僅使用模板將單頁 API 結果表示為文字和圖像。
沒有花哨的報告或過濾。
另外,我可能會在 Vue 中重建它,而不是 Mustache。
ReelGood 是一項提供包括 Netflix 在內的許多線上服務的電視節目和電影清單的服務。
ReelGood 在其網站上有一個很棒的 GUI,可以輕鬆導航以進行搜尋和過濾。他們也使用 API 作為其中的一部分。我想建立自己的演出指南報告和推薦列表,因此我使用客戶端 JS 從他們的 API 中提取資料並將其呈現在網站上。
查看網站:
如果您不熟悉 Netlify / Lambda 函數,請參閱我的食譜。
直接測試 JSON API 端點:
克隆儲存庫:
$ git clone [email protected]:MichaelCurrin/netflix-assistant.git
$ cd netflix-assistant
沒有建置或安裝步驟!
下面繼續。
使用 Serverless 進行 API 請求
此應用程式無法直接執行瀏覽器請求 ReelGood API(在本機這沒問題,但在部署的網站上您會收到錯誤)。 API 變更導致存在 CORS 錯誤。
因此,該應用程式經過重新設計,以使用 Netlify 的免費Functions功能(基於 AWS Lambda 建置)。
函數是使用簡短的 JS 腳本定義的,該腳本託管在 Netlify 上。當對此函數的端點發出請求時,系統會向 ReelGood API 發出請求,並將結果作為快取的 JSON 回應傳回。
這比建立 Python 或 Node API 簡單得多,因為這需要更多程式碼並且無法託管在 Netlify 上。
缺點是該功能只能在雲端運行,不能在本機伺服器上運行。
有一些方法可以解決這個問題:
http
庫的簡短腳本來設定伺服器,只需添加一行額外的行來調用某個端點上的 JS 腳本 - 這意味著您只需要一台伺服器和一個連接埠。請注意,本地使用受到限制 - 請參閱上面的部分。
在根目錄中啟動 Web 伺服器。
請參閱本要點中的方法或使用下面的方法。
$ python3 -m http.server
在瀏覽器中開啟。例如
這個專案中有一個基本的 shell 腳本,它使用 Bash 和 cURL 從 ReelGood API 取得資料。
這種方法不是使用上面介紹的按需函數,而是從 API 中抓取數據並將其儲存為 JSON 數據,如果您關心的話,可以將其保留在已部署的應用程式中或提交給版本控制。然後前端可以使用該資料 - 這會快得多,因為所有分頁都已處理。以稍微陳舊的資料和查詢大型靜態 JSON 檔案為代價。可以進行一些清理,以便 JSON 檔案僅包含感興趣的欄位。
腳本從 API 取得節目的前兩頁,其中 IMDB 和 ReelGood 分數高於 50%。如果您想智慧分頁,建議使用 Python 或類似的更高級處理 - 即替換為更高的skip
值,直到沒有更多頁面。
運行為:
$ cd scrape
$ ./get_shows.sh
然後查看out
子目錄下建立的JSON文件
遠端設定
此儲存庫可以免費部署在 Netlify 上 - 作為靜態網站以及用於無伺服器後端呼叫外部 API 的 Netlify 函數。
必須為 API 請求設定 CORS 標頭,但無法在 Github Pages 上設定。此外,這使用了 Netlify 上的 Function,而 GitHub Pages 則不支援該功能。
在 ReelGood 的網站上,您可以查看可在 Netflix 上觀看的電視節目和影片。
此頁面支援過濾器參數、排序選項和顯示格式選項。
顯示資料是從 ReelGood API 檢索的。
這是在初始頁面加載、應用過濾/排序以及單擊頁面底部的“加載更多”時完成的。
該 API 可以免費使用,並且在其常見問題解答頁面上提供了請求 API 存取的詳細資訊。我發現無需向他們發送電子郵件即可輕鬆存取該 API。我還沒有找到它的文檔,所以我將我所做的 GUI 選擇與發出的 API 請求進行比較,並推斷 API 請求上的欄位如何運作以及響應欄位的含義。
$.getJSON
(前端)和axios
(函數)來簡化專案。為了避免 CORS 錯誤,該專案使用 Netlify 上的函數(又稱 Lambda)來請求伺服器端的數據,然後使資料在與瀏覽器請求相同的網域中可用。
請參閱 Netlify 函數。
另請參閱部落格文章。
本機設定可以使用 Netlify 函式庫,或者只是基於ENV=dev
或 local/remote 等標誌使用原始 URL(幸運的是,即使在 Netlify 上確實如此,它也不會在本機上產生 CORS 錯誤)作為後備。
由 @MichaelCurrin 在 MIT 下發布。