Youtube API키를 발급받기 위해서는 먼저 Google Cloud에서 새 프로젝트를 생성해야한다.
프로젝트 생성 - Google Cloud 플랫폼 바로가기
프로젝트 이름 설정 후 만들기를 클릭하여 프로젝트를 생성한다.
해당 프로젝트선택 > 사용자 인증 정보 클릭 > + 사용자 인증 정보 만들기 클릭 > API 키 만들기
API 키가 생성된다. 해당 API키를 복사해준다.
해당 프로젝트선택 > 사용 설정된 API 및 서비스 클릭 > API 및 서비스 사용 설정 클릭
검색창에 Youtube 검색 > YouTube Data API v3 클릭
사용 버튼을 클릭해 Youtube DATA API V3을 활성화 해준다.
위의 링크에서 Youtube API 호출에 대한 가이드와 여러 샘플 코드를 참고할 수 있다.
그럼 받은 API키를 이용하여 간단한 테스트를 해보자!
key={받은 API키 값}
에 복사한 키 값을 넣어주자
GET https://www.googleapis.com/youtube/v3/videos?part=snippet&chart=mostPopular&maxResults=10&key={받은 API키 값}
각각의 파라미터가 의미하는 것을 간단히 살펴보면 다음과 같다(공식 문서 참조)
chart
: 동영상을 어떤 기준으로 가져올지를 지정한다.
여기서는 mostPopular로 설정되어 있어 가장 인기 있는 동영상을 가져온다.
maxResults
: 반환할 결과의 최대 개수를 지정한다.
여기서는최대 10개의 동영상을 가져온다.
key
: YouTube Data API를 사용하기 위한 API 키를 지정한다.
위의 요청에서 가장 인기 있는 동영상 10개를 호출하며 호출된 결과에서 해당 영상들에 대한 정보를 받을 수 있다.
이제 스프링 부트 프로젝트에서 Youtube API를 활용하는 방법을 알아보자!
keyword 값을 이용해 검색을 해서 나온 영상에 대한 VideoId와 제목을 받아오는 API
를 간단히 구현해볼 것이다.
새 프로젝트 생성 후 build.gradle에 해당 라이브러리를 추가해준다.
(버전은 각자의 환경에 따라 상이할 수 있음)
// Youtube API
implementation 'com.google.api-client:google-api-client:1.33.0'
implementation 'com.google.oauth-client:google-oauth-client-jetty:1.23.0'
implementation 'com.google.apis:google-api-services-youtube:v3-rev20230816-2.0.0'
implementation 'com.google.http-client:google-http-client-jackson2:1.39.2'
- Google API와 통신하기 위한 Java용 클라이언트 라이브러리
- OAuth 2.0 인증 프로토콜을 지원하기 위한 Jetty 구현을 포함하는 라이브러리
- YouTube Data API를 사용할 수 있게 해주는 Google API 클라이언트 라이브러리
- Google HTTP Client 라이브러리의 Jackson2 모듈을 사용하여 JSON 데이터를 처리하는 기능을 제공하는 라이브러리
application.yml에는 api 키 값을 추가해준다.
youtube:
api:
key: {받은 API 키 값}
package com.example.youtube.controller;
import com.example.youtube.service.YoutubeService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
@RestController
@RequiredArgsConstructor
@RequestMapping("/youtube")
public class YoutubeController {
private final YoutubeService youtubeService;
@GetMapping
public ResponseEntity<String> searchVideo(@RequestParam String keyword) throws IOException {
// YoutubeService를 통해 동영상 검색한 결과를 받아옴
String result = youtubeService.searchVideo(keyword);
return ResponseEntity.ok(result);
}
}
package com.example.youtube.service;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.youtube.YouTube;
import com.google.api.services.youtube.model.SearchListResponse;
import com.google.api.services.youtube.model.SearchResult;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
@Service
public class YoutubeService {
//@Value 어노테이션을 사용하여 application.yml에서 정의한 YouTube API 키를 주입 받음
@Value("${youtube.api.key}")
private String apiKey;
public String searchVideo(String query) throws IOException {
// JSON 데이터를 처리하기 위한 JsonFactory 객체 생성
JsonFactory jsonFactory = new JacksonFactory();
// YouTube 객체를 빌드하여 API에 접근할 수 있는 YouTube 클라이언트 생성
YouTube youtube = new YouTube.Builder(
new com.google.api.client.http.javanet.NetHttpTransport(),
jsonFactory,
request -> {})
.build();
// YouTube Search API를 사용하여 동영상 검색을 위한 요청 객체 생성
YouTube.Search.List search = youtube.search().list(Collections.singletonList("id,snippet"));
// API 키 설정
search.setKey(apiKey);
// 검색어 설정
search.setQ(query);
// 검색 요청 실행 및 응답 받아오기
SearchListResponse searchResponse = search.execute();
// 검색 결과에서 동영상 목록 가져오기
List<SearchResult> searchResultList = searchResponse.getItems();
if (searchResultList != null && searchResultList.size() > 0) {
//검색 결과 중 첫 번째 동영상 정보 가져오기
SearchResult searchResult = searchResultList.get(0);
// 동영상의 ID와 제목 가져오기
String videoId = searchResult.getId().getVideoId();
String videoTitle = searchResult.getSnippet().getTitle();
return "Title: " + videoTitle + "\nURL: https://www.youtube.com/watch?v=" + videoId;
}
return "검색 결과가 없습니다";
}
}
컨트롤러에서 작성한대로 엔드포인트 /youtube
로 호출했고 검색어 keyword
값도 지정해주었다.
그러면 위와 같이 비디오 제목과 ID에 대한 결과 정보를 받아올 수 있다 ✨️✨️
Youtube API 키를 받아와 스프링부트 프로젝트에서 Youtube DATA API V3를 활용하는 방법에 대해 알아보았다. 끄읕--
그 외 유튜브 API를 활용해서 무엇을 할 수 있을까?
동영상 검색 기능
,채널 정보 가져오기
,댓글 가져오기
,동영상 세부 정보 표시
,동영상 업로드
,인기 동영상 가져오기
,사용자 분석
등등 다양하게 활용할 수 있을 것이다.