PHP kôd:
<?php
interface IVideoEmbed {
public function getImgUrl();
public function getEmbedCode();
}
class VideoEmbedYouTube implements IVideoEmbed {
private $_id;
public function __construct($id) {
$this->_id = $id;
}
public function getImgUrl() {
return sprintf("http://img.youtube.com/vi/%s/default.jpg", $this->_id);
}
public function getEmbedCode() {
return sprintf("<object width=\"425\" height=\"344\"><param name=\"movie\" value=\"http://www.youtube.com/v/%s&hl=en&fs=1&rel=0\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/v/%s&hl=en&fs=1&rel=0\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"425\" height=\"344\"></embed></object>", $this->_id, $this->_id);
}
}
class VideoEmbedGoogleVideo implements IVideoEmbed {
private $_id;
public function __construct($id) {
$this->_id = $id;
}
public function getImgUrl() {
$vrss = file_get_contents("http://video.google.com/videofeed?docid=" . $this->_id);
if(!empty($vrss))
{
preg_match('/<media:thumbnail url="([^"]+)/',$vrss,$thumbnail_array);
$thumbnail = $thumbnail_array[1];
//Remove amp;
$thumbnail = str_replace('amp;','',$thumbnail);
}
return $thumbnail;
}
public function getEmbedCode() {
return sprintf("<embed id=\"VideoPlayback\" src=\"http://video.google.com/googleplayer.swf?docid=%s&hl=en&fs=true\" style=\"width:400px;height:326px\" allowFullScreen=\"true\" allowScriptAccess=\"always\" type=\"application/x-shockwave-flash\"> </embed>", $this->_id);
}
}
class VideoEmbedFactory {
static public function getVideoEmbed($url) {
if( preg_match('/.*youtube\.com\/watch\?v=([A-Za-z0-9._%-]*)[&\w;=\+_\-]*/', $url, $matches) ) {
$extractedId = $matches[1];
return new VideoEmbedYouTube($extractedId);
}
if( preg_match('/.*video\.google\.com\/videoplay\?docid=([A-Za-z0-9._%-]*)[&\w;=\+_\-]*/', 'http://video.google.com/videoplay?docid=5547481422995115331#', $matches) ) {
$extractedId = $matches[1];
return new VideoEmbedGoogleVideo($extractedId);
}
}
}
$embed = VideoEmbedFactory::getVideoEmbed("http://www.youtube.com/watch?v=LZIjglFy5jQ");
echo '<img src="' . $embed->getImgUrl() . '" />';
echo $embed->getEmbedCode();
echo '<hr />';
$embed = VideoEmbedFactory::getVideoEmbed("http://video.google.com/videoplay?docid=5547481422995115331#");
echo '<img src="' . $embed->getImgUrl() . '" />';
echo $embed->getEmbedCode();
?>
Služi za embedovanje video klipova sa raznih servisa na vaš sajt. Klase su kreirane na osnovi factory design patterna i mogu se lako proširivati novim servisima.
Imao sam potrebe da na par sajtova implementiram embed sa drugih servisa, pa sam je tada napisao.