Bildiğimiz üzere PHP Curl veya file_get_contents yöntemi ile YouTube araması yapmak YouTube'un son algoritma ve güvenlik önlemleri neticesinde sonuç almak zorlaştı. Yapılan sorgular ya captcha önlemine takılmakta ya da boş hata sayfasına otomatik olarak yönlendirilmekte. Aşağıdaki örnekte
file_get_contents yöntemi ile doğrudan bağlanıldığında karşımıza çıkan hata sayfasını göreceksiniz.
Yukarıdaki örnekte görüldüğü üzere YouTube'un güvenlik önlemi devreye girdiği için bizi direk kendi sunucumuzdaki hata sayfasına yönlendiriyor. Bu nedenle YouTube üzerinden veri çekemiyoruz. Şimdi bunu aşacak ve dahi sınırsız sorgu imkanı bize sunacak kodu sizler ile paylaşıyorum. Bu sayede YouTube'dan sınırsız sorgu ile arama yapabileceksiniz.
Verdiğim kod ile YouTube'un yönlendirme isteğini iptal ediyoruz. Yönlendirme iptal edildikten sonra tüm veriler YouTube'un kendi bünyesindeki bir script kodunda json ile depolanıyor. Biz de bu depolanan verileri
json_decode ile parse edip tüm verileri okuyoruz. Bu sayede YouTube'a tam erişim sağlamadan tüm verileri okumuş ve bizim işimize yarayan bölümleri php ile yazdırmış oluyoruz.
<?php
set_time_limit(0);
error_reporting(0);
$correctString = $_GET["video_title"];
$youtubeUrl = "https://www.youtube.com/results?search_query=".urlencode($correctString)."&sp=EgIQAQ%253D%253D&hl=tr&gl=TR";
$getHTML = file_get_contents($youtubeUrl);
$data = str_replace("https://www.youtube.com/", "", $getHTML);
preg_match('@var ytInitialData =(.*?)</script>@si', $data, $bilgi);
$json = str_replace(array("};", "// scraper_data_end"), array("}", ""), $bilgi[1]);
$youtube_data = json_decode($json); ?>
<b>Toplam Sonuç</b> : <?php echo $youtube_data->estimatedResults;?><br /><br />
<?php
$say = "0";
foreach($youtube_data->contents->twoColumnSearchResultsRenderer->primaryContents->sectionListRenderer->contents as $datas) {
foreach($datas->itemSectionRenderer->contents as $datas2) {
if($datas2->videoRenderer->videoId == "") { } else {
$say++;
$description = "";
foreach($datas2->videoRenderer->descriptionSnippet->runs as $descriptions) {
$description .= $descriptions->text;
}
?>
<b>Video Linki</b> : <?php echo "https://www.youtube.com/watch?v=".$datas2->videoRenderer->videoId."";?><br />
<b>Video Resmi</b> : <?php echo "http://img.youtube.com/vi/".$datas2->videoRenderer->videoId."/mqdefault.jpg";?><br />
<b>Video Title</b> : <?php echo $datas2->videoRenderer->title->runs[0]->text;?><br />
<b>Video Açıklama</b> : <?php echo $description;?><br />
<b>Video İzlenme</b> : <?php echo $datas2->videoRenderer->viewCountText->simpleText;?><br />
<b>Video Süresi</b> : <?php echo $datas2->videoRenderer->lengthText->simpleText;?><br />
<b>Channel Adı</b> : <?php echo $datas2->videoRenderer->longBylineText->runs[0]->text;?><br />
<b>Channel ID</b> : <?php echo $datas2->videoRenderer->longBylineText->runs[0]->navigationEndpoint->browseEndpoint->browseId;?><br />
<b>Channel Resim</b> : <?php echo $datas2->videoRenderer->channelThumbnailSupportedRenderers->channelThumbnailWithLinkRenderer->thumbnail->thumbnails[0]->url;?><br />
-----------------------------------------------------------------------------------------------------------------<br /><br />
<?php } } } if($say == "0") {echo "Herhangi Bir Sonuç Bulunamadı...";} ?>Demo: https://carsipazar.shop/youtube?video_title=Tarkan Kaynak Dosyaları ve YouTube Mp3 İndirme Kodlamaları: https://www.r10.net/ucretsiz-scriptl...siz-sorgu.html