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];
$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"
:
$data
[
"ok"
]=
'<iframe width="100%" height="100%" src="'
.
$link
.
'&autoplay=false" allowfullscreen="" data-gtm-yt-inspected-6="true">'
;
break
;
case
"twitch_clip"
:
$data
[
"ok"
]=
'<iframe width="100%" height="100%" src="'
.
$link
.
'&autoplay=false" allowfullscreen>'
;
break
;
case
"twitch_streams"
:
<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
)
*/