일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- OS
- LSTM
- programmers
- 프로그래머스
- Regression
- kmu
- Seq2Seq
- 국민대학교
- 재귀
- db
- Python
- 스택
- C++
- GIT
- Heap
- 머신 러닝
- 국민대
- gan
- instaloader
- 회귀
- 파이썬
- python3
- PANDAS
- 데이터베이스
- googleapiclient
- machine learning
- 정렬
- Stack
- 운영체제
- SQL
- Today
- Total
정리 노트
googleapiclient로 Youtube 데이터 가져오기 본문
2024.02.05 - [K-POP 아이돌 SNS 분석] - 사전 조사 글에서 준비하기로 한 것들 중 googleapiclient를 사용해 유튜브 데이터에 접근하기 위한 준비 과정에 대해 작성합니다.
API Key 얻기
Google Cloud Platform에 로그인해서 프로젝트(ex. YoutubeCrawling)를 먼저 생성합니다.
그 후, 위의 API를 검색해 '사용'을 클릭합니다.
다음에는 프로젝트의 '사용자 인증 정보' 탭으로 가서 API 키를 받습니다.
패키지 설치
파이썬 언어를 통해 유튜브 데이터에 접근하기 위해서는 아래 3가지의 패키지를 설치해야 합니다.
- google-api-python-client (version: 2.118.0)
- google-auth-oauthlib (version 1.2.0)
- google-auth-http2lib (version 0.2.0)
Google Colaboratory 환경에서 pip 명령어를 통해 설치할 수 있으며 PyCharm 같은 IDE 환경에서는 검색해서 직접 설치할 수 있습니다.
패키지 둘러보기
패키지에 대한 자세한 설명들은 아래 공식 사이트에서 확인하시길 바랍니다. 이 포스트에서는 극히 일부만 살펴봅니다.
API Reference | YouTube Data API | Google for Developers
이 페이지는 Cloud Translation API를 통해 번역되었습니다. API Reference 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. YouTube Data API를 사용하면 YouTube 웹사이트에
developers.google.com
2024.02.10 - [K-POP 아이돌 SNS 분석] - 사전 과정 - instaloader 둘러보기 글에서와 같이 동영상의 좋아요 수나 댓글 수 등의 정보들을 얻기 위해서는 여러 단계를 거쳐야 하고, 각 단계별로 사용하는 API에 대응되는 사용량 단위의 요청이 이루어집니다. 따라서 할당량에 주의하며 사용해야 합니다.
먼저 특정 채널의 정보를 확인을 위한 코드는 아래와 같습니다. 이 포스트에서도 뉴진스를 예시로 하여 시도했습니다.
from googleapiclient.discovery import build
api_key = "API KEY를 입력하세요"
youtube_api_service_name = "youtube"
youtube_api_version = "v3"
youtube = build(youtube_api_service_name, youtube_api_version, developerKey=api_key)
# 뉴진스 채널 찾기
searched = youtube.search().list(
q="뉴진스 | New Jeans",
part="snippet",
maxResults=10
).execute()
# 채널 정보 얻기
channel_snippet = searched['items'][0]['snippet']
print("채널 개설 일자:", channel_snippet['publishedAt'])
print("채널 이름:", channel_snippet['title'])
print("채널 설명:", channel_snippet['description'])
이를 통해 얻을 수 있었던 유의미한 정보는 채널 개설 일자와 이름 정도였습니다. 이 패키지에서도 시간에 따른 유튜브 구독자 수의 변화를 감지할 수 없어서 구독자 수에 대한 정보는 제외했습니다.
다음은 특정 플레이 리스트 안의 특정 동영상에 대한 정보를 얻는 코드입니다.
from googleapiclient.discovery import build
api_key = "얻은 API KEY"
youtube_api_service_name = "youtube"
youtube_api_version = "v3"
youtube = build(youtube_api_service_name, youtube_api_version, developerKey=api_key)
# 뉴진스 채널 찾기
searched = youtube.search().list(
q="뉴진스 | New Jeans",
part="snippet",
maxResults=10
).execute()
# 뉴진스 플레이리스트 목록 얻기
newjeans_channel_id = searched['items'][0]['id']['channelId']
newjeans_playlists = youtube.playlists().list(
part="snippet",
channelId=newjeans_channel_id,
maxResults=3
).execute()
# 플레이리스트의 동영상 목록 얻기
playlist_id = newjeans_playlists['items'][1]['id']
playlist_videos = youtube.playlistItems().list(
playlistId=playlist_id,
part='snippet',
maxResults=10
).execute()
# 동영상 정보 얻기
video_id = playlist_videos['items'][0]['snippet']['resourceId']['videoId']
video = youtube.videos().list(
part='snippet,contentDetails,statistics',
id=video_id
).execute()
# 정보 출력
print("영상 제목:", video['items'][0]['snippet']['title'])
print("게시 일자:", video['items'][0]['snippet']['publishedAt'])
print("조회 수:", video['items'][0]['statistics']['viewCount'])
print("좋아요 수:", video['items'][0]['statistics']['likeCount'])
print("댓글 수:", video['items'][0]['statistics']['commentCount'])
이 코드를 통해 영상 제목과 영상 게시 일, 조회수, 좋아요 수, 댓글 수를 볼 수 있었습니다. 인스타그램에서 얻을 수 있는 정보와 유사해서 유튜브 데이터 구조도 인스타그램에서와 비슷하게 구축할 수 있을 것 같습니다.
데이터 구성
현재까지 googleapiclient 패키지를 통해 살펴본 결과를 바탕으로 데이터를 아래와 같이 구상했습니다.
게시 일자 | 조회 수 | 좋아요 수 | 댓글 수 |
인스타그램에서의 데이터 구성과 다른 점은 두 번째 열에서 있습니다. 인스타그램은 한 번 업로드할 때 여러 사진 또는 영상을 같이 올릴 수 있습니다. 하지만 유튜브는 한 번 업로드할 때 하나의 영상만 업로드할 수 있습니다. 따라서 유튜브 데이터를 구성할 때, 두 번째 열을 인스타그램 때와 똑같이 생각할 수 없었고 유튜브인 만큼 의미가 있는 지표들 중 하나인 조회 수를 대신해서 선정했습니다.
싫어요 수도 데이터 구성에 포함될만한 중요한 지표입니다. 하지만 API 설명서에 따르면 싫어요 수는 동영상 소유자가 비공개로 지정할 수 있다고 합니다. 따라서 모든 동영상에서 얻을 수 있다는 보장이 없기 때문에 제외했습니다.
다음으로 진행할 일(계획)
- 최종 활성화 지수 계산 식 설정: 각 수치에 얼마만큼의 가중치를 부여할 것인지, 인스타그램과 유튜브에 각각 얼마만큼의 가중치를 주어 합칠 것인지 등
- 주제 구체화: 어느 아티스트(아이돌)를 대상으로 활성화 지수를 측정 / 비교할 것인지, 이를 통해 최종적으로 무엇을 얻어내려는지
'K-POP 아이돌 SNS 분석' 카테고리의 다른 글
데이터 얻기 (1) | 2024.02.25 |
---|---|
구체화 과정 (2) | 2024.02.17 |
사전 과정 - tweepy 살펴보기 (0) | 2024.02.10 |
사전 과정 - instaloader 둘러보기 (0) | 2024.02.10 |
사전 조사 (2) | 2024.02.05 |