Я пытаюсь удалить видео с канала YouTube. Для этого я удалил все URL-адреса видео, которые присутствуют на одном конкретном канале.
С этими видео Url пытается получить данные каждого видео с помощью YouTube API 3.
Я сохранил все URL-адреса видео в списке и передал список функции для очистки данных о видео.
Я пытался зациклить все URL, я получаю только одну запись. В столбце идентификатора видео я получаю все идентификаторы в одной строке внутри массива.
Пожалуйста, дайте мне знать, где я ошибся.
from apiclient.discovery import build
import argparse
import csv
import unidecode
DEVELOPER_KEY = "XXXXX"
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"
class Something:
def youtube_video(self,video_id):
global video_result
youtube = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, developerKey=DEVELOPER_KEY)
videos = []
channels = []
playlists = []
videoresult = []
#video_id = len(video_id)
for ids in range(0,len(video_id)):
video_sample = youtube.videos().list(id=video_id[ids],part="id,snippet").execute()
#print(video_sample)
csvFile = open('youtube_video_data_testing1.csv','w')
csvWriter = csv.writer(csvFile)
csvWriter.writerow(["title","videoId","viewCount","likeCount","dislikeCount", "commentCount","favoriteCount"])
for search_result in video_sample.get("items", []):
if search_result["kind"] == "youtube#video":
title = search_result["snippet"]["title"]
title = unidecode.unidecode(title)
#ids = search_result["id"]
video_response = youtube.videos().list(id=video_id[ids],part="statistics").execute()
#print(video_response)
#video_id.append(ids)
for video_result in video_response.get("items",[]):
viewCount = video_result["statistics"]["viewCount"]
if 'likeCount' not in video_result["statistics"]:
likeCount = 0
else:
likeCount = video_result["statistics"]["likeCount"]
if 'dislikeCount' not in video_result["statistics"]:
dislikeCount = 0
else:
dislikeCount = video_result["statistics"]["dislikeCount"]
if 'commentCount' not in video_result["statistics"]:
commentCount = 0
else:
commentCount = video_result["statistics"]["commentCount"]
if 'favoriteCount' not in video_result["statistics"]:
favoriteCount = 0
else:
favoriteCount = video_result["statistics"]["favoriteCount"]
nextPageToken = video_result.get('nextPageToken')
while ('nextPageToken' in video_result):
nextPage = youtube.videos().list(id=video_id[ids],part="statistics").execute()
video_result['items'] = video_result['items'] + nextPage['items']
if 'nextPageToken' not in video_result:
video_result.pop('nextPageToken', None)
else:
nextPageToken = video_result['nextPageToken']
#videoresult.append(video_result)
csvWriter.writerow([title,video_id,viewCount,likeCount,dislikeCount, commentCount,favoriteCount])
#csvFile.close()
return video_result
s = Something()
s.youtube_video(data)
Я получаю вывод, подобный этому, для одной записи.
title,videoId,viewCount,likeCount,dislikeCount,commentCount,favoriteCount
How to make video marketing work for your business? (Genius Talk Ft.
Michael Brenner),"['sds0bFbkP9U', 'jHGOtEpKMTg', 'CxkytEeaeoM',
'7bVblNUuQNU', 'UBQNCokuvsA', 'jkGNEgpwxAw', 'kVt3CtnFD90',
'zDXX7jA4clg', 'BLD9cMILHCU', 'YPjP7UvRhns', 'E6DDA7PX4qA',
'L9yYwpowSQE', 'Q5EFZp1Dq30', 'ChxqD72CiL0', 'w6_E2IgSza0',
'gLrL3rkO5TM', 'MsIu-nIYfds', 'VAr3aV-aFCI', 'WrLnQtqmtaE',
'xwdBEIammiQ', 'i2PRiIEh-7c', '4E9TmuZZAp4', 'UdKkfuYCAjA',
'kv6lqSwZJLw', 'S5AfpHHTPVg', 'sGLg0NqAyK0', 'GH5tF063-Og',
'pDz2ZVp14JU', 'Zn0HQ3kk5mk', 'tvt588IHPSo', '1hvtiFOsb7Y',
'BKBfBMS9Xuw', 'bIBahCXR10w', 'e0DUIRms_bg', 'VrT7RDh817U',
'qoqzcYmKn6w', 'sfNC3UaVhNs', 'LbMmS4hLnoo', 'ohwDFePuhlU',
'VcvkgKElFw0', 'gSMWkdH2rbk', 'cE3hngrYF9I', 'PGoazo0kE9Q',
'dnWM7Ay67y0', 'fAWRxMhaNsk', 'Q1pEePqeAYc', 'WZs-yZvyhUA',
'S48cAk_sISs', 'B3uIHj8zxLc', '9OaOo55zbss', 'POtMS7pTR28',
'Qe1aLETVr9s', 'NWUXJJDukF0', 'NaImKCWyPyU', 'WK-Ou-8dQ4U',
'm9-RGcr6KN4', '6__glAsOhno', 'rG9Gt_EaN34', 'mXnI2Ojpvyo',
'EAn-UJZWJY4', 'W-uu717R2gU', 'cnjl7Hl1QF0', 'Oq5SykGHsrA',
'lpEoiSQVwM4', '_W-f0GOde8Q', 'wLlzgCMJfmw', 'ofNY5Z2zfZc',
'zHq0S274s1U', 'zVBDHEvyMFs', 'E1-GoEMOm4U', 'HqKJC4267Dc',
'lYHvaGOJ4jw', 'l8w60VYS0J0', 'Tl-WSyRK7lI', 'DxtL8u2zgqg',
'OgrurImBf54', 'GLe-k-ct8eA', 'INrHlrSqioU', 'ZmKnf8Ya3jU',
'afAppKJHBr0', 'kIvdH5mCHeE', 'xlZL_sJGQ5I', '8S8Kon7JsmA',
'AfM1_jMoBlE', 'FGMzszYrHGI', 'v5rBe6nYyeQ', 'XPnXdn1r724',
'yQ3ZitZun8s', 'kzLMD5RXBew', 'SPFfYlAMvuI', 'VZDbslni3DQ',
'Hv397JnNWYc', 'qy7xbEguv8U', 'BGCOfz8M0bQ', 'L1bd16AwvMg',
'mPrydY0mpfQ', '-V028-D0GkQ', 'hlYsJJAZm7k', '8TGa_RdxegU',
'HSENz13ZFxo', 'WqwqzJKa7u0', 'l9YVD0bZ4Io', '5fLZXZgsByo',
'j-4zwpMUsCY', 'PXSXWjfSqY4', 'YUgmIX9V91M', 'fligYEdU34Q',
'WMtfbEMgxlU', 'fU4Kx1emu9E', 'OwcMbm7qPAQ', 'FAEUCz9Wt2k',
'00Hn4RKvEhI', 'wrzsudecHQ0', '4aXffNV-UHs', '3ceG3y224VU',
'1i8KpWev-Ug', 'buvZWcik9hE', '0o4fFgBdQqQ', 'GwQK_fuXU1w',
'LCbKy0PC9SY', '48rbra_J6W0', 'nS2pPRzb4lg', 'D-2Voa3XmTU',
'rsxP3FI8kq8', 'ImTiE7_Qz9M', '9_RwsrgDc0A', 'F0OLsdepsVg',
'78HvcSgNDAQ', 'vnOJPYHIIXc', 'g_rLw2FoRbg', 'sds0bFbkP9U',
'sds0bFbkP9U']",83,3,0,2,0
Мне нужно получить данные для всего видео, которое я пропустил в списке.
Мой список образцов - ['sds0bFbkP9U', 'jHGOtEpKMTg', 'CxkytEeaeoM'] выглядит следующим образом (Все videoID, которые доступны в канале)
Ожидаемый выходной образец для 3 записей:
title,videoId,viewCount,likeCount,dislikeCount,commentCount,favoriteCount
1. How to make video marketing work for your business? (Genius Talk Ft. Michael Brenner),sds0bFbkP9U,83,3,0,2,0
2. video name 2 , g_rLw2FoRbg, 78,0,9,2
3. videoname 3 , sds0bFbkP9U, 98,0,23,76