정리 노트

googleapiclient로 Youtube 데이터 가져오기 본문

K-POP 아이돌 SNS 분석

googleapiclient로 Youtube 데이터 가져오기

꿈만 꾸는 학부생 2024. 2. 15. 22:27
728x90

2024.02.05 - [K-POP 아이돌 SNS 분석] - 사전 조사 글에서 준비하기로 한 것들 중 googleapiclient를 사용해 유튜브 데이터에 접근하기 위한 준비 과정에 대해 작성합니다.

API Key 얻기

Google Cloud Platform에 로그인해서 프로젝트(ex. YoutubeCrawling)를 먼저 생성합니다.

Youtube Data API v3 화면

그 후, 위의 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 설명서에 따르면 싫어요 수는 동영상 소유자가 비공개로 지정할 수 있다고 합니다. 따라서 모든 동영상에서 얻을 수 있다는 보장이 없기 때문에 제외했습니다.


다음으로 진행할 일(계획)

  • 최종 활성화 지수 계산 식 설정: 각 수치에 얼마만큼의 가중치를 부여할 것인지, 인스타그램과 유튜브에 각각 얼마만큼의 가중치를 주어 합칠 것인지 등
  • 주제 구체화: 어느 아티스트(아이돌)를 대상으로 활성화 지수를 측정 / 비교할 것인지, 이를 통해 최종적으로 무엇을 얻어내려는지
728x90

'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