라프텔 API 뜯어보기 5

아카·2021년 1월 10일
0

라프텔 API(비공식)

목록 보기
5/8

알림

  • 이 포스팅의 정보는 공식적이지 않습니다.

이전 포스팅

이전 포스팅 바로가기

API 뜯어보기

라프텔은 "애니메이션을 추천해주는 사이트"로 시작했다. 이번에는 라프텔에 있는 추천 기능을 알아보자. 라프텔 메인 페이지에 들어가면 다음 API가 호출되는 것을 알 수 있다.

https://laftel.net/api/home/v2/recommend/10/

재밌는 것은, 예전과는 다르게 위의 API는 POST 방식으로 작동한다는 것이다. 아마 "추천리스트"라는 자원을 새로 생성한다고 생각해서 이런 작동 방식을 가지게 된 것 같다(https://meetup.toast.com/posts/92 참조)

아래의 API를 통해 위의 API를 5회 실행시켜보자.

import requests
import time
import random
import json
import tqdm

expired_themes = []

for x in tqdm.tqdm(range(5)):
  url = "https://laftel.net/api/home/v2/recommend/10/"
  header = {"laftel": "TeJava"}

  response = requests.post(url = url, headers = header)

  if (response.status_code == 200):
    data = response.json()
    print(data)

  else:
    print("Error!", response.status_code)

  time.sleep(random.random())

data가 길이 10의 array인 것으로 보아, https://laftel.net/api/home/v2/recommend/10 에 요청을 하면, 10개의 애니메이션을 추천해주는 것 같다. 5회 반복을 한 것은, 결과값이 매번 바뀌는지 검증하기 위해서 반복한 것이다.

출력값이 매번 바뀌는 걸로 보아, 추천 리스트는 요청할 때마다 새롭게 생성되는 것으로 추정된다. 10번 반복해서, 추천 리스트 100개를 출력해보자(실제로는 중복된 추천리스트를 받을 경우도 있기 때문에 100개보다 적은 수가 반환될 것이다)

import requests
import time
import random
import json
import tqdm

N = 10
result = {}

for x in tqdm.tqdm(range(N)):
  url = "https://laftel.net/api/home/v2/recommend/10/"
  header = {"laftel": "TeJava"}

  response = requests.post(url = url, headers = header)

  if (response.status_code == 200):
    data = response.json()
    for x in data:
      if (x["id"] not in result):
        result[x["id"]] = x["name"]

  else:
    print("Error!", response.status_code)

  time.sleep(random.random())

print(f"반복 횟수 : {N}")
print(f"{N}번 반복 후 중복을 제외한 추천리스트의 개수 : {len(result)}")
print(f"결과 : {result}")

수행 결과는 다음과 같았다.

100%|██████████| 10/10 [00:26<00:00,  2.65s/it]반복 횟수 : 10
10번 반복 후 중복을 제외한 추천리스트의 개수 : 71
결과 : ...
profile
코딩한량.

4개의 댓글

comment-user-thumbnail
2021년 10월 29일

https://laftel.net/rank/animation 이곳 순위를 가져오는 API 는 없나요??

2개의 답글