2016-10-21 6 views
0

여기에 처음으로 묻는 질문입니다. 나는 내가하고있는 실험을 위해 뭔가를 얻기 위해 Youtube API에 액세스하려고 노력 해왔다. 지금까지 모든 것이 작동합니다. 나는이 매우 일관성없는 오류에 대해 물어보고 싶었습니다.Python을 사용하여 Youtube API를 사용하는 KeyError

----------- 
1 
Title: All Movie Trailers of New York Comic-Con (2016) Power Rangers, John Wick 2... 
Uploaded by: KinoCheck International 
Uploaded on: 2016-10-12T14:43:42.000Z 
Video ID: pWOH-OZQUj0 
2 
Title: Movieclips Trailers 
Uploaded by: Movieclips Trailers 
Uploaded on: 2011-04-01T18:43:14.000Z 
Video ID: Traceback (most recent call last): 
    File "scrapeyoutube.py", line 24, in <module> 
    print "Video ID:\t", search_result['id']['videoId'] 
KeyError: 'videoId' 

동영상 ID (문서마다 'videoID')를 가져 오려고했습니다. 그러나 어떤 이유로 코드가 첫 번째 쿼리에 대해 작동하고 두 번째 쿼리에 대해 완전히 플러시됩니다. 그것은이 특별한 요소에 대해서만 일어나기 때문에 이상합니다. 그 밖의 모든 것 ('description', 'publishedAt'등)이 작동합니다. 내 코드는 다음과 같습니다.

from apiclient.discovery import build 
import json 
import pprint 
import sys 

APINAME = 'youtube' 
APIVERSION = 'v3' 
APIKEY = 'secret teehee' 

service = build(APINAME, APIVERSION, developerKey = APIKEY) 

#volumes source ('public'), search query ('androide') 
searchrequest = service.search().list(q ='movie trailers', part ='id, snippet', maxResults = 25).execute() 

searchcount = 0 
print "-----------" 
for search_result in searchrequest.get("items", []): 
    searchcount +=1 
    print searchcount 
    print "Title:\t", search_result['snippet']['title'] 
    # print "Description:\t", search_result['snippet']['description'] 
    print "Uploaded by:\t", search_result['snippet']['channelTitle'] 
    print "Uploaded on:\t", search_result['snippet']['publishedAt'] 
    print "Video ID:\t", search_result['id']['videoId'] 

여러분이 도와 주길 바랍니다. 감사!

+0

설명에'videoID'이 (가) 언급되어 있지만 코드는'videoId'를 사용합니다. (그것은 첫번째 비디오를 위해 작동합니다, 그래서 어쩌면 단지 오타가됩니까?) –

+0

Yup! 알았어. 감사! 나는 정말로 당신에게 그 해답을주지 않았 음을 알았습니다. – Furankisan

답변

-1

키 "ID"일부 결과를 반환하기 때문에 :

{u'kind': u'youtube#playlist', u'playlistId': u'PLd0_QArxznVHnlvJp0ki5bpmBj4f64J7P'} 
당신이 볼 수

, 아니 키 "videoId가"없다.