paint-brush
Flix-Finder: Django와 Bright Data로 영화 추천 앱 만들기 [3/3부]~에 의해@infinity
2,032 판독값
2,032 판독값

Flix-Finder: Django와 Bright Data로 영화 추천 앱 만들기 [3/3부]

~에 의해 Rishabh Agarwal6m2023/07/17
Read on Terminal Reader
Read this story w/o Javascript

너무 오래; 읽다

Flix-Finder에는 새 영화를 반영하기 위해 영화 데이터를 업데이트할 수 있는 몇 가지 프로세스가 필요합니다. 이것이 우리가 마지막 부분에서 구현할 것입니다! 이 기능을 구현하는 방법에는 여러 가지가 있습니다. 데이터를 업데이트하는 데 사용할 수 있는 새 엔드포인트를 생성하려고 합니다. 버튼을 누르는 것처럼 데이터가 즉시 변경됩니다.

People Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Flix-Finder: Django와 Bright Data로 영화 추천 앱 만들기 [3/3부]
Rishabh Agarwal HackerNoon profile picture
0-item
1-item


당신은 3부작 시리즈의 세 번째 부분을 읽고 있습니다. 이 부분을 진행하기 전에 이전 두 기사를 읽어보는 것이 좋습니다!


이전 블로그가 끝날 무렵 Flix-Finder는 다양한 기관의 등급 매개변수를 기반으로 영화 검색을 지원했습니다. 우리 앱의 기능은 기대에 부응하고 의도한 기능을 달성했습니다. 그러나 얼마 후 Flix-Finder 고객들은 앱이 영화에 대한 최신 정보를 제공하지 않는다는 불만을 제기하기 시작했습니다. Flix-Finder는 정적 데이터를 사용하기 때문에 이것이 우리가 예상하는 것입니다.


Flix-Finder에는 새 영화를 반영하기 위해 영화 데이터를 업데이트할 수 있는 몇 가지 프로세스가 필요합니다. 그리고 이것은 우리가 이 마지막 부분에서 구현할 것입니다!


이 기능을 구현하는 방법에는 여러 가지가 있음에도 불구하고 우리는 데이터를 업데이트하는 데 사용할 수 있는 새로운 엔드포인트를 생성할 것입니다. 마치 버튼을 누르는 것처럼 데이터가 즉시 변경됩니다. 그러나 cronjob을 활용하는 것과 같은 다른 전략도 있습니다. 이 블로그에 하나의 전략에 대한 세부 사항이 설명되면 동일한 개념을 사용하여 새로운 기술을 쉽게 만들 수 있습니다.

모든 것을 계획하고 있습니다…


코딩을 시작하기 전에 한발 물러서서 모든 요구 사항을 이해해 봅시다.


우리는 새로운 엔드포인트를 생성하고 해당 엔드포인트에 도달하면 Flix-Finder가 사용하는 데이터를 업데이트하려고 합니다. /update 엔드포인트를 사용하면 이 엔드포인트에 도달하는 모든 GET 요청 이 앱에서 사용하는 데이터를 업데이트해야 합니다.


인터페이스가 계획되었으니 이제 ' 데이터를 어떻게 업데이트할 것인가?' 에 대해 생각해 봅시다. ' .


데이터 업데이트 프로세스는 세 단계로 나눌 수 있습니다.

(1) Bright 데이터에 대해 수집기를 다시 실행합니다.

(2) 컬렉터를 실행하여 얻은 결과를 가져옵니다.

(3) 결과를 정적 파일에 덮어쓰기


처음 두 단계에서는 Bright Data에서 제공하는 API를 사용할 수 있습니다. 데이터가 확보되면 바닐라 Python을 사용하여 기존 정적 파일을 덮어쓸 수 있습니다.


엄청난! 모든 것이 계획되었으면 구현을 시작하겠습니다.


Flix-Finder에 새 엔드포인트 추가

Django 추천 앱의 view.py 파일 내에 새로운 메소드를 생성하는 것부터 시작하세요. 우리는 이 메소드를 updateData 라고 부를 것입니다. 여기에는 정적 데이터를 업데이트하는 모든 논리가 위치합니다.


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


우리의 견해도 설정해 봅시다. 뷰에 새로 생성된 메서드에 대한 매핑을 추가해야 합니다.


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


이를 통해 Flix-Finder에 새로운 엔드포인트를 성공적으로 생성했습니다. 우리는 이 엔드포인트를 사용하여 정적 데이터를 업데이트할 것입니다. 현재 이 엔드포인트는 아무 작업도 수행하지 않고 단순히 문자열 메시지를 반환합니다.


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

Bright Data에서 API 토큰 생성

데이터 업데이트를 위해 Bright Data의 API를 사용하려면 먼저 API 토큰을 생성해야 합니다.


Bright Data에 대한 모든 통신에는 이 토큰이 포함되어야 하며 이는 인증 목적으로 사용됩니다.


API 토큰을 생성하는 단계:

  1. https://brightdata.com/cp/setting 으로 이동하세요.
  2. API 토큰 섹션에서 Add Token 버튼을 클릭하세요.
  3. 대화 상자에서 사용자, 권한 및 만료 날짜를 선택합니다.
  4. 저장 버튼을 클릭하고 2FA 코드를 입력하세요.
  5. 생성된 토큰을 복사하여 안전하게 보관하세요.


API 토큰이 유출되지 않도록 주의하세요. 귀하의 API 토큰에 접근할 수 있는 사람은 누구나 Bright Data에서 문자 그대로 귀하를 흉내낼 수 있습니다!!!


API 토큰이 생성되면 수집기를 실행하고 수집기 실행에서 데이터를 가져오기 위해 API를 사용할 준비가 된 것입니다.

수집기 시작을 위한 API

수집기의 API로 시작 섹션으로 이동하세요.



여기서는 수집기를 다시 실행하고 결과를 가져오는 데 사용할 수 있는 컬 요청을 찾을 수 있습니다.


수집기 실행을 시작하는 API: Bright Data는 수집기 실행을 시작하기 위한 엔드포인트를 제공합니다. 엔드포인트 https://api.brightdata.com/dca/trigger_immediate POST 요청을 기대합니다. 또한 수집기를 고유하게 식별하는 데 사용되는 쿼리 매개변수 ' collector '도 필요합니다. 헤더에는 API 토큰이 포함되어야 합니다.


여기에 대한 컬 요청이 있습니다.


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


이 끝점의 응답은 응답 ID입니다. 이는 나중에 결과를 가져오는 데 사용될 수 있습니다.


수집기 실행에서 결과를 가져오는 API: 수집기 실행에서 얻은 응답 ID를 사용하여 Bright Data는 수집기 실행에서 결과를 가져오는 또 다른 API를 제공합니다. 엔드포인트 https://api.brightdata.com/dca/get_result GET 요청을 예상합니다. 또한 수집기를 고유하게 식별하는 데 사용되는 쿼리 매개변수 'response_id'도 필요합니다. 헤더에는 API 토큰이 포함되어야 합니다.


이 끝점에 대한 컬 요청은 다음과 같습니다.


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


업데이트 엔드포인트 구현

사용할 끝점과 편리한 API 토큰에 대한 지식을 바탕으로 업데이트 끝점 구현을 시작할 수 있습니다.


처음에 식별한 하위 작업에 따라 이 끝점을 구현해 보겠습니다.

(1) Bright 데이터에 대해 수집기를 다시 실행합니다.

(2) 컬렉터를 실행하여 얻은 결과를 가져옵니다.

(3) 결과를 정적 파일에 덮어쓰기


먼저 수집기 API를 다시 실행하고 응답 ID를 가져와야 합니다. 이 작업을 수행하기 위해 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')


다음 단계는 응답 ID를 사용하여 결과를 가져오는 것입니다. 결과를 가져오기 전에 잠시 기다려야 합니다.


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


데이터가 있으면 이 새 데이터로 정적 파일을 덮어쓸 수 있습니다.


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


이로써 업데이트 메소드 구현이 완료되었습니다.

새 엔드포인트 사용

데이터 업데이트 프로세스를 시작하기 위해 엔드포인트 localhost:8000/update 에 대한 간단한 컬 요청을 수행할 수 있습니다. API가 반환되면 데이터가 업데이트되었을 것입니다.


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

끝 맺는 말

마지막으로 우리는 이 섹션의 결론에 도달했습니다. Flix-Finder에서는 데이터 업데이트 기능을 통합할 수 있었습니다. 결과적으로 Flix-Finder는 항상 새로운 데이터를 사용자에게 제공할 것입니다!


3부작 시리즈가 마음에 드셨기를 바랍니다. 이 Github 저장소에는 전체 컬렉션의 소스 코드가 포함되어 있습니다.


더 많은 놀라운 기사를 보려면 HackerNoon에서 저를 팔로우 하세요. 다음 글에서 만나요… 그때까지 Happy Learning! 🙂