2015-11-13 133 views
0

我如何获得Youtube视频的持续时间?我这个尝试...如何使用python获得Youtube视频的持续时间?

import gdata.youtube 
import gdata.youtube.service 

yt_service = gdata.youtube.service.YouTubeService() 
entry = yt_service.GetYouTubeVideoEntry(video_id='the0KZLEacs') 

print 'Video title: %s' % entry.media.title.text 
print 'Video duration: %s' % entry.media.duration.seconds 

控制台响应

Traceback (most recent call last): 
    File "/Users/LearningAnalytics/Dropbox/testing/youtube.py", line 8, in <module> 
    entry = yt_service.GetYouTubeVideoEntry(video_id='the0KZLEacs') 
    File "/Library/Python/2.7/site-packages/gdata/youtube/service.py", line 210, in GetYouTubeVideoEntry 
    return self.Get(uri, converter=gdata.youtube.YouTubeVideoEntryFromString) 
    File "/Library/Python/2.7/site-packages/gdata/service.py", line 1107, in Get 
    'reason': server_response.reason, 'body': result_body} 
gdata.service.RequestError: {'status': 410, 'body': 'No longer available', 'reason': 'Gone'} 
+0

你有没有尝试安装pafy与其他一些视频ID? – utkbansal

+0

410错误意味着在YouTube的结尾有什么不好的,不是你的 – utkbansal

+0

是的,我尝试了differents ID而不是作品 –

回答

3

两种方式来获得一个YouTube视频时长

第一种方式:


用python和V3 y这是每个视频的方式。您需要的API密钥,您可以在这里:https://console.developers.google.com/

# -*- coding: utf-8 -*- 
import json 
import urllib 

video_id="6_zn4WCeX0o" 
api_key="Your API KEY replace it!" 
searchUrl="https://www.googleapis.com/youtube/v3/videos?id="+video_id+"&key="+api_key+"&part=contentDetails" 
response = urllib.urlopen(searchUrl).read() 
data = json.loads(response) 
all_data=data['items'] 
contentDetails=all_data[0]['contentDetails'] 
duration=contentDetails['duration'] 
print duration 

控制台响应:

>>>PT6M22S 

对应到6分22秒。

方式二:


的另一种方式,但并不是适用于所有的视频是pafy外包装:

import pafy 

url = "http://www.youtube.com/watch?v=cyMHZVT91Dw" 
video = pafy.new(url) 
print video.length 

我从https://pypi.python.org/pypi/pafy/0.3.42

+0

如果需要,可以使用解析' 持续时间= isodate.parse_duration(持续时间)',然后将ISO持续时间'video_dur = duration.total_seconds()'与[isodate](https://pypi.python.org/pypi/isodate)包。 –