paint-brush
Flix-Finder: Erstellen einer Filmempfehlungs-App mit Django und Bright Data [Teil 3/3]von@infinity
2,032 Lesungen
2,032 Lesungen

Flix-Finder: Erstellen einer Filmempfehlungs-App mit Django und Bright Data [Teil 3/3]

von Rishabh Agarwal6m2023/07/17
Read on Terminal Reader
Read this story w/o Javascript

Zu lang; Lesen

Flix-Finder benötigt einen Prozess, durch den seine Filmdaten aktualisiert werden können, um die neuen Filme widerzuspiegeln. Das ist etwas, was wir in diesem letzten Teil umsetzen würden! Es gibt mehrere Möglichkeiten, diese Funktionalität zu implementieren. Wir möchten einen neuen Endpunkt erstellen, der zum Aktualisieren der Daten verwendet werden kann. Ihre Daten würden sich augenblicklich ändern, ähnlich wie wenn Sie eine Taste drücken.

People Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Flix-Finder: Erstellen einer Filmempfehlungs-App mit Django und Bright Data [Teil 3/3]
Rishabh Agarwal HackerNoon profile picture
0-item
1-item


Sie lesen den dritten Teil einer dreiteiligen Serie. Wir empfehlen Ihnen dringend, die beiden vorherigen Artikel zu lesen, bevor Sie mit diesem Teil fortfahren!


Bis zum Ende des vorherigen Blogs unterstützte Flix-Finder die Filmsuche auf Basis von Bewertungsparametern verschiedener Agenturen. Die Funktionalität unserer App entsprach den Erwartungen und erfüllte die beabsichtigte Funktion. Doch nach einiger Zeit beschwerten sich die Kunden von Flix-Finder darüber, dass die App nicht die aktuellsten Informationen zu Filmen bereitstellte. Da Flix-Finder statische Daten verwendet, ist dies etwas, was wir erwarten.


Flix-Finder benötigt einen Prozess, durch den seine Filmdaten aktualisiert werden können, um die neuen Filme widerzuspiegeln. Und das ist etwas, was wir in diesem letzten Teil umsetzen würden!


Obwohl es mehrere Möglichkeiten gibt, diese Funktionalität zu implementieren, erstellen wir einen neuen Endpunkt, der zum Aktualisieren der Daten verwendet werden kann. Ihre Daten würden sich augenblicklich ändern, ähnlich wie wenn Sie eine Taste drücken. Es gibt aber auch andere Strategien, beispielsweise die Nutzung eines Cronjobs. Sobald die Besonderheiten einer Strategie in diesem Blog beschrieben sind, kann jede neue Technik leicht mit denselben Konzepten erstellt werden.

Planen Sie alles ...


Bevor wir mit dem Codieren beginnen, sollten wir einen Schritt zurücktreten und alle unsere Anforderungen verstehen.


Wir möchten einen neuen Endpunkt erstellen und wenn Sie diesen Endpunkt erreichen, sollten die von Flix-Finder verwendeten Daten aktualisiert werden. Lassen Sie uns den Endpunkt /update verwenden und jede GET-Anfrage, die diesen Endpunkt erreicht, sollte die von unserer App verwendeten Daten aktualisieren.


Lassen Sie uns nun nach der Planung der Schnittstelle darüber nachdenken: „ Wie werden die Daten aktualisiert?“ ' .


Der Prozess der Datenaktualisierung kann in drei Schritte unterteilt werden:

(1) Führen Sie die Collectors für Bright Data erneut aus

(2) Rufen Sie die Ergebnisse ab, die Sie beim Ausführen des Kollektors erhalten haben

(3) Überschreiben Sie die Ergebnisse in statische Dateien


Für die ersten beiden Schritte können wir die von Bright Data bereitgestellten APIs verwenden. Sobald wir die Daten haben, können wir Vanilla Python verwenden, um die vorhandenen statischen Dateien zu überschreiben.


Großartig! Wenn alles geplant ist, beginnen wir mit der Umsetzung.


Hinzufügen des neuen Endpunkts zu Flix-Finder

Erstellen Sie zunächst eine neue Methode in der view.py Datei der Empfehlungs-App in Django . Wir werden diese Methode updateData nennen. Hier wird sich unsere gesamte Logik zur Aktualisierung der statischen Daten befinden.


 # recommender/views.py def update(request): # TODO: Implement this method return HttpResponse("Movie Data Updated!")


Lassen Sie uns auch unsere Ansichten darlegen. Wir müssen die Zuordnung für die neu erstellte Methode in Ansichten hinzufügen.


 # recommender/urls.py from django.urls import path from . import views urlpatterns = [ path("", views.index, name = "index"), path("update", views.updateData, name = "update data") ]


Damit haben wir erfolgreich einen neuen Endpunkt im Flix-Finder erstellt. Wir werden diesen Endpunkt verwenden, um die statischen Daten zu aktualisieren. Dieser Endpunkt führt vorerst keine Aktion aus und gibt lediglich eine String-Nachricht zurück.


 ➜ ~ curl localhost:8000/update Movie Data Updated!

Generieren eines API-Tokens für Bright Data

Bevor wir die API von Bright Data für die Datenaktualisierung verwenden können, müssen wir ein API-Token generieren.


Alle Kommunikationen mit Bright Data sollten dieses Token enthalten und es wird für Authentifizierungszwecke verwendet.


Schritte zum Generieren eines API-Tokens:

  1. Gehen Sie zu https://brightdata.com/cp/setting .
  2. Klicken Sie im Abschnitt „API-Token“ auf die Schaltfläche Add Token .
  3. Wählen Sie im Dialogfenster den Benutzer, die Berechtigung und das Ablaufdatum aus.
  4. Klicken Sie auf die Schaltfläche „Speichern“ und geben Sie den 2FA-Code ein.
  5. Kopieren Sie das generierte Token und bewahren Sie es sicher auf.


Stellen Sie sicher, dass Ihr API-Token nicht verloren geht. Jeder, der Zugriff auf Ihr API-Token hat, kann Sie auf Bright Data buchstäblich nachahmen!!!


Sobald das API-Token generiert ist, können wir mit der Verwendung der APIs zum Ausführen der Kollektoren und zum Abrufen von Daten aus Kollektorläufen beginnen.

APIs zum Initiieren von Collectors

Gehen Sie zum Abschnitt „Initiieren durch API“ Ihrer Collectors.



Hier finden Sie Curl-Anfragen, mit denen Sie Collectors erneut ausführen und die Ergebnisse abrufen können.


API zum Initiieren der Collector-Ausführung: Bright Data bietet einen Endpunkt zum Initiieren der Collector-Ausführung. Der Endpunkt https://api.brightdata.com/dca/trigger_immediate erwartet eine POST-Anfrage. Außerdem wird ein Abfrageparameter „ Collector “ erwartet, der zur eindeutigen Identifizierung des Collectors verwendet wird. Der Header sollte das API-Token enthalten.


Hier ist die Curl-Anfrage dafür.


 curl -H "Authorization: Bearer API_TOKEN" -H "Content-Type: application/json" -d '{}' "https://api.brightdata.com/dca/trigger_immediate?collector=c_rj3i0wspnhr0ataba"


Die Antwort dieses Endpunkts ist eine Antwort-ID. Dies kann verwendet werden, um später die Ergebnisse abzurufen.


API zum Abrufen von Ergebnissen aus einem Collector-Lauf: Mit der Antwort-ID, die beim Ausführen eines Collectors erhalten wurde, stellt uns Bright Data eine weitere API zum Abrufen von Ergebnissen aus dem Collector-Lauf zur Verfügung. Der Endpunkt https://api.brightdata.com/dca/get_result erwartet eine GET-Anfrage. Außerdem wird ein Abfrageparameter „response_id“ erwartet, der zur eindeutigen Identifizierung des Collectors verwendet wird. Der Header sollte das API-Token enthalten.


So würde die Curl-Anfrage für diesen Endpunkt aussehen.


 curl "https://api.brightdata.com/dca/get_result?response_id=RESPONSE_ID" -H "Authorization: Bearer API_TOKEN"


Implementierung des Update-Endpunkts

Mit dem Wissen über die zu verwendenden Endpunkte und dem verfügbaren API-Token können wir mit der Implementierung des Update-Endpunkts beginnen.


Lassen Sie uns diesen Endpunkt gemäß den Teilaufgaben implementieren, die wir ursprünglich identifiziert haben.

(1) Führen Sie die Collectors für Bright Data erneut aus

(2) Rufen Sie die Ergebnisse ab, die Sie beim Ausführen des Kollektors erhalten haben

(3) Überschreiben Sie die Ergebnisse in statische Dateien


Zuerst müssen wir die Rerun-Collector-API verwenden und eine Antwort-ID erhalten. Zur Ausführung dieser Aufgabe verwenden wir die Requests-Bibliothek von Python.


 API_TOKEN = "###########" # Replace by your API Token response = requests.post( "https://api.brightdata.com/dca/trigger_immediate?collector=c_rj3i0wspnhr0ataba", headers={"Authorization": f"Bearer {API_TOKEN}", "Content-Type": "application/json"}, json={} ) if response.status_code < 200 or response.status_code > 299 or 'response_id' not in response.json(): return HttpResponseServerError('Something Wrong Happened') response_id = response.json().get('response_id')


Der nächste Schritt besteht darin, die Antwort-ID zum Abrufen der Ergebnisse zu verwenden. Wir würden einige Zeit warten, bevor wir versuchen, die Ergebnisse abzurufen.


 time.sleep(30) # Sleeping for 30 seconds get_results_response = requests.get( f"https://api.brightdata.com/dca/get_result?response_id={response_id}", headers={"Authorization": f"Bearer {API_TOKEN}"} )


Mit den vorliegenden Daten können wir die statische Datei mit diesen neuen Daten überschreiben.


 movie_data = get_results_response.json() data_file = open(ROTTEN_TOMATO_DATA_FILE_PATH, encoding="utf8", mode="w") json.dump(movie_data, data_file, indent=4) data_file.close()


Damit ist die Implementierung der Update-Methode abgeschlossen.

Verwendung des neuen Endpunkts

Eine einfache Curl-Anfrage kann an den Endpunkt localhost:8000/update gestellt werden, um den Datenaktualisierungsprozess zu starten. Sobald die API zurückkehrt, wären die Daten aktualisiert worden.


 ➜ ~ curl localhost:8000/update Movie Data Updated!

Abschließende Bemerkungen

Endlich sind wir am Ende dieses Abschnitts angelangt. Im Flix-Finder konnten wir eine Datenaktualisierungsfunktion integrieren. Dadurch steht unser Flix-Finder seinen Nutzern stets mit aktuellen Daten zur Verfügung!


Ich hoffe, Ihnen hat die dreiteilige Serie gefallen. Dieses Github-Repository enthält den Quellcode der gesamten Sammlung.


Sie können mir auf HackerNoon folgen, um weitere dieser erstaunlichen Artikel zu sehen. Wir sehen uns im nächsten Artikel ... Bis dahin viel Spaß beim Lernen! 🙂