일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- C++ Build
- firebase_message
- Lockscreen
- 안드로이드
- C++ Debugging
- Android
- VSCode
- 플러터
- Permission
- background_callback
- policy
- Background
- 권한부여
- MariaDB
- 백그라운드
- thread
- Flutter
- YouTube API
- 잠금화면
- User
- 사용자삭제
- Flutter #Android #FCM #FirebaseCloudMessaging
- MySQL
- 쓰레드
- C++
- 흰셔츠 #누런때
- password
- 사용자추가
- 권한
- Today
- Total
고래 정보 분류소
[YouTubeAPI] YouTube Data API v3 사용하자 본문
YouTube Data API는 재생목록, 재생목록 아이템, 비디오 정보 등을 가져 올 수 있고, 동영상 업로드, 삭제 등 제어 요청도 가능한 것 같다. (아직 정보 요청만 사용해봤다. 19-11-09)
YouTube Data API를 사용하기 위해서는 Google API Console에서 YouTube Data API v3을 찾아서 사용하기를 해줘야된다.
이 API를 사용하기 위해서는 API키를 발급받아 사용하거나, OAuth2.0을 추가해 사용하는 방법이있다.
API키를 받아 사용하는 것이 간편하기 때문에 나는 API키를 발급받아 사용했다.
먼저 Gradle에 라이브러리를 추가한다.
android {
...
// 충돌을 방지하기위해 추가
configuration.all {
resolutionStrategy.force 'com.google.code.findbug:jsr305:3.0.2'
}
}
dependancies {
...
implementation('com.google.api-client:google-api-client-android:1.22.0') {
exclude group: 'org.apache.httpcomponents'
}
implementation('com.google.apis:google-api-services-youtube:v3-rev183-1.22.0') {
exclude group: 'org.apache.httpcomponents'
}
// YouTube 객체를 생성하기위해 GsonFactory가 필요
implementation 'com.google.api-client:google-api-client-gson:1.30.5'
}
라이브러리를 추가하고 YouTube API 객체를 생성해준다.
코드는 Kotlin으로 작성되었다.
val youtubeApi = YouTube.Builder(AndroidHttp.newCompatibleTransport(), GsonFactory(), null)
.setApplicationName(resources.getString(R.string.app_name))
.build()
재생목록의 아이템들을 가져오고 싶으면
val result = youtubeApi.playlistItems()
.list(AppConstant.PART_PLAYLISTITEMS)
.setPlaylistId(id)
.setKey(AppConstant.API_KEY)
.execute()
요청이 성공하면 result의 items 필드에 아이템들이 저장된다.
PlaylistItems 객체들로 영상의 제목이나 길이 등 일부 정보는 포함되어 있지 않다. 영상의 ID를 포함하고 있기 때문에 이를 바탕으로 영상의 정보를 가져올 수 있다.
.list() 메소드의 인자로 요청할 part를 String으로 넘겨줘야한다.
part에 대한 정보는 https://developers.google.com/youtube/v3/docs/playlistItems/list
PlaylistItems: list | YouTube Data API | Google Developers
API 요청 매개변수와 일치하는 재생목록 항목의 모음을 반환합니다. 지정된 재생목록의 모든 항목을 검색하거나 고유 ID를 통해 하나 또는 여러 개의 재생목록 항목을 검색할 수 있습니다. 지금 사용해 보거나 예를 참조하세요. 요청 HTTP 요청 GET https://www.googleapis.com/youtube/v3/playlistItems 매개변수 아래 표는 이 쿼리가 지원하는 매개변수 목록입니다. 나열된 모든 매개변수는 쿼리 매개변수입니다. 매개변수
developers.google.com
result.items.forEach {
videoIds.add(it.snippet.resourceId.videoId)
}
위의 방법으로 영상의 ID를 저장하고 다시 영상 정보를 요청할 수 있다.
val result = youtubeApi.Videos()
.list(AppConstant.PART_VIDEOLIST)
.setId(videoIds)
.setKey(AppConstant.API_KEY)
.execute()
영상 요청 역시 .list() 메소드에 part를 넘겨줘야 된다.
영상의 part 중에는 Owner가 아니면 접근 불가능한 part가 있다.
이는 요청 시 Exception으로 로그를 보면 어떤 것이 요청 불가능한 것인지 알 수 있다.
part 정보는 https://developers.google.com/youtube/v3/docs/videos/list
Videos: list | YouTube Data API | Google Developers
API 요청 매개변수와 일치하는 동영상의 목록을 반환합니다. 지금 사용해 보거나 예를 참조하세요. 요청 HTTP 요청 GET https://www.googleapis.com/youtube/v3/videos 매개변수 아래 표는 이 쿼리가 지원하는 매개변수 목록입니다. 나열된 모든 매개변수는 쿼리 매개변수입니다. 매개변수 이름 필수 매개변수 part string part 매개변수는 API 응답이 포함하는 video 리소스 속성 하나 이상의 쉼표로 구분된 목록
developers.google.com
결과값은 VideoListResponse 객체로 넘어오는데
영상 정보의 목록은 result.items에 List<Video> 형식으로 저장되어 있다.