Recherche et filtre des émissions et des films sur Netflix en utilisant l'API Reelgood
Fait avec:
Cette application est actuellement rompue - Reelgood a migré vers l'utilisation de l'API V3 sur leur site et l'API V2 ne fonctionne plus. Si vous souhaitez comprendre comment les nouveaux points de terminaison API peuvent être utilisés et contribuer un PR, veuillez le faire.
Voir le numéro n ° 5.
Jusqu'à présent, ce projet représente simplement une seule page de résultats de l'API sous forme de texte et d'images, en utilisant des modèles.
Il n'y a pas de reportage ou de filtrage de fantaisie.
Je pourrais également reconstruire cela en Vue, au lieu de la moustache.
Reelgood est un service qui fournit une liste d'émissions de télévision et de films dans de nombreux services en ligne, y compris Netflix.
Reelgood a une excellente interface graphique sur leur site Web qui est facile à naviguer pour la recherche et le filtrage. Ils utilisent également une API dans le cadre de cela. Je voulais construire ma propre liste de rapports et de recommandations de guide de spectacle, donc je tire les données de leur API avec JS côté client et je le rend sur un site Web.
Afficher le site:
Si vous êtes nouveau sur les fonctions Netlify / Lambda, consultez mon livre de cuisine.
Testez directement le point de terminaison de l'API JSON:
Cloner le repo:
$ git clone [email protected]:MichaelCurrin/netflix-assistant.git
$ cd netflix-assistant
Il n'y a pas d'étapes de construction ou d'installation!
Continuez en dessous.
Utilisation de demandes d'API sans serveur
Cette application ne peut pas effectuer des demandes de navigateur directement API Reelgood (localement c'est correct, mais sur le site déployé, vous obtenez une erreur). L'API change DSO Il y a des erreurs COR.
Ainsi, cette application a été redessinée pour utiliser la fonction de fonctions gratuites de Netlify (construite sur AWS Lambda).
Une fonction est définie à l'aide d'un script JS court et il est hébergé sur Netlify. Lorsqu'une demande est effectuée au point de terminaison de cette fonction, une demande est effectuée à l'API Reelgood et le résultat est renvoyé sous forme de réponse JSON en cache.
C'est beaucoup plus simple que de dire la construction d'une API Python ou de nœud, car cela nécessite beaucoup plus de code et ne peut pas être hébergé sur Netlify.
L'inconvénient est que la fonction ne fonctionne que dans le cloud et non sur un serveur local.
Il y a quelques façons de ceci:
http
peut-être et ajouter simplement une ligne supplémentaire pour appeler le script JS sur un certain point de terminaison - cela signifie que vous n'avez besoin que d'un seul serveur et d'un port.Remarque L'utilisation locale est limitée - voir la section ci-dessus.
Démarrez un serveur Web dans le répertoire racine.
Voir les approches dans ce Gist ou utilisez une approche ci-dessous.
$ python3 -m http.server
Ouvert dans le navigateur. par exemple
Il existe un script de shell de base dans ce projet qui utilise Bash et Curl pour obtenir des données de l'API Reelgood.
Plutôt que d'utiliser une fonction à la demande comme couvert ci-dessus, cette approche consiste à gratter les données de l'API et à les stocker sous forme de données JSON, qui pourraient être laissées dans l'application déployée ou engagée dans le contrôle de version si vous vous en souciez. Ensuite, le frontend peut utiliser ces données - ce qui sera beaucoup plus rapide car toute la pagination est déjà gérée. Au prix des données légèrement périmées et interrogeant un grand fichier JSON statique. Un nettoyage pourrait être effectué afin que le fichier JSON ne contient que des champs d'intérêt.
Ce script obtient les deux premières pages des émissions de l'API, où les scores IMDB et Reelgood sont supérieurs à 50%. Une manipulation plus avancée avec Python ou similaire est recommandée si vous souhaitez paginer intelligemment - c'est-à-dire substitut dans une valeur skip
plus élevée, jusqu'à ce qu'il n'y ait plus de pages.
Courir comme:
$ cd scrape
$ ./get_shows.sh
Puis affichez les fichiers JSON créés dans le sous-répertoire out
Configuration à distance
Ce repo peut être déployé gratuitement sur Netlify - en tant que site Web statique ainsi que les fonctions Netlify pour les appels backend sans serveur vers l'API externe.
L'en-tête CORS doit être défini pour les demandes d'API et il n'est pas possible d'être défini sur les pages GitHub. En outre, cela utilise la fonction sur Netlify, que GitHub Pages ne prend pas en charge.
Sur le site Web de Reelgood, il existe une vue des émissions de télévision et des films disponibles pour diffuser sur Netflix.
La page prend en charge les paramètres du filtre, les options de commande et les options de format d'affichage.
Les données Show sont récupérées de l'API Reelgood.
Cela se fait lors du chargement initial de la page, lorsque vous appliquez le filtrage / le tri et également lorsque vous cliquez sur Charger davantage en bas de la page.
L'API est gratuite et sur leur page FAQ, ils fournissent des détails pour demander l'accès à l'API. J'ai trouvé que sans avoir à les envoyer par e-mail, l'API est facile d'accès. Je n'ai pas encore trouvé de documentation pour cela, donc je compare GUI Choice que je fais avec les demandes d'API qui sont faites et déduisent comment les champs sur les demandes d'API fonctionnent et ce que les champs de réponse signifient.
$.getJSON
(frontend) et axios
(fonction) pour simplifier le projet.Pour éviter les erreurs COR, ce projet utilise une fonction aka lambda sur netlify pour demander des données côté serveur, puis rendre les données disponibles sur le même domaine que la demande du navigateur.
Voir la fonction Netlify.
Voir aussi l'article de blog.
Une configuration locale peut utiliser une bibliothèque Netlify ou tout simplement une repli pour utiliser l'URL d'origine (qui ne donne pas heureusement les erreurs CORS sur localhost, même si elle le fait sur Netlify) basée sur un drapeau comme ENV=dev
ou local / distant.
Sorti sous MIT par @michaelcurrin.