유튜브 API 조회수 많은 순위 뽑아보기 PHP 간단 샘플 코드
1. Google Developers Console 프로젝트 생성
2. YouTube DATA API V3 API 키 발급
3. 호스팅 받은 PHP 사이트에서 YouTube DATA API 매뉴얼을 보며 코딩 후 확인해 보기.
먼저 Google Developers Console 사이트에 접속하시면 됩니다. https://console.cloud.google.com/cloud-resource-manager
먼저 API를 사용하기 위해선 프로젝트 만들기 메뉴를 선택하셔서 프로젝트를 만드셔야 합니다.
프로젝트 이름을 정하시고 만들기 버튼을 눌러 주시면 됩니다.
그럼, 아래 이미지와 같이 프로젝트가 만들어진다고 표시됩니다. 조금 기다리시면 프로젝트가 만들어집니다.
프로젝트를 만드시고 검색창에 YouTube Data API로 검색하시면 아래 이미지와 같이 검색된 YouTube Data API v3를 선택해 주시면 됩니다.
이곳에서 사용 버튼을 눌러 주시면 됩니다.
사용 설정이 완료되시면 사용자 인증 정보 메뉴 선택해 주세요.
사용자 인증 정보 만들기 메뉴 선택 후 API 키 메뉴를 선택해 주세요.
그럼, 아래 이미지와 같이 YouTube Data API를 사용하기 위한 API 키 생성이 완료되게 됩니다.
이제 코딩이 필요한 순간입니다. 제가 이것저것 테스트 해봤지만 서버에 추가로 설치되어야 API 데이터를 자유롭게 받아올 수 있었습니다. 하지만 제가 쓰는 호스팅 서버에 설치할 권한도 없었으며 컨트롤도 할 수 없어 curl 라이브러리를 사용해 테스트해 봤습니다.
몇 가지 문제가 있으니 적어 둘게요.
1. $searchQuery 변수에 띄어쓰기 검색이 안되니 단순한 단어로 테스트 하면 좋을 것 같습니다.
2. 응답 데이터에 있어야 할 API 변수가 제대로 다 들어가 있지 않았습니다. 아무래도 서버에 Google API 클라이언트 라이브러리를 설치하지 않고 하다 보니 제대로 된 응답 데이터를 받을 수 없었던 것 같습니다.
3. 1000개를 요청했는데 결과를 50개밖에 주지 않더군요. 이건 API 설정에서 조정해야 하는 건지 Google API를 설치하면 되는 건지 테스트가 필요해 보입니다.
<?php
// API 키 설정
$apiKey = '사이트에서 받은 YOUTUBE API 키를 여기다 넣으시면 됩니다.';
// API 요청 URL 설정
$searchQuery = '오버워치';
$maxResults = 1000;
$url = "https://www.googleapis.com/youtube/v3/search?key={$apiKey}&q={$searchQuery}&type=video&order=viewCount&maxResults={$maxResults}";
// cURL 세션 초기화
$ch = curl_init();
// cURL 옵션 설정
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// API 요청 보내기
$response = curl_exec($ch);
// cURL 세션 닫기
curl_close($ch);
// API 응답 확인
if ($response) {
// JSON 응답 파싱
$data = json_decode($response, true);
// 동영상 순위 출력
$rank = 1;
foreach ($data['items'] as $item) {
$videoId = $item['id']['videoId'];
// 썸네일 이미지 URL 설정
$thumbnailUrl = "https://img.youtube.com/vi/{$videoId}/default.jpg";
// 동영상 정보 출력
echo "{$rank }위 ";
echo "<a href=\"https://www.youtube.com/watch?v={$videoId}\" target=\"_blank\"><img src=\"{$thumbnailUrl}\"></a>";
++$rank;
}
} else {
echo "API 요청 실패\n";
}
?>
처음 시작하는 지금은 연결 테스트만 하는 용도로 여러 가지 문제점은 있지만 호스팅 받았던 웹사이트에서 테스트는 성공했습니다.
재밌네요. 유튜브 API 테스트를 통해 현재 조회수가 가장 많은 유튜브 동영상을 확인해 볼 수 있다는 게 흥미로운 것 같습니다. 문제점은 여러 가지 있지만 나중에 추가로 작업을 하게 된다면 머리를 써봐야 할 듯합니다. API 응답 데이터를 자주 주고받으면 막히게 되어 있을 겁니다. 4일을 주기로 한 번씩만 호출하고 한번 호출한 응답 데이터를 DB에 저장하는 방식으로 사이트를 만들면 API 호출 데이터 한계를 넘지 않고 재밌는 사이트를 만들어 볼 수 있을 듯합니다.