youtube - 如何从youtube缩短的链接获取缩略图

标签 youtube youtube-api

我正在使用下面找到的代码从提交的网址中获取YouTube视频的缩略图网址。唯一的问题是,如果有人使用视频URL的缩短版本(例如http://youtube.be/HMYMSvlow_k),则它不起作用。如何修改此代码,以便处理youtube.be版本以及其他更长的链接?

function get_youtube_screen_link( $url = '', $type = 'default', $echo = true ) {
if( empty( $url ) )
    return false;

if( !isset( $type ) )
    $type = '';

$url = esc_url( $url );

preg_match("|[\\?&]v=([^&#]*)|",$url,$vid_id);

if( !isset( $vid_id[1] ) )
    return false;

$img_server_num =  'i'. rand(1,4);

switch( $type ) {
    case 'large':
        $img_link = "http://{$img_server_num}.ytimg.com/vi/{$vid_id[1]}/0.jpg";
        break;
    case 'first':
        // Thumbnail of the first frame
        $img_link = "http://{$img_server_num}.ytimg.com/vi/{$vid_id[1]}/1.jpg";
        break;
    case 'small':
        // Thumbnail of a later frame(i'm not sure how they determine this)
        $img_link = "http://{$img_server_num}.ytimg.com/vi/{$vid_id[1]}/2.jpg";
        break;
    case 'default':
    case '':
    default:
        $img_link = "http://{$img_server_num}.ytimg.com/vi/{$vid_id[1]}/default.jpg";
        break;
}
if( $echo )
    echo $img_link;
else
    return $img_link;

}

最佳答案

function getVideoId($url)
{
$parsedUrl = parse_url($url);
 if ($parsedUrl === false)
return false;

 if (!empty($parsedUrl['query']))
{
$query = array();
parse_str($parsedUrl['query'], $query);
if (!empty($query['v']))
    return $query['v'];
}

if (strtolower($parsedUrl['host']) == 'youtu.be')
return trim($parsedUrl['path'], '/');

return false;
}

$vid_id = getVideoId($video_code);
http://i3.ytimg.com/vi/<?php echo $vid_id; ?>/default.jpg

关于youtube - 如何从youtube缩短的链接获取缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10299949/

相关文章:

youtube - 在直播中插入liveCuePoints-禁止接收错误403

youtube - 在Discord Bot中使用YouTube API

youtube - YouTube “end=”嵌入标签不起作用?

php - YouTube-dl服务器直接文件下载

youtube - 如何通过 YouTube API 获取用户链接?

ios - 如何使用 "google-api-objectivec-client"获取/提交任何 youtube 视频的评论

jquery - 将youtube视频添加到网络应用

python - Youtube API - 仅搜索音乐视频

ios youtube 视频继续在后台播放

youtube - React-native-video 播放 Vimeo 和 YouTube