shae2977's picture
add helper files
8ab17e8
Raw
History Blame Contribute Delete
2.25 kB
import csv
from googleapiclient.discovery import build
from urllib.parse import urlparse, parse_qs
from dotenv import load_dotenv
import os
load_dotenv()
key = os.getenv('YOUTUBE_API_KEY')
youtube = build('youtube','v3',developerKey=key)
vid_ids= ['0IZS7ucM9qQ','znefLMNyVE8','nxUcxHMEUGg','QedpcsA-GOU','BKOVzHcjEIo','NHk7scrb_9I','5XVoRGhrhZk','edx_qdEBAf0','g0CWxEuN2VI','RXeLbs_ogDU','uQoDmiMoXHg','8z_YVi-NycI','8YP81X1Jur4','xvvZATxs30M','vpNC1qM_cCE','zzwRbKI2pn4',"lFe5OA6uN8g","C3_mYPlvJeE","dpIJHTIEKC0",'ADllavPbUsg','WshNJefWEP8','WhvuONO1INQ','TNPtBnM4koE','QE6tkqvYW4']
csv_exists = os.path.exists('yt_comment_dataset_v2.csv')
with open('yt_comment_dataset.csv', 'a' if csv_exists else 'w') as dataset:
writer = csv.writer(dataset)
for i in range(len(vid_ids)):
if not csv_exists:
writer.writerow(['video_id', 'comment', 'likes'])
vid_id = vid_ids[i]
print(f'scraping {vid_id}....')
count = 0
next_page_token = None
try:
while True:
req_comments = youtube.commentThreads().list(
part='snippet',
videoId=vid_id,
textFormat='plainText',
pageToken=next_page_token,
order='relevance'
)
res_comments = req_comments.execute()
for item in res_comments['items']:
comment = item['snippet']['topLevelComment']['snippet']['textDisplay']
comment = comment.replace('\n','')
likes = int(item['snippet']['topLevelComment']['snippet']['likeCount'])
writer.writerow([vid_id, comment, likes])
count+=1
next_page_token = res_comments.get('nextPageToken')
if not next_page_token:
break
if count >= 1000:
break
except Exception as e:
print(f"Error encountered at id {vid_id} : {e}")
continue
print('================DONE==================')