PHP ile Video Sitelerinden ID Alma ve Oynatma Fonksiyonu

PHP ile Video Sitelerinden ID Alma ve Oynatma Fonksiyonu

Ağustos 17, 2023

Okuma süresi: 5 dakika

Popüler video sitelerinden (Youtube, Google Drive, Facebook, Vimeo, Dailymotion, Ok.ru, Twitch) video linkleri ile oynatmak için gerekli olan ID bilgisini alıp embed kodu oluşturarak istediğiniz yerde videoları kullanmanızı sağlayalım.

Sözü fazla uzatmadan doğrudan hazırladığım getVideoID fonksiyonumuza göz atalım.

function getVideoID($link){
$isVideo    = false;
$videoID    = "";
$videoType  = "";
if (!empty($link)) {
if (preg_match('%(?:youtube(?:-nocookie)?.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu.be/)([^"&?/ ]{11})%i', $link, $match)) {
$isVideo   = true;
$videoID   = $match[1];
$videoType = 'youtube';
 
} else if(preg_match('/(?:https?://)?(?:[w-]+.)*(?:drive|docs).google.com/(?:(?:folderview|open|uc)?(?:[w-%]+=[w-%]*&)*id=|(?:folder|file|document|presentation)/d/|spreadsheet/ccc?(?:[w-%]+=[w-%]*&)*key=)([w-]{28,})/i', $link , $match)){
$isVideo   = true;
$videoID   = $match[1];
$videoType = 'google';
 
} else if (preg_match("#https?://vimeo.com/([0-9]+)#i", $link, $match)) {
$isVideo   = true;
$videoID   = $match[1];
$videoType = 'vimeo';
 
} else if (preg_match('#https?:.*?.(mp4|mov)#s', $link, $match)) {
$isVideo   = true;
$videoType = 'mp4';
$videoID   = $match[0];
 
}else if (preg_match('#https://www.dailymotion.com/video/([A-Za-z0-9]+)#s', $link, $match)) {
$videoID   = $match[1];
$videoType = 'daily';
$isVideo   = true;
 
} else if (preg_match('#(https://www.ok.ru/|https://ok.ru/)(video|live)/([A-Za-z0-9]+)#s', $link, $match)) {
$videoID   = $match[3];
$videoType = 'ok';
$isVideo   = true;
 
}else if (preg_match('@^(?:https?://)?(?:www.|go.)?twitch.tv(/videos/([A-Za-z0-9]+)|/([A-Za-z0-9]+)/clip/([A-Za-z0-9]+)|/(.*))($|?)@', $link, $match)) {
$text = explode('/', $match[1]);
if ($text[1] == 'videos') {
$videoType      = 'twitch_videos';
$videoID = $text[2];
$isVideo  = true;
}
else if ($text[2] == 'clip') {
$videoType      = 'twitch_clip';
$videoID = $text[3];
$isVideo  = true;
}
else if (!empty($text[1])){
$videoType      = 'twitch_streams';
$videoID = $text[1];
$isVideo  = true;
}
 
}else if (preg_match('~([A-Za-z0-9]+)/videos/(?:t.d+/)?(d+)~i', $link, $match) ) {
$videoID   = $match[0];
$videoType = 'facebook';
$isVideo   = true;
 
}
}
return ["videoID"=>$videoID,"videoType"=>$videoType,"isVideo"=>$isVideo];
}
Fonksiyonun kullanımı oldukça basit $link değişkenimize atadığımız video linkini getVideoID fonksiyonu içerisine gönderiyoruz ve bize gerekli ID bilgisi ve hangi siteye ait olduğunu array çıktısı olarak veriyor.

Örnek verecek olursak

 
$video=getVideoID($link);
 
print_r($video);
 
/*
Ekran çıktısı aşağıdaki gibidir
 
Array
(
    [videoID] => O8CCJKzj4BM
    [videoType] => youtube
    [isVideo] => 1
)
*/

fonksiyonun bize verdiği videoID yi isterseniz kendi player veya embed kodunuzda kullanabilir veya sonra kullanmak için kaydedebilirsiniz. 

Şimdi de getVideoID fonksiyonumuzun çıktısına uygun playerVideo fonksiyonu hazırlayalım.

function playVideo($params=[]){
    $data=[];
    $videoID   = $params["videoID"];
    $videoType = $params["videoType"];
    $isVideo   = $params["isVideo"];
    if(!$isVideo){
        $data["error"]= "Not found video";
    }
     
    if(empty($videoID)){
        $data["error"]= "Not found video id";
    }
     
    if(!isset($data["error"])){
        switch($videoType){
            case "youtube":
            $data["ok"]='<iframe src="https://www.youtube.com/embed/'.$videoID.'?playlist='.$videoID.'&enablejsapi=1&controls=0&fs=0&iv_load_policy=3&rel=0&showinfo=0&loop=1&autoplay=1" width="100%" height="100%" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen="" data-gtm-yt-inspected-6="true" id="200836533" title="YouTube video player"></iframe>';
            break;
             
            case "google":
            $data["ok"]='<iframe width="100%" height="100%" src="https://drive.google.com/file/d/'.$videoID.'/preview" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen="" data-gtm-yt-inspected-6="true"></iframe>';
            break;
             
            case "vimeo":
            $data["ok"]='<iframe width="100%" height="100%" src="https://player.vimeo.com/video/'.$videoID.'?api=1;title=0&byline=0&portrait=0&autoplay=1" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen="" data-gtm-yt-inspected-6="true"></iframe>';
            break;
             
            case "mp4":
            $data["ok"]='<video controls=""><source src="'.$videoID.'" type="'.$videoType.'" data-quality="360p" title="360p" label="360p" res="360"></video>';
            break;
             
            case "daily":
            $data["ok"]='<iframe width="100%" height="100%" src="//www.dailymotion.com/embed/video/'.$videoID.'?PARAMS" frameborder="0" allowfullscreen="" data-gtm-yt-inspected-6="true"></iframe>';
            break;
             
            case "ok":
            $data["ok"]='<iframe width="100%" height="100%" src="//ok.ru/videoembed/'.$videoID.'" allowfullscreen="" data-gtm-yt-inspected-6="true"></iframe>';
            break;
             
            case "twitch_videos":
            $link = 'https://player.twitch.tv/?video='.$videoID;
            $data["ok"]='<iframe width="100%" height="100%" src="'.$link.'&autoplay=false" allowfullscreen="" data-gtm-yt-inspected-6="true">';
            break;
             
            case "twitch_clip":
            $link = 'https://clips.twitch.tv/embed?clip='.$videoID;
            $data["ok"]='<iframe width="100%" height="100%" src="'.$link.'&autoplay=false" allowfullscreen>';
            break;
             
            case "twitch_streams":
            $data["ok"]='<script src= "https://player.twitch.tv/js/embed/v1.js"></script>
                <div id="twitch_player"></div>
                    <script type="text/javascript">
                        var options = {
                          width: "100%",
                          channel: "'.$videoID.'",
                        };
                        var player = new Twitch.Player("twitch_player", options);
                     </script>';
            break;
             
            case "facebook":
            $data["ok"]='<iframe width="100%" height="100%" src="https://www.facebook.com/plugins/video.php?href=https://www.facebook.com/'.urldecode($videoID).'&show_text=0&width=100" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true" allowFullScreen="true"></iframe>';
            break;
             
            default:
            $data["error"]= "Not found video type";
            break;
        }
    }
    return $data;
}

Yine birlikte kullanımına bakalım.

 
$video=getVideoID($link);
 
$player=playVideo($video);
 
print_r($player);
 
/*
Ekran çıktısı aşağıdaki gibidir
 
Örnek başarılı çıktısı:
 
Array
(
    [ok] =><iframe src="https://www.youtube.com/embed/O8CCJKzj4BM?playlist=O8CCJKzj4BM&enablejsapi=1&controls=0&fs=0&iv_load_policy=3&rel=0&showinfo=0&loop=1&autoplay=1" width="100%" height="100%" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen="" data-gtm-yt-inspected-6="true" id="156272038" title="Ramazon keldi - Ramazan Geldi Ramazan (Uzbekcha Nashida)"></iframe>
)
 
Örnek hata çıktısı:
 
Array
(
    [error] => Not found video id
)
*/