2015-11-10 539 views
0

我使用YouTube API檢索視頻數據。我有一個視頻ID列表。 對於某些視頻,返回的結果是正常的,對於其中一些視頻,API返回的結果爲零。通過我的瀏覽器,所有結果都是有效的。 這是我的代碼:YouTube API返回零結果

def getVideoDuration(self,videoId): 
     try: 
      content = urllib2.urlopen("https://www.googleapis.com/youtube/v3/videos?part=statistics%2C+contentDetails&id=" + videoId +"&key=" + self.DEVELOPER_KEY).read() 
      jsonContent= json.loads(content) 
      duration = jsonContent['items'][0].values()[0]['duration'] 
      if len(duration) == 7: 
       minutes = jsonContent['items'][0].values()[0]['duration'][2] 
       seconds = jsonContent['items'][0].values()[0]['duration'][4:6] 
      if len(duration) == 5: 
       minutes = 0 
       seconds = jsonContent['items'][0].values()[0]['duration'][2:4] 
      print minutes,seconds 
      totalTime = str(minutes) + "." + str(seconds) 
      return float(totalTime) 
     except: 
      return 0.0 

對於ID:'fu5K2cOeD4M'我的代碼返回零分的結果,但是通過瀏覽器中的結果是正常的(JSON響應附後):

{ 
"kind": "youtube#videoListResponse", 
"etag": "\"0KG1mRN7bm3nResDPKHQZpg5-do/wTtZkXqw81l7Hq6-GrLwJ3wRQ5w\"", 
"pageInfo": { 
    "totalResults": 1, 
    "resultsPerPage": 1 
}, 
"items": [ 
    { 
    "kind": "youtube#video", 
    "etag": "\"0KG1mRN7bm3nResDPKHQZpg5-do/jrxp-dHXG3s3ujaIjyq15GWV7V8\"", 
    "id": "fu5K2cOeD4M", 
    "contentDetails": { 
    "duration": "PT8M15S", 
    "dimension": "2d", 
    "definition": "sd", 
    "caption": "false", 
    "licensedContent": false 
    }, 
    "statistics": { 
    "viewCount": "18358", 
    "likeCount": "166", 
    "dislikeCount": "1", 
    "favoriteCount": "0", 
    "commentCount": "33" 
    } 
    } 
] 
} 

我試圖之間延遲我的請求使用time.sleep(),但它並沒有幫助我。

回答

0

的問題是,我給我增加了一個額外的字符

+0

你應該使用正則表達式來解析'duration',或者你應該是100%肯定視頻的時間要求(不到10分鐘) – frank