19

YouTube API からのビデオのリンクを使用して、YouTube ビデオのサムネイル コレクションにアクセスするにはどうすればよいですか。たとえば、変数に保存されているビデオIDを使用して、PHPを使用してサムネイルをWebサイトに表示したい$link

4

5 に答える 5

57

YouTube は、さまざまなデバイス用にさまざまな種類のサムネイルをサーバーに保存しています。すべての YouTube 動画が持つ動画 ID を使用してアクセスできます。$linkビデオの ID を保持する変数を使用し、リンクの video_ID の代わりに変数を使用して、Web サイトに画像を表示できます。

低品質のサムネイル:

http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/sddefault.jpg

中品質のサムネイル:

http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/mqdefault.jpg

高品質のサムネイル:

http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/hqdefault.jpg

最高品質のサムネイル:

http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/maxresdefault.jpg

例:

次のビデオのサムネイルにアクセスする場合:

https://www.youtube.com/watch?v=Q-GYwhqDo6o

動画 ID : Q-GYwhqDo6o

動画のサムネイル リンクは次のようになります。

http://img.youtube.com/vi/Q-GYwhqDo6o/mqdefault.jpg

それが役に立てば幸い。コーディングをお楽しみください。

于 2015-09-02T06:51:01.267 に答える
7

以下のコードを使用できます。それは私にとって仕事です。必要に応じて画質を選択します。

<?php
$youtubeID = getYouTubeVideoId('youtube video url');
$thumbURL = 'https://img.youtube.com/vi/' . $youtubeID . '/mqdefault.jpg';
print_r($thumbURL);

function getYouTubeVideoId($pageVideUrl) {
    $link = $pageVideUrl;
    $video_id = explode("?v=", $link);
    if (!isset($video_id[1])) {
        $video_id = explode("youtu.be/", $link);
    }
    $youtubeID = $video_id[1];
    if (empty($video_id[1])) $video_id = explode("/v/", $link);
    $video_id = explode("&", $video_id[1]);
    $youtubeVideoID = $video_id[0];
    if ($youtubeVideoID) {
        return $youtubeVideoID;
    } else {
        return false;
    }
}
?>
于 2019-01-11T09:59:33.603 に答える
1

Google は v.3 で API を変更し、Python のコードは正確に機能します。PHPに使えます。

def get_small_image_url(self):
    return 'http://img.youtube.com/vi/%s/%s.jpg' % (self.video_id, random.randint(1, 3))

def get_hqdefault(self):
    return 'http://i1.ytimg.com/vi/%s/hqdefault.jpg' % self.video_id

def get_mqdefault(self):
    return 'http://i1.ytimg.com/vi/%s/mqdefault.jpg' % self.video_id

def get_sddefault(self):
    return 'http://i1.ytimg.com/vi/%s/sddefault.jpg' % self.video_id

def get_video_id(self, url):
    link = urlparse.urlparse(url)
    if link.hostname == 'youtu.be':
        return link.path[1:]
    if link.hostname in ('www.youtube.com', 'youtube.com'):
        if link.path == '/watch':
            state = urlparse.parse_qs(link.query)
            return state['v'][0]
        if link.path[:7] == '/embed/':
            return link.path.split('/')[2]
        if link.path[:3] == '/v/':
            return link.path.split('/')[2]
    return False

def get_meta(self, video_id):
    api_token = **'here your API_Token'**
    url = 'https://www.googleapis.com/youtube/v3/videos?part=snippet&id=%s&key=%s' % (video_id, api_token)
    response = json.load(urllib.urlopen(url))
    print response
    context = {
        'title': response['items'][0]['snippet']['localized']['title'],
        'desc': response['items'][0]['snippet']['localized']['description']
    }
    return context

def save(self, force_insert=False, force_update=False, using=None,
         update_fields=None):
    video_id = self.get_video_id(self.url)
    meta = self.get_meta(video_id)
    self.video_id = video_id
    self.title = meta['title']
    self.description = meta['desc']
    super(Videos, self).save(
        force_insert=force_insert,
        force_update=force_update,
        using=using,
        update_fields=update_fields
    )
于 2015-09-02T06:58:16.947 に答える