98 lines
3.3 KiB
PHP
98 lines
3.3 KiB
PHP
|
<?php
|
||
|
|
||
|
function getVimeoId($url)
|
||
|
{
|
||
|
if (preg_match('#(?:https?://)?(?:www.)?(?:player.)?vimeo.com/(?:[a-z]*/)*([0-9]{6,11})[?]?.*#', $url, $m)) {
|
||
|
return $m[1];
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
function getYoutubeId($url)
|
||
|
{
|
||
|
$parts = parse_url($url);
|
||
|
if (isset($parts['host'])) {
|
||
|
$host = $parts['host'];
|
||
|
if (
|
||
|
false === strpos($host, 'youtube') &&
|
||
|
false === strpos($host, 'youtu.be')
|
||
|
) {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
if (isset($parts['query'])) {
|
||
|
parse_str($parts['query'], $qs);
|
||
|
if (isset($qs['v'])) {
|
||
|
return $qs['v'];
|
||
|
} else if (isset($qs['vi'])) {
|
||
|
return $qs['vi'];
|
||
|
}
|
||
|
}
|
||
|
if (isset($parts['path'])) {
|
||
|
$path = explode('/', trim($parts['path'], '/'));
|
||
|
return $path[count($path) - 1];
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
function getVideoThumbnailByUrl($url, $format = 'small')
|
||
|
{
|
||
|
if (false !== ($id = getVimeoId($url))) {
|
||
|
$hash = unserialize(file_get_contents("https://vimeo.com/api/v2/video/$id.php"));
|
||
|
/**
|
||
|
* thumbnail_small
|
||
|
* thumbnail_medium
|
||
|
* thumbnail_large
|
||
|
*/
|
||
|
if ('medium' === $format) {
|
||
|
return preg_replace("/^http:/i", "https:", $hash[0]['thumbnail_medium']);
|
||
|
} else if ('large' === $format) {
|
||
|
return preg_replace("/^http:/i", "https:", $hash[0]['thumbnail_large']);
|
||
|
}
|
||
|
return preg_replace("/^http:/i", "https:", $hash[0]['thumbnail_small']);
|
||
|
// return $hash[0]['thumbnail_small'];
|
||
|
} elseif (false !== ($id = getYoutubeId($url))) {
|
||
|
/**
|
||
|
* http://img.youtube.com/vi/<insert-youtube-video-id-here>/0.jpg
|
||
|
* http://img.youtube.com/vi/<insert-youtube-video-id-here>/1.jpg
|
||
|
* http://img.youtube.com/vi/<insert-youtube-video-id-here>/2.jpg
|
||
|
* http://img.youtube.com/vi/<insert-youtube-video-id-here>/3.jpg
|
||
|
*
|
||
|
* http://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg
|
||
|
* http://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
|
||
|
* http://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
|
||
|
* http://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
|
||
|
* http://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
|
||
|
*/
|
||
|
if ('medium' === $format) {
|
||
|
return 'https://img.youtube.com/vi/' . $id . '/hqdefault.jpg';
|
||
|
} else if ('large' === $format) {
|
||
|
return 'https://img.youtube.com/vi/' . $id . '/sddefault.jpg';
|
||
|
} else if ('original' === $format) {
|
||
|
return 'https://img.youtube.com/vi/' . $id . '/maxresdefault.jpg';
|
||
|
}
|
||
|
return 'https://img.youtube.com/vi/' . $id . '/mqdefault.jpg';
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
function getEmbedVideo($url)
|
||
|
{
|
||
|
$code = <<<EEE
|
||
|
<style>
|
||
|
.vec { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; }
|
||
|
.vec iframe, .vec object, .vec embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
|
||
|
</style>
|
||
|
EEE;
|
||
|
|
||
|
if (false !== ($id = getVimeoId($url))) {
|
||
|
$code .= <<<EEE
|
||
|
<div class='vec'><iframe src='https://player.vimeo.com/video/$id' frameborder='0' webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></div>
|
||
|
EEE;
|
||
|
} elseif (false !== ($id = getYoutubeId($url))) {
|
||
|
$code .= <<<EEE
|
||
|
<div class='vec'><iframe src='https://www.youtube.com/embed/$id' frameborder='0' allowfullscreen></iframe></div>
|
||
|
EEE;
|
||
|
} else {
|
||
|
$code = false;
|
||
|
}
|
||
|
return $code;
|
||
|
}
|