我一直在試圖獲得給定頻道ID的所有視頻。但我沒有得到所有影片YouTube API:沒有獲得給定頻道的所有視頻
代碼,我試圖以檢索頻道的所有視頻:
api_key = API_KEY
base_video_url = 'https://www.youtube.com/watch?v='
base_search_url = 'https://www.googleapis.com/youtube/v3/search?'
raw_url = 'https://www.googleapis.com/youtube/v3/' \
'channels?key={}&forUsername={}&part=id'
def getChannelID(username):
''' returns the channel ID '''
r=requests.get(raw_url.format(api_key,username))
json=r.json()
print(json['items'][0]['id'])
return json['items'][0]['id']
def getchannelVideos():
''' returns list of all videos of a given channel '''
chanId=getChannelID('tseries')
first_url = base_search_url + \
'order=date&part=snippet&channelId={}&maxResults=50&key={}'\
.format(chanId,api_key)
video_links = []
url = first_url
while True:
inp = requests.get(url)
resp = inp.json()
for i in resp['items']:
if i['id']['kind'] == "youtube#video":
video_links.append(base_video_url + i['id']['videoId'])
try:
next_page_token = resp['nextPageToken']
url = first_url + '&pageToken={}'.format(next_page_token)
except:
break
print('working') #used this to count repetitions of while loop
return video_links
這裏給定信道是T-Series其中有11537部影片至今 [click to see the image of the channel showing the count]但我收到589只有視頻
我用這條線來計算no。迭代while循環會做
print('working')
爲了這個,我觀察到,while循環後19次迭代結束(我已經嘗試了很多頻道,但同樣是重複的)
的是最後一次(第19次迭代)JSON數據我被提供了
{'etag': "cbz3lIQ2N25AfwNr-BdxUVxJ_QY/7SEM6nSU4tBD7ZsR5Abt5L-uqAE",
'items': [],
'kind': 'youtube#searchListResponse',
'pageInfo': {'resultsPerPage': 50, 'totalResults': 15008},
'prevPageToken': 'CLYHEAE',
'regionCode': 'IN'}
爲什麼API不提供nextpageID,雖然totalResults是15008?
AFAIK在列出Channel對象的統計信息時,通過videoCount鍵值檢索上載的頻道視頻計數。您的實施中可能存在的問題:maxresults = 50您的GETs – BoboDarph
@BoboDarph'maxResults = 50'是API端實施的限制 – Jkdc