Lấy Thông Tin Hình Ảnh Thu Nhỏ Và URL Video Từ YouTube Và Vimeo

/**
 * Lấy thông tin hình ảnh thu nhỏ và URL video từ YouTube.
 *
 * @param string $youtube_id ID video của YouTube.
 * @return array Thông tin video bao gồm URL hình ảnh thu nhỏ và URL video.
 */
function get_youtube_details($youtube_id) {
    $video = [];
    $video_thumbnail_url_string = 'https://img.youtube.com/vi/%s/%s';

    // Kiểm tra sự tồn tại của video trên YouTube.
    $video_check = wp_remote_get('https://www.youtube.com/oembed?format=json&url=https://www.youtube.com/watch?v=' . $youtube_id);
    
    if (200 === wp_remote_retrieve_response_code($video_check)) {
        // Kiểm tra sự tồn tại của hình ảnh thu nhỏ chất lượng cao.
        $remote_headers = wp_remote_head(sprintf($video_thumbnail_url_string, $youtube_id, 'maxresdefault.jpg'));
        
        $video['video_thumbnail_url'] = (404 === wp_remote_retrieve_response_code($remote_headers)) 
            ? sprintf($video_thumbnail_url_string, $youtube_id, 'hqdefault.jpg')
            : sprintf($video_thumbnail_url_string, $youtube_id, 'maxresdefault.jpg');

        $video['video_url'] = 'https://www.youtube.com/watch?v=' . $youtube_id;
        $video['video_embed_url'] = 'https://www.youtube.com/embed/' . $youtube_id;
    }

    return $video;
}

/**
 * Lấy thông tin hình ảnh thu nhỏ và URL video từ Vimeo.
 *
 * @param string $vimeo_id ID video của Vimeo.
 * @return array Thông tin video bao gồm URL hình ảnh thu nhỏ và URL video.
 */
function get_vimeo_details($vimeo_id) {
    $video = [];

    // Lấy dữ liệu video từ Vimeo API.
    $vimeo_data = wp_remote_get('https://vimeo.com/api/v2/video/' . intval($vimeo_id) . '.json');
    
    if (200 === wp_remote_retrieve_response_code($vimeo_data)) {
        $response = json_decode($vimeo_data['body']);
        $large = isset($response[0]->thumbnail_large) ? $response[0]->thumbnail_large : '';

        if ($large) {
            // Kiểm tra sự tồn tại của hình ảnh thu nhỏ lớn.
            $larger_test = explode('_', $large);
            $test_result = wp_remote_head($larger_test[0]);
            
            if (200 === wp_remote_retrieve_response_code($test_result)) {
                $large = $larger_test[0];
            }
        }

        // Chúng tôi buộc phải sử dụng định dạng JPG vì WebP vẫn còn vấn đề.
        $video['video_thumbnail_url'] = isset($large) ? $large . '.jpg' : false;
        $video['video_url'] = $response[0]->url;
        $video['video_embed_url'] = 'https://player.vimeo.com/video/' . $vimeo_id;
    }

    return $video;
}