質問: サムネイルのyoutube画像を自動取得しますか? youtubeに埋め込まれたhtmlスニペット、タイトル、およびおすすめの画像を受け入れるカスタム投稿タイプがあります。現在、注目の画像の画像を探していますが、投稿自体の保存処理中に、動画のurlに基づいて動画の最初のフレーム自体を自動的にダウンロードしてサイズを変更できるのが理想的です。うまくいけば、私の投稿タイプはリンク以外に何も必要とせず、そこから画像と埋め込みコードを取得することができます。たとえば、ビデオリンクが http://www.youtube.com/watch?v=2jnpi-ubiig の場合、 v の値が抽出され、でイメージのダウンロードに使用されます。 http://img.youtube.com/vi/2jnpi-ubiig/0.jpg 。私はワードプレスの開発にはとても慣れていませんが、フックを調べようとしていることがわかります(それらを正しく理解していれば)。
回答: 私のビデオブログポストジェネレータ(http://v.leau.co/)はこれを行いますが、wpコンテキストでは行いません。あなたはクエリを提供します。 "スーパーマン"(そしてそれが何かをしていることに気付かずに)(そして唯一のユーザーであるから)待って、そしてあなたが投稿したいvidをクリックし、コードを生成をクリックする。その間にダウンロードしました。このコードはコピーして投稿に貼り付けることができます。言い換えれば、あなたがコードを関数呼び出しに入れるならば、それはコード片を返すでしょう。コンテンツに追加される動画へのリンクを持つhref、またはローカルにダウンロードされた注目の画像へのリンク。それはあなたが探しているコードの一部ですか?私はコアがあると思います:より多くの結果を取得する機能(結果として得られるコードに1つの特定のビデオではなく複数のビデオを表示するだけの場合はergo):function retrievemoreresults($key, $q, $start, $cache) { $url = "http://ajax.googleapis.com/ajax/services/search/video?v=1.0&q=" . $q . "&rsz=large&start=" . $start. "&key=" . $key; $ch = curl_init(); curl_setopt($ch, curlopt_url, $url); curl_setopt($ch, curlopt_returntransfer, 1); curl_setopt($ch, curlopt_referer, $referer); $body = curl_exec($ch); curl_close($ch); $responsedata = json_decode($body, true); $tempoutputstring .= display($responsedata, $cache, $q); return $tempoutputstring; } 初期結果ページを取得するための関数:function retrieveresults($key, $q, $cache) { # first call $url = "http://ajax.googleapis.com/ajax/services/search/video?v=1.0&q=" . $q . "&rsz=large&key=" . $key; $ch = curl_init(); curl_setopt($ch, curlopt_url, $url); curl_setopt($ch, curlopt_returntransfer, 1); curl_setopt($ch, curlopt_referer, $referer); $body = curl_exec($ch); curl_close($ch); $responsedata = json_decode($body, true); $tempoutputstring = ""; $tempoutputstring .= display($responsedata, $cache, $q); $boolfirstrequest = true; foreach ($responsedata["responsedata"]["cursor"]["pages"] as $gsearchresultclass) { $start = $gsearchresultclass["start"]; if ($boolfirstrequest) { $boolfirstrequest = false; } else { $tempoutputstring .= retrievemoreresults($key, $q, $start, $cache); } } return $tempoutputstring; } 特定のディレクトリ(変数)のサムをダウンロードして表示し、投稿に入れるコードを返す機能。function display($responsedata, $cache, $tag) { $strbuffer=""; foreach ($responsedata["responsedata"]["results"] as $gsearchresultclass) { # # there are youtube urls and also google video urls they are both different # the one from google video has the word "thumbnailserver" in it # example: # youtube: http://1.gvt0.com/vi/6jkzr143k8u/default.jpg # video.google: http://3.gvt0.com/thumbnailserver2?app=vss&contentid=7efbd69963e4cc67&offsetms=30000&itag=w160&hl=en&sigh=j6n1fv_it6h5jjwx51fkt-eyqnk # $thumbid=""; $imagethumb=$gsearchresultclass["tburl"]; if (strstr($imagethumb, 'thumbnailserver')) { $imgstringbits = explode('&',$imagethumb); $parsedimgstr=strstr($imgstringbits[1],'='); $parsedimgstr = substr($parsedimgstr,1); $thumbid = $parsedimgstr; } else { $imgstringbits = explode('/',$imagethumb); $thumbid = $imgstringbits[4]; } $imgfile=$cache . "/" . $thumbid . ".jpg"; # # now that we have the imagefile name check if we already have it in the cache: # - if we have it never delete it (why should we?) # - if we dont well... get it via curl # if (!file_exists($imgfile)) { $ch = curl_init (); $timeout = 5; curl_setopt ($ch, curlopt_useragent, 'mozilla/5.0 (windows; u; windows nt 5.1; pl; rv:1.9) gecko/2008052906 firefox/3.0'); curl_setopt ($ch, curlopt_autoreferer, true); curl_setopt ($ch, curlopt_url, $imagethumb); curl_setopt ($ch, curlopt_header, false); curl_setopt ($ch, curlopt_connecttimeout, $timeout); curl_setopt ($ch, curlopt_returntransfer, true); curl_setopt ($ch, curlopt_binarytransfer, true); curl_setopt ($ch, curlopt_verbose, 1); $rawdata = curl_exec ($ch); curl_close ($ch); if($rawdata) { $fp = fopen($imgfile, 'w'); fwrite($fp, $rawdata); fclose($fp); } else { # # if our curl action retrieves nothing then use the default image # $imgfile="images/default.jpg"; } } # # now that we have the image url create a div (hmm.. might drop that # styling later on in a seperate csss) containg the video thumb, link # and the description. when you like it you can add all the other # parameters that google returns like length etc... # $strbuffer .= "<div style=\"float:left;width:125px;height:130px;font-size:8px;font-family:arial;\" class=\"thumb\"><div>"; $strbuffer .= "<a href=\"#\" class=\"del\" id=\"$thumbid\"> add</a><br />"; $strbuffer .= "<a href=\"" . $gsearchresultclass["playurl"] . "\" target=\"_blank\">"; $strbuffer .= "<img src=\"" . $imgfile . "\" alt=\"" . $gsearchresultclass["title"] . "\" border=\"0\" width=\"120\">"; $strbuffer .= "</a><br />\n"; # # note that we also add a delete option, for now that only removes it from the page # but in the next version it should do an ajax call to write the id somewhere so # that we never see it again. # $strbuffer .= $gsearchresultclass["titlenoformatting"] . "<br />"; $strbuffer .= "</div></div>\n"; } return $strbuffer; } 上記を呼び出すための関数:function moviepage($tag, $cachename, $cachetime, $key) { $cache = $cachename . "/" . $tag; checkcache($cache); cleancachehtml($cache); $filename = $tag . ".html"; $spfile=$cache . "/" . $filename; if (file_exists($spfile) && filemtime($spfile) > $cachetime ) { $strbuffer = file_get_contents($spfile) . "<!-- " . $spfile . " from cache -->"; } else { $strbuffer = retrieveresults($key, $tag, $cache); } $strbuffer .= "<br clear=\"all\">"; $fp = fopen($spfile, 'w'); fwrite($fp, $strbuffer); fclose($fp); return $strbuffer; } ($キーはあなたのgoogle apiキーです)(http://code.google.com/intl/nl-nl/more/)私見残りはもっと単に "返されたものを手に入れてそれを投稿の内容に追加する+ダウンロードされたキャッシュされた親指を特集として設定すること?"p.s youtubeでは、古い動画は削除されることが多く、結果として見苦しい投稿を残すため、youtube動画を参照するときは、動画にサムネイルを投稿することをお勧めします。あなた自身の親指で少なくとも画像は永遠にそこに留まるので、後であなたはもともとそこに投稿したものの手がかりを得ることができます。