TIL | 영화진흥위원회에서 제공하는 오픈 API 활용해보기

정세영·2022년 8월 8일
1

Node

목록 보기
1/1
post-thumbnail

영화진흥위원회에서 제공하는 오픈 API를 사용하여 일별 박스오피스 내역을 가져오기

영화진흥위원회에서 제공하는 오픈 API를 사용하여 영화진흥위원회에서 관리하는 데이터베이스에서 2022.05.20 날짜 기준으로 일별 박스오피스 내역을 가져와보자.

1. 영화진흥위원회 접속하기

http://www.kobis.or.kr/kobisopenapi/homepg/main/main.do

2. 회원가입하기

  • 로그인 페이지에 들어가서 회원가입하기를 클릭
  • 사용 목적과 관리명을 임의로 지정

3. 키 발급 받기


키 발급/ 관리에 들어간 후

사용 목적 및 관리명을 임의로 작성해준다.
예) 공부 목적/ 영화 API

다시 키 발급/ 관리에 들어가면 발급된 키를 확인할 수 있다.

3. 오픈API 가져오기


오픈API > 제공서비스로 들어간다.


일별 박스오피스 API를 활용해보자

3-1. Json 파일 가져오기


Json 주소를 복사하여 붙인다.

3-2. key 입력


이 부분을 발급 받은 키로 변경한다.

3-3. 날짜 변경


targetDt는 조회하고자 하는 날짜를 가져와 주는 인터페이스다.
원하는 날짜를 조회하고싶다면 'targetDt=yyyymmdd'형식으로 날짜를 입력하면된다.

cf) 크롬 extension 중 하나인 jsonview를 설치하면 위 사진처럼 데이터가 json형식으로 정렬되어 나온다.


Node.js 환경에서 데이터 출력하기

방금 받아온 일별 박스오피스 내역을 Node.js 환경에서 데이터 출력해보자.

1. vscode에 js파일을 만들어서 데이터를 붙여 넣는다.

{
    boxOfficeResult: {
      boxofficeType: "일별 박스오피스",
      showRange: "20220520~20220520",
      dailyBoxOfficeList: [
        {
          rnum: "1",
          rank: "1",
          rankInten: "0",
          rankOldAndNew: "OLD",
          movieCd: "20204548",
          movieNm: "범죄도시 2",
          openDt: "2022-05-18",
          salesAmt: "5535540550",
          salesShare: "86.5",
          salesInten: "1844127600",
          salesChange: "50",
          salesAcc: "15890715890",
          audiCnt: "523194",
          audiInten: "156971",
          audiChange: "42.9",
          audiAcc: "1539849",
          scrnCnt: "2373",
          showCnt: "12985",
        },
        {
          rnum: "2",
          rank: "2",
          rankInten: "0",
          rankOldAndNew: "OLD",
          movieCd: "20212855",
          movieNm: "닥터 스트레인지: 대혼돈의 멀티버스",
          openDt: "2022-05-04",
          salesAmt: "711470560",
          salesShare: "11.1",
          salesInten: "293170000",
          salesChange: "70.1",
          salesAcc: "55575757800",
          audiCnt: "67704",
          audiInten: "26015",
          audiChange: "62.4",
          audiAcc: "5211689",
          scrnCnt: "1113",
          showCnt: "4451",
        },
        {
          rnum: "3",
          rank: "3",
          rankInten: "2",
          rankOldAndNew: "OLD",
          movieCd: "20224270",
          movieNm: "배드 가이즈",
          openDt: "2022-05-04",
          salesAmt: "20389300",
          salesShare: "0.3",
          salesInten: "9347400",
          salesChange: "84.7",
          salesAcc: "3256822300",
          audiCnt: "2396",
          audiInten: "1122",
          audiChange: "88.1",
          audiAcc: "341853",
          scrnCnt: "208",
          showCnt: "258",
        },
        {
          rnum: "4",
          rank: "4",
          rankInten: "-1",
          rankOldAndNew: "OLD",
          movieCd: "20199500",
          movieNm: "뜨거운 피",
          openDt: "2022-03-23",
          salesAmt: "17097000",
          salesShare: "0.3",
          salesInten: "82000",
          salesChange: "0.5",
          salesAcc: "3707711970",
          audiCnt: "2000",
          audiInten: "0",
          audiChange: "0",
          audiAcc: "387191",
          scrnCnt: "5",
          showCnt: "7",
        },
        {
          rnum: "5",
          rank: "5",
          rankInten: "-1",
          rankOldAndNew: "OLD",
          movieCd: "20211568",
          movieNm: "아치의 노래, 정태춘",
          openDt: "2022-05-18",
          salesAmt: "17341900",
          salesShare: "0.3",
          salesInten: "2673680",
          salesChange: "18.2",
          salesAcc: "86934820",
          audiCnt: "1675",
          audiInten: "169",
          audiChange: "11.2",
          audiAcc: "9213",
          scrnCnt: "144",
          showCnt: "185",
        },
        {
          rnum: "6",
          rank: "6",
          rankInten: "10",
          rankOldAndNew: "OLD",
          movieCd: "20223991",
          movieNm: "어부바",
          openDt: "2022-05-11",
          salesAmt: "8730000",
          salesShare: "0.1",
          salesInten: "6181000",
          salesChange: "242.5",
          salesAcc: "156484470",
          audiCnt: "1642",
          audiInten: "1223",
          audiChange: "291.9",
          audiAcc: "18278",
          scrnCnt: "30",
          showCnt: "35",
        },
        {
          rnum: "7",
          rank: "7",
          rankInten: "6",
          rankOldAndNew: "OLD",
          movieCd: "20204665",
          movieNm: "EBS 댄스파티! ",
          openDt: " ",
          salesAmt: "5555000",
          salesShare: "0.1",
          salesInten: "2533000",
          salesChange: "83.8",
          salesAcc: "40115000",
          audiCnt: "930",
          audiInten: "426",
          audiChange: "84.5",
          audiAcc: "6907",
          scrnCnt: "19",
          showCnt: "19",
        },
        {
          rnum: "8",
          rank: "8",
          rankInten: "-2",
          rankOldAndNew: "OLD",
          movieCd: "20211421",
          movieNm: "매스",
          openDt: "2022-05-18",
          salesAmt: "7842700",
          salesShare: "0.1",
          salesInten: "-3243100",
          salesChange: "-29.3",
          salesAcc: "33332600",
          audiCnt: "875",
          audiInten: "-283",
          audiChange: "-24.4",
          audiAcc: "3524",
          scrnCnt: "61",
          showCnt: "97",
        },
        {
          rnum: "9",
          rank: "9",
          rankInten: "0",
          rankOldAndNew: "OLD",
          movieCd: "20224782",
          movieNm: "파이어스타터",
          openDt: "2022-05-19",
          salesAmt: "3809000",
          salesShare: "0.1",
          salesInten: "47000",
          salesChange: "1.2",
          salesAcc: "7571000",
          audiCnt: "755",
          audiInten: "4",
          audiChange: "0.5",
          audiAcc: "1506",
          scrnCnt: "6",
          showCnt: "6",
        },
        {
          rnum: "10",
          rank: "10",
          rankInten: "8",
          rankOldAndNew: "OLD",
          movieCd: "20212725",
          movieNm: "신비한 동물들과 덤블도어의 비밀",
          openDt: "2022-04-13",
          salesAmt: "7179700",
          salesShare: "0.1",
          salesInten: "3442100",
          salesChange: "92.1",
          salesAcc: "12257125480",
          audiCnt: "718",
          audiInten: "343",
          audiChange: "91.5",
          audiAcc: "1189821",
          scrnCnt: "45",
          showCnt: "68",
        },
      ],
    },
  }

2. Js로 변환하기

위의 데이터는 json형식이기 때문에 javascript형식으로 변환시켜야 오류가 안난다.

const boxOfficeTarget = [{
    boxOfficeResult: {
      boxofficeType: "일별 박스오피스",
      showRange: "20220520~20220520",
      dailyBoxOfficeList: [
        {
          rnum: "1",
          rank: "1",
          rankInten: "0",
          rankOldAndNew: "OLD",
          movieCd: "20204548",
          movieNm: "범죄도시 2",
          openDt: "2022-05-18",
          salesAmt: "5535540550",
          salesShare: "86.5",
          salesInten: "1844127600",
          salesChange: "50",
          salesAcc: "15890715890",
          audiCnt: "523194",
          audiInten: "156971",
          audiChange: "42.9",
          audiAcc: "1539849",
          scrnCnt: "2373",
          showCnt: "12985",
        },
        {
          rnum: "2",
          rank: "2",
          rankInten: "0",
          rankOldAndNew: "OLD",
          movieCd: "20212855",
          movieNm: "닥터 스트레인지: 대혼돈의 멀티버스",
          openDt: "2022-05-04",
          salesAmt: "711470560",
          salesShare: "11.1",
          salesInten: "293170000",
          salesChange: "70.1",
          salesAcc: "55575757800",
          audiCnt: "67704",
          audiInten: "26015",
          audiChange: "62.4",
          audiAcc: "5211689",
          scrnCnt: "1113",
          showCnt: "4451",
        },
        {
          rnum: "3",
          rank: "3",
          rankInten: "2",
          rankOldAndNew: "OLD",
          movieCd: "20224270",
          movieNm: "배드 가이즈",
          openDt: "2022-05-04",
          salesAmt: "20389300",
          salesShare: "0.3",
          salesInten: "9347400",
          salesChange: "84.7",
          salesAcc: "3256822300",
          audiCnt: "2396",
          audiInten: "1122",
          audiChange: "88.1",
          audiAcc: "341853",
          scrnCnt: "208",
          showCnt: "258",
        },
        {
          rnum: "4",
          rank: "4",
          rankInten: "-1",
          rankOldAndNew: "OLD",
          movieCd: "20199500",
          movieNm: "뜨거운 피",
          openDt: "2022-03-23",
          salesAmt: "17097000",
          salesShare: "0.3",
          salesInten: "82000",
          salesChange: "0.5",
          salesAcc: "3707711970",
          audiCnt: "2000",
          audiInten: "0",
          audiChange: "0",
          audiAcc: "387191",
          scrnCnt: "5",
          showCnt: "7",
        },
        {
          rnum: "5",
          rank: "5",
          rankInten: "-1",
          rankOldAndNew: "OLD",
          movieCd: "20211568",
          movieNm: "아치의 노래, 정태춘",
          openDt: "2022-05-18",
          salesAmt: "17341900",
          salesShare: "0.3",
          salesInten: "2673680",
          salesChange: "18.2",
          salesAcc: "86934820",
          audiCnt: "1675",
          audiInten: "169",
          audiChange: "11.2",
          audiAcc: "9213",
          scrnCnt: "144",
          showCnt: "185",
        },
        {
          rnum: "6",
          rank: "6",
          rankInten: "10",
          rankOldAndNew: "OLD",
          movieCd: "20223991",
          movieNm: "어부바",
          openDt: "2022-05-11",
          salesAmt: "8730000",
          salesShare: "0.1",
          salesInten: "6181000",
          salesChange: "242.5",
          salesAcc: "156484470",
          audiCnt: "1642",
          audiInten: "1223",
          audiChange: "291.9",
          audiAcc: "18278",
          scrnCnt: "30",
          showCnt: "35",
        },
        {
          rnum: "7",
          rank: "7",
          rankInten: "6",
          rankOldAndNew: "OLD",
          movieCd: "20204665",
          movieNm: "EBS 댄스파티! ",
          openDt: " ",
          salesAmt: "5555000",
          salesShare: "0.1",
          salesInten: "2533000",
          salesChange: "83.8",
          salesAcc: "40115000",
          audiCnt: "930",
          audiInten: "426",
          audiChange: "84.5",
          audiAcc: "6907",
          scrnCnt: "19",
          showCnt: "19",
        },
        {
          rnum: "8",
          rank: "8",
          rankInten: "-2",
          rankOldAndNew: "OLD",
          movieCd: "20211421",
          movieNm: "매스",
          openDt: "2022-05-18",
          salesAmt: "7842700",
          salesShare: "0.1",
          salesInten: "-3243100",
          salesChange: "-29.3",
          salesAcc: "33332600",
          audiCnt: "875",
          audiInten: "-283",
          audiChange: "-24.4",
          audiAcc: "3524",
          scrnCnt: "61",
          showCnt: "97",
        },
        {
          rnum: "9",
          rank: "9",
          rankInten: "0",
          rankOldAndNew: "OLD",
          movieCd: "20224782",
          movieNm: "파이어스타터",
          openDt: "2022-05-19",
          salesAmt: "3809000",
          salesShare: "0.1",
          salesInten: "47000",
          salesChange: "1.2",
          salesAcc: "7571000",
          audiCnt: "755",
          audiInten: "4",
          audiChange: "0.5",
          audiAcc: "1506",
          scrnCnt: "6",
          showCnt: "6",
        },
        {
          rnum: "10",
          rank: "10",
          rankInten: "8",
          rankOldAndNew: "OLD",
          movieCd: "20212725",
          movieNm: "신비한 동물들과 덤블도어의 비밀",
          openDt: "2022-04-13",
          salesAmt: "7179700",
          salesShare: "0.1",
          salesInten: "3442100",
          salesChange: "92.1",
          salesAcc: "12257125480",
          audiCnt: "718",
          audiInten: "343",
          audiChange: "91.5",
          audiAcc: "1189821",
          scrnCnt: "45",
          showCnt: "68",
        },
      ],
    },
  },
]; 
console.log(boxOfficeTarget)

방법은 간단하다 대괄호안에 담아서 배열 형태로 만들면 된다. 그리고 변수에 할당해주고 콘솔로그로 변수를 출력해보자.

안에 내용이 다 안보이는 문제가 생기는걸 볼 수 있다.

3. console.dir로 출력하기

2번 이상 네스팅 되면 노드에서는 오브젝트라고만 나온다.

console.dir(boxOfficeTarget, { depth: null });

이라고 작성하고 출력해보면
모든 데이터가 출력된다.

console.log와 console.dir의 차이점

  • console.log는 HTML과 유사한 트리에서 요소를 보여준다.
  • console.dir는 JSON과 유사한 트리에서 요소를 보여준다.
profile
룰루랄라 개발일지🎶❤️‍🔥🧑‍💻❤️‍🔥🎵

1개의 댓글

comment-user-thumbnail
2023년 6월 5일

잘봤습니다! 혹시 API를 받아오려는데 이미지는 없는건가요???

답글 달기