Üç 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! Flix-Finder [Bölüm 1/3] Flix-Finder [Bölüm 2/3] Ö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. uç noktasını kullanalım ve bu uç noktaya isabet eden herhangi bir uygulamamızın kullandığı verileri güncellemelidir. /update GET isteği, Arayüz planlandıktan sonra şimdi ' konusunu düşünelim. . Veriler nasıl güncellenir?' ' 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 tavsiye uygulamasının dosyasında yeni bir yöntem oluşturarak başlayın. Bu yönteme adını vereceğiz. Statik verileri güncelleme mantığımızın tamamı burada yer alacaktır. Django'daki view.py updateData # 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ı: adresine gidin. https://brightdata.com/cp/setting API Token bölümünde butonuna tıklayın. Add Token İletişim kutusunda kullanıcıyı, izni ve son kullanma tarihini seçin. Kaydet butonuna tıklayın ve 2FA kodunu girin. 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. Bright Data, toplayıcı çalışmasını başlatmak için bir uç nokta sağlar. uç noktası bir POST isteği bekliyor. Ayrıca, toplayıcıyı benzersiz şekilde tanımlamak için kullanılan ' ' sorgu parametresini de bekler. Başlık, API belirtecini içermelidir. Toplayıcı çalışmasını başlatmak için API: https://api.brightdata.com/dca/trigger_immediate toplayıcı İş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ış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. 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. Bir toplayıcının çalışmasından sonuçları almak için API: https://api.brightdata.com/dca/get_result 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 uç noktasına basit bir curl isteği yapılabilir. API geri döndüğünde veriler güncellenirdi. localhost:8000/update ➜ ~ 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 koleksiyonun tamamının kaynak kodunu içerir. Github deposu, Bu tür harika makalelerin devamı için edebilirsiniz. Bir sonraki yazıda görüşmek üzere… O zamana kadar Mutlu Öğrenmeler! 🙂 beni HackerNoon'da takip