2016-10-21 5 views
0

Dies ist mein erstes Mal hier etwas zu fragen. Ich habe versucht, auf die Youtube-API zuzugreifen, um etwas für ein Experiment zu erhalten, das ich gerade mache. Alles funktioniert so weit. Ich wollte nur nach diesem sehr inkonsequenten Fehler fragen, den ich bekomme.KeyError mit Youtube API mit Python

----------- 
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' 

Ich habe versucht, die Video-ID ("videoID" laut Dokumentation) zu bekommen. Aber aus irgendeinem Grund funktioniert der Code für die erste Abfrage und dann für die zweite Abfrage. Es ist komisch, weil es nur für dieses spezielle Element geschieht. Alles andere ('description', 'publishedAt' usw.) funktioniert. Hier ist mein Code:

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'] 

Hoffe ihr könnt mir helfen. Vielen Dank!

+0

Ihre Beschreibung erwähnt 'videoID', aber der Code verwendet' videoId'. (Zugegeben, es funktioniert für das erste Video, also vielleicht nur ein Tippfehler?) –

+0

Yup! Du hast es. Vielen Dank! Ich weiß, dass ich dir nie wirklich für die Antwort gedankt habe – Furankisan

Antwort

-1

Da einige Ergebnisse zu Key "ID", zurück:

{u'kind': u'youtube#playlist', u'playlistId': u'PLd0_QArxznVHnlvJp0ki5bpmBj4f64J7P'} 

Sie sehen können, gibt es keinen Schlüssel "videoId".

Verwandte Themen