2013-06-21 164 views
0

我需要弄清楚以所述視頻的URL爲基礎以編程方式抓取YouTube視頻的最簡單方法。獲取YouTube視頻的長度(無需下載視頻本身)

是youtube API最好的方法嗎?它看起來有些複雜,我之前從未使用過它,所以它可能會讓我稍微適應一下,但我真的只想要最快的解決方案。我瞥了一眼視頻頁面的來源,希望它可以在那裏列出它,但顯然它沒有(儘管它列出了推薦的視頻時間在一個很好的列表中,很容易解析)。如果這是最好的方法,是否有人有狙擊手?

理想的情況下,我能得到這個在Python做的,我需要它最終將在

00:00:00.000 

格式,但我對任何解決方案的人可能有完全開放的。

我會很感激任何見解。

回答

3

您只需從Youtube API 2.0返回的XML中讀取yt:duration元素中的seconds屬性即可。你只能以秒分辨率結束(沒有毫秒)。這裏有一個例子:

from datetime import timedelta 
from urllib2 import urlopen 
from xml.dom.minidom import parseString 
for vid in ('wJ4hPaNyHnY', 'dJ38nHlVE78', 'huXaL8qj2Vs'): 
    url = 'https://gdata.youtube.com/feeds/api/videos/{0}?v=2'.format(vid) 
    s = urlopen(url).read() 
    d = parseString(s) 
    e = d.getElementsByTagName('yt:duration')[0] 
    a = e.attributes['seconds'] 
    v = int(a.value) 
    t = timedelta(seconds=v) 
    print(t) 

,輸出是:

0:00:59 
0:02:24 
0:04:49 
+0

滿足了我所有的需求,非常感謝你的知識和例子。 – src

+0

該網址不再返回任何內容。您必須使用api鍵來使用google apis,如Joan的解答所述https://stackoverflow.com/a/33725265/2205372 –

1

(我不知道什麼是「預先下載」是指。)

得到的VIDEO_ID長度的最簡單方法是使一個HTTP請求

http://gdata.youtube.com/feeds/api/videos/VIDEO_ID?v=2&alt=jsonc

和然後查看返回的data - >duration元素的值。它將以秒爲單位設置爲視頻的持續時間。

+0

啊,我現在看到如何去做,謝謝你的洞察力。我已經使用ffmpeg獲取視頻的長度後,我已經下載了它,但我需要一個不同的解決方案。 – src

+1

不再可用。 – fledgling

1

使用python和V3 youtube API,這是每個視頻的方式。 您需要的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秒。