2011-01-04 57 views
3

YouTubeエントリオブジェクトgdata.youtube.YouTubeVideoEntryからデフォルトサムネイルを取得する簡単な方法はありますか?Youtube python:サムネイルを取得

私はentry.media.thumbnailを試しましたが、それは私に4つのサムネイルオブジェクトを与えます。私はいつも4つあると信じることができますか? YouTubeの検索ページにも表示される既定のサムネイルはどれですか。そして、どうすればそれを得ることができますか?あるいは、私は他のものの1つを変えなければならないのですか?私は私が使用VIDEO_ID知ったとき

は:

http://i4.ytimg.com/vi/ {{VIDEO_ID}}/default.jpgので

を、また、VIDEO_IDを得るために役立つだろう。

私は本当にvideo_idにアクセスするためにURLの1つを解析する必要がありますか?この情報を直接提供していないのは奇妙なようです。

答えて

3

これはgdata.youtube.YouTubeVideoEntryオブジェクトからデフォルトのサムネイルを取得する方法である:

import gdata.youtube.service 

service = gdata.youtube.service.YouTubeService() 
feed_url = 'http://gdata.youtube.com/feeds/api/standardfeeds/most_viewed?v=2' 
feed = service.GetYouTubeVideoFeed(feed_url) 
entry = feed.entry[0] # pick most viewed video as sample entry 

thumbnail = entry.media.thumbnail[0].url 
    # will be an URL like: 'http://i.ytimg.com/vi/%(video_id)s/default.jpg' 
    # when querying YouTube API version 2 ('?v=2' at the end of feed URL) 

あなたは4枚のサムネイルが常に存在していることを信頼することはできません(これはほとんど常にケースです)。デフォルトのサムネイルは、サムネイルのリストの最初のサムネイルです。

entry.id.textで動画URLを取得し、実際の動画IDを末尾から抽出することもできますが、'http://i4.ytimg.com/vi/%(video_id)s/default.jpg'などの固定パターンでサムネイルURLが得られるとは限りません。動画エントリからサムネイルURLを取得する必要があります。

EDIT:は、サムネイルのリストの最初に「default.jpg」サムネイルを取得するには、(「?V = 2」フィードURLに追加のパラメータを追加することで)YouTubeのAPIのバージョン2を問い合わせる必要があります。これを明確にするために例を更新しました。

thumnail_url = "http://img.youtube.com/vi/%s/0.jpg" % video_id 

をそれとも、テンプレートフィルタを作成することができます:

+0

おかげで、私はこれが正しいとは思わない:ユーチューブ検索で 用「笑ったり笑ったりしないで見守ってみろ!笑! 2匹の猫に2匹の猫を示しています。 これは同じです: http://i4.ytimg.com/vi/I_6UTGzgOnU/default.jpg が、それはある最初のサムネイルと同じではありません。 ます。http:// I .ytimg.com/vi/I_6UTGzgOnU/2.jpg – dkgirl

+0

ああ、私はバージョンについて見ています。残念ながら、URL(またはバージョン)はまったく指定しないでください。私はユーチューブのPythonのAPIを使用します。 yt_service = gdata.youtube.service.YouTubeService() クエリ= gdata.youtube.service.YouTubeVideoQuery() 。 ...クエリと他のクエリパラメータに検索用語を追加します。 。 フィード= yt_service.YouTubeQuery(クエリ) 私はどのバージョンを使用するよう指示する方法が表示されません。あなたは知っていますか? – dkgirl

+0

バージョンパラメータ「v = 2」を含めて新しいAPIに準拠させるには、現在の 'query.ToUri()'をhttp://code.google.com/intl/enに従って移行する必要があります/apis/youtube/2.0/migration.html(残念ながら、そのドキュメントに記載されているように、Python YouTube APIクライアントはまだバージョン2に更新されていません)。次に、結果のXMLを 'xml = service.Query(uri).ToString()'で取得します。最後に、 'feed = gdata.youtube.YouTubeVideoFeedFromString(xml)'でフィードを取得します。残りはあなたが知っている。 PS:YouTubeに問い合わせる最新のPythonクライアントを持っていないのは本当にすごいです! :P – scoffey

関連する問題