paint-brush
Flix-Finder: Django ve Parlak Verilerle Film Önerisi Uygulaması Oluşturma [Bölüm 3/3]ile@infinity
2,032 okumalar
2,032 okumalar

Flix-Finder: Django ve Parlak Verilerle Film Önerisi Uygulaması Oluşturma [Bölüm 3/3]

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

Çok uzun; Okumak

Flix-Finder'ın, film verilerinin yeni filmleri yansıtacak şekilde güncellenebileceği bir işleme ihtiyacı var. Bu, bu son bölümde uygulayacağımız bir şey! Bu işlevselliği uygulamanın birkaç yolu vardır. Verileri güncellemek için kullanılabilecek yeni bir uç nokta oluşturmak istiyoruz. Verileriniz tıpkı bir düğmeye bastığınızda olduğu gibi anında değişir.

People Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Flix-Finder: Django ve Parlak Verilerle Film Önerisi Uygulaması Oluşturma [Bölüm 3/3]
Rishabh Agarwal HackerNoon profile picture
0-item
1-item


Üç bölümlük bir serinin üçüncü bölümünü okuyorsunuz. Bu bölüme geçmeden önce önceki iki makaleyi okumanız önemle tavsiye edilir!


Önceki blogun sonunda Flix-Finder, çeşitli ajansların derecelendirme parametrelerine dayalı olarak film aramalarını destekliyordu. Uygulamamızın işlevselliği beklentileri karşıladı ve amacına ulaştı. Ancak bir süre sonra Flix-Finder'ın müşterileri, uygulamanın filmlerle ilgili en güncel bilgileri sağlamadığından yakınmaya başladı. Flix-Finder statik veriler kullandığından bu bizim öngördüğümüz bir şeydir.


Flix-Finder'ın, film verilerinin yeni filmleri yansıtacak şekilde güncellenebileceği bir işleme ihtiyacı var. Ve bu, bu son bölümde uygulayacağımız bir şey!


Bu işlevselliği uygulamanın çeşitli yolları olmasına rağmen verileri güncellemek için kullanılabilecek yeni bir uç nokta oluşturacağız. Verileriniz tıpkı bir düğmeye bastığınızda olduğu gibi anında değişir. Ancak cronjob kullanmak gibi başka stratejiler de var. Bu blogda bir stratejinin özellikleri açıklandıktan sonra, aynı kavramlar kullanılarak herhangi bir yeni teknik kolaylıkla oluşturulabilir.

Her şeyi planlıyoruz…


Kodlamaya başlamadan önce bir adım geriye gidelim ve tüm gereksinimlerimizi anlayalım.


Yeni bir uç nokta oluşturmak istiyoruz ve bu uç noktaya ulaşıldığında Flix-Finder'ın kullandığı veriler güncellenmelidir. /update uç noktasını kullanalım ve bu uç noktaya isabet eden herhangi bir GET isteği, uygulamamızın kullandığı verileri güncellemelidir.


Arayüz planlandıktan sonra şimdi ' Veriler nasıl güncellenir?' konusunu düşünelim. ' .


Verileri güncelleme süreci üç adıma ayrılabilir:

(1) Toplayıcıları Parlak Verilerde Yeniden Çalıştırın

(2) Toplayıcıyı çalıştırarak elde edilen sonuçları alın

(3) Sonuçların statik dosyaların üzerine yazılması


İlk iki adım için Bright Data'nın sağladığı API'leri kullanabiliriz. Verileri aldıktan sonra, mevcut statik dosyaların üzerine yazmak için vanilya Python'u kullanabiliriz.


Harika! Her şey planlandıktan sonra uygulamaya başlayalım.


Yeni Uç Noktayı Flix-Finder'a ekleme

Django'daki tavsiye uygulamasının view.py dosyasında yeni bir yöntem oluşturarak başlayın. Bu yönteme updateData adını vereceğiz. Statik verileri güncelleme mantığımızın tamamı burada yer alacaktır.


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


Biz de görüşlerimizi belirleyelim. Yeni oluşturulan yöntemin eşlemesini görünümlere eklememiz gerekiyor.


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


Bununla Flix-Finder'da başarıyla yeni bir uç nokta oluşturduk. Statik verileri güncellemek için bu uç noktayı kullanacağız. Şimdilik bu uç nokta hiçbir şey yapmıyor ve yalnızca bir String mesajı döndürüyor.


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

Bright Verilerde API Tokenı Oluşturma

Bright Data'nın API'sini veri güncellemesi için kullanmaya başlamadan önce bir API Token oluşturmamız gerekiyor.


Bright Data'ya yapılan tüm iletişimler bu belirteci içermelidir ve kimlik doğrulama amacıyla kullanılır.


API Token oluşturma adımları:

  1. https://brightdata.com/cp/setting adresine gidin.
  2. API Token bölümünde Add Token butonuna tıklayın.
  3. İletişim kutusunda kullanıcıyı, izni ve son kullanma tarihini seçin.
  4. Kaydet butonuna tıklayın ve 2FA kodunu girin.
  5. Oluşturulan jetonu kopyalayın ve güvenli bir şekilde saklayın.


API Simgenizi sızdırmadığınızdan emin olun. API Token'ınıza erişimi olan herkes sizi Bright Data'da tam anlamıyla taklit edebilir!!!


API Token oluşturulduktan sonra toplayıcıları çalıştırmak ve toplayıcı çalıştırmalarından veri almak için API'leri kullanmaya hazırız.

Toplayıcıları Başlatmak için API'ler

Koleksiyonerlerinizin API ile Başlat bölümüne gidin.



Burada toplayıcıları yeniden çalıştırmak ve sonuçları almak için kullanabileceğiniz curl isteklerini bulacaksınız.


Toplayıcı çalışmasını başlatmak için API: Bright Data, toplayıcı çalışmasını başlatmak için bir uç nokta sağlar. https://api.brightdata.com/dca/trigger_immediate uç noktası bir POST isteği bekliyor. Ayrıca, toplayıcıyı benzersiz şekilde tanımlamak için kullanılan ' toplayıcı ' sorgu parametresini de bekler. Başlık, API belirtecini içermelidir.


İşte aynısı için kıvrılma isteği.


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


Bu uç noktanın yanıtı bir yanıt kimliğidir. Bu daha sonra sonuçları almak için kullanılabilir.


Bir toplayıcının çalışmasından sonuçları almak için API: Bir toplayıcının çalıştırılmasından elde edilen yanıt kimliğiyle Bright Data, toplayıcı çalıştırmasından sonuçları almak için bize başka bir API sağlar. https://api.brightdata.com/dca/get_result uç noktası bir GET isteği bekliyor. Ayrıca toplayıcıyı benzersiz şekilde tanımlamak için kullanılan 'response_id' sorgu parametresini de bekler. Başlık, API belirtecini içermelidir.


Bu uç nokta için kıvrılma isteğinin nasıl görüneceği aşağıda açıklanmıştır.


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


Güncelleme uç noktasını uygulama

Kullanılacak uç noktalar ve API belirteci hakkında bilgi sahibi olduğumuzda, güncelleme uç noktasını uygulamaya başlayabiliriz.


Bu uç noktayı başlangıçta belirlediğimiz alt görevlere göre uygulayalım.

(1) Toplayıcıları Parlak Verilerde Yeniden Çalıştırın

(2) Toplayıcıyı çalıştırarak elde edilen sonuçları alın

(3) Sonuçların statik dosyaların üzerine yazılması


Öncelikle yeniden çalıştırılan toplayıcı API'sini kullanmamız ve bir yanıt kimliği almamız gerekiyor. Bu görevi gerçekleştirmek için Python'un istek kütüphanesini kullanacağız.


 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')


Sonraki adım, sonuçları almak için yanıt kimliğini kullanmaktır. Sonuçları almaya çalışmadan önce bir süre beklerdik.


 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}"} )


Eldeki verilerle, bu yeni verileri statik dosyanın üzerine yazabiliriz.


 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()


Böylece güncelleme yönteminin uygulanması tamamlanır.

Yeni uç noktayı kullanma

Veri güncelleme sürecini başlatmak için localhost:8000/update uç noktasına basit bir curl isteği yapılabilir. API geri döndüğünde veriler güncellenirdi.


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

Son sözler

Sonunda bu bölümün sonucuna ulaştık. Flix-Finder'a veri güncelleme işlevini entegre edebildik. Sonuç olarak, Flix-Finder'ımız her zaman yeni verilerle kullanıcılarının kullanımına açık olacak!


Umarım üç bölümlük seriyi beğenmişsinizdir. Bu Github deposu, koleksiyonun tamamının kaynak kodunu içerir.


Bu tür harika makalelerin devamı için beni HackerNoon'da takip edebilirsiniz. Bir sonraki yazıda görüşmek üzere… O zamana kadar Mutlu Öğrenmeler! 🙂