PHP ile Video Sitelerinden ID Alma ve Oynatma Fonksiyonu

PHP ile Video Sitelerinden ID Alma ve Oynatma Fonksiyonu

  • 674 Kez Okundu
  • PHP & MySQL
  • 0 Yorum
  • 2020-04-30 11:22:24

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

$link="https://www.youtube.com/watch?v=O8CCJKzj4BM";

$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"]='';
			break;
			
			case "google":
			$data["ok"]='';
			break;
			
			case "vimeo":
			$data["ok"]='';
			break;
			
			case "mp4":
			$data["ok"]='';
			break;
			
			case "daily":
			$data["ok"]='';
			break;
			
			case "ok":
			$data["ok"]='';
			break;
			
			case "twitch_videos":
			$link = 'https://player.twitch.tv/?video='.$videoID;
			$data["ok"]='';
			break;
			
			default:
			$data["error"]= "Not found video type";
			break;
		}
	}
	return $data;
}
 

 

 

Yine birlikte kullanımına bakalım.

$link="https://www.youtube.com/watch?v=O8CCJKzj4BM";

$video=getVideoID($link);

$player=playVideo($video);

print_r($player);

/*
Ekran çıktısı aşağıdaki gibidir

Örnek başarılı çıktısı:

Array
(
    [ok] =>
)

Örnek hata çıktısı:

Array
(
    [error] => Not found video id
)
*/

 

Takıldığınız yer olursa sormaktan çekinmeyiniz. Aklıma gelen siteler şimdilik bu kadar, şu sitede olsun dediğiniz olursa yorumlarda belirtebilirsiniz.

DEMO İÇİN TIKLA

Gelişmeleri Github üzerinden takip edebilirsiniz.

Faydalı olması dileğiyle.

Sevgi ve Bilgiyle Kalın...

Henüz kimse yorum eklememiş

YORUM YAPMAK İSTER MİSİN?

    Sponsor Reklamlar
    Son Yorumlar
    Etiket Bulutu
    C#PopupFormOtomatikProgramBaşlatmaBaşlangıçBasitEkran Koruyucuc#ekran görüntüsümail göndermeexedllbirleştirmekIL MergePhpMSSQL BAĞLANTIGerçekIPRealTextBinaryConvertÇalışmaSüreHesaplamakBulmakCssjQueryHtmlScroll TopYukarı ÇıkOnMinimizeControlBoxSimge DurumunaKüçültInternetGetConnectedStateİnternetBağlantıKontrolŞifre MatikPassword GeneratorHash ŞifrelemeMD5SHA1SHA256SHA384SHA512Asimetrik ŞifrelemeRSASimetrik ŞifrelemeKriptoŞifrelemeAlgoritmaDESRC2RijndaelTripleDESKeyLogKlavye DinleTuş YakalamaGlobal HookDialogResultÇıkış MesajıUyarı MesajıFormClosingMySQLConnector/NetKullanımSoruCheckBoxListViewÇoklu SilmebiosdramexploitkontrolgüvenlikinteljavascriptrowhammerscriptPHPAdmin PanelResponsiveXtbadminFreeÜcretsizWifiWirelessKeysŞifreAnahtarPasswordKablosuz AğDepolamaŞifreler NeredeKablosuz ŞifreAndroidTelefonNasılYazılırProgramlama DiliHesap MakinesiSEONedirNasıl YapılırAnalizGoogleLinkÖzgünMobilKonuResim Robots.txtSite MapŞifreli GirişŞifreli FormŞifre KoymaŞifreli AçılışCompilingDebuggingDerlemeKarma ModMixed ModeApp.ConfigKurbanBayramMübarek OlsunBlogScriptYonetimAdminPanelText EditorMSHTMLEditorYazıDüzenleyiciEasyAppKolayUygulamaÇalıştırmaAkıllı TelefonKlavyeiOSKeyboardEl YazısıCalculatorMyScriptHand WritingDosya YöneticisiFile ExplorerFTPBluetoothRootTask ManagerGörev YöneticisiSystemTargetWeb Application PentestErrorShowHideHataGösterGizlePDOSelectInsertUpdateDeleteConnectSeçimEklemeSilmeGüncellemeMsSQLVeritabanıÇeviriçiDatabaseConverterDbConvertMaskeli IPGerçek IPTarayıcı Tespitİşletim Sistemi TespitTekil Ziyaretçi BilgileriAktif Ziyaretçi BilgileriZiyaretçi SayacıVirüsTemizlemeFirewallServiceSecurityServiceTimeServicePentestGüvenliksızma TestiuniscanwindowslinuxperlDosyaKlasörListelemekFileFolderListInternetDownloadUploadSpeedMonitorServisMsconfigStartupRunServiceIOSMatematikDenklemÇözümKameraKablosuzinternetHotspotPaylaşımAyarlarKaliLinuxSharedTerminalÖsymDuyuruTimeTimeZoneDateZamanTarihdate()time()FreelancerSerbestÇalışanJobsİşlerWebSiteVersionSürümGeçişUbuntuSunucuApachephpinfo()phpversion()FonksiyonHerseyiKopyalacopyallcopySızma TestiSQLMapWindowsPython810HotSpotWi-FiWlannetshhostednetworkAutoWlanJsGeri SayımTextAreaOtomatik KayıtSayacSaniyeCountDownXtbadminV2AjaxJavaScriptNumaraFormatPhoneNumberFormatTelefonNumarasıDebuggerDetectUnpackerDisassemblerSecurityReverseEngineeringAlgorithmMacDKHOSCTFCapture The FlagForensicTriviaIntelligenceCRC32CRYPTPASSWORD_HASHWin10StoreMağazaMicrosoftReInstallWSLPowerShellPOSTCyberSiberAdli BilişimHackerUSBCDLiveToolsBruterNmapMSSQL ServerMS SQL ExpressMS AccessOracleIBM DB2SybaseInterbaseInformixExceldBase DbfVisual FoxProMySQLConnectionŞifreleri BulCMDLaZagneEthernetTuxCutNetCutNetKillPerformansCronTabCronJobRestartStopStartBashShellWireSharkFlagUSOMBTKBase64QRÇözümlerWriteUpWrite-UpFinalReconOSINTToolScannerWebsiteSiber GüvenlikPhishingVPNWannacryMobileDeviceFunctionMobil AlgılaMobil TespitisMobilephp mobilJavascriptYazı EfektKayan YazıText EffectsearchBoxinputclassplaceholdersetIntervalsetTimeoutJSpreventBackwindowpushStatehistoryonloadblock browser back buttonVPN Nediranonimtorucuz ürünucuzurunum.commarket kıyaslaürün kıyaslakıyaslakarşılaştıra101şokhappy centermigroscarrefoursabizim marketkıyasürün fiyatıfiyat kıyaslaucuz fiyatfiyat sorVideoEmbedPlayerVideoIDgetVideoIDIframeCreditCardCard DetectKart AlgılaKart TespitKredi Kartı TespitVisaMastercard