• 08-10-2014, 19:27:03
    #1
    Merhaba youtube botum var botum aramalara ulaşıyor ancak devamında aşagıdaki hatayı veriyor
    önceden böyle bi sorun yoktu kod yapısını degiştirmişler gerekli düzenlemeleri yaptım ancak böyle bi sorun çıktı.

    Warning: file_get_contents(http://www.youtube.com/watch?v=xxxx" data-visibility-tracking="CBgQ3DAYACITCIDilei3ncECFWWGwgodXUQAnij0 JECt_9DxaNkCI=) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in /home/xxx/public_html/index.php on line 73


    73.satır :
    $info2 = file_get_contents("http://www.youtube.com/watch?v=".$birincivideolinki);
  • 08-10-2014, 20:53:40
    #2
    Üyeliği durduruldu
    tarayıcı olmadığı için 400 hatası aldığını düşünüyorum.

    curl kullanıp tarayıcı belirlediğinizde hata almazsınız
  • 08-10-2014, 23:48:12
    #3
    Hocam öncelikle urlencode ile encodeladıktan sonra file_get_contents() fonksiyonunu kullanın.

    İkinciside crawler ınızdaki regex ifadesini yeniden gözden geçirmeyi deneyin. Çünkü belli ki sadece videonun id si gelmiyor.

    İyi Çalışmalar
  • 09-10-2014, 00:23:03
    #4
    deepkod adlı üyeden alıntı: mesajı görüntüle
    Hocam öncelikle urlencode ile encodeladıktan sonra file_get_contents() fonksiyonunu kullanın.

    İkinciside crawler ınızdaki regex ifadesini yeniden gözden geçirmeyi deneyin. Çünkü belli ki sadece videonun id si gelmiyor.

    İyi Çalışmalar
    hocam,
    $aramaislemi = file_get_contents("https://www.youtube.com/results?search_query=".$mal); 
    
    preg_match_all ('!<div class="yt-lockup yt-lockup-tile yt-lockup-video vve-check clearfix yt-uix-tile" data-context-item-id="(.*?)">!s',$aramaislemi,$birincivideolinki); 
    
    $birincivideolinki = $birincivideolinki[1][0];
    $infoz1 = $infoz1[1];
    $info2 = file_get_contents("http://www.youtube.com/watch?v=".$birincivideolinki);
    
    preg_match('!<p id="eow-description" >(.*?)</p>!s',$info2,$infoz1);
    şöyle olarak yazı aratılıyor video linkleri alınıyor gerisinde ilk mesajdaki hata geliyor.
  • 09-10-2014, 00:42:20
    #5
    Hocam bu karmaşık kod yerine benim kullandığım youtube gdata api sini kullansanız daha stabil çalışır bir sistem kurabilirsiniz bence. Örnek kod aşağıda ;

    // kelime
    $search = "deepkod"; 
    
     // burada kelimeyi url şekline çevirdik 
    $search = urlencode($search);
    
     // youtube apiyi kullanarak kelimeyi arattık json şeklinde max. 5 result döndü
    $resultArray = json_decode(file_get_contents("http://gdata.youtube.com/feeds/api/videos?q=" . $search . "&format=5&max-results=5&v=2&alt=jsonc&sortby=relevance"), true); 
    
    // buradanda ilk sonucun youtube id sini aldık. ( isterseniz foreach a sokarak tüm sonuçlarda gezinebilirsiniz. )
    $getFirstId = ($resultArray["data"]["items"][0]['id'];
    Youtube gdata search api docs => buradan

    örnek sorgu => buradan

    İyi Geceler.
  • 09-10-2014, 00:51:56
    #6
    deepkod adlı üyeden alıntı: mesajı görüntüle
    Hocam bu karmaşık kod yerine benim kullandığım youtube gdata api sini kullansanız daha stabil çalışır bir sistem kurabilirsiniz bence. Örnek kod aşağıda ;

    // kelime
    $search = "deepkod"; 
    
     // burada kelimeyi url şekline çevirdik 
    $search = urlencode($search);
    
     // youtube apiyi kullanarak kelimeyi arattık json şeklinde max. 5 result döndü
    $resultArray = json_decode(file_get_contents("http://gdata.youtube.com/feeds/api/videos?q=" . $search . "&format=5&max-results=5&v=2&alt=jsonc&sortby=relevance"), true); 
    
    // buradanda ilk sonucun youtube id sini aldık. ( isterseniz foreach a sokarak tüm sonuçlarda gezinebilirsiniz. )
    $getFirstId = ($resultArray["data"]["items"][0]['id'];
    Youtube gdata search api docs => buradan

    örnek sorgu => buradan

    İyi Geceler.
    Hocam teşekkürler +1

    ancak bi sorum daha var bu sorguda ben etiket, "kaynakdan : keywords" ve açıklamaları çekiyordum burda yapılıabilirmi ?
  • 09-10-2014, 01:09:05
    #7
    Tabiki hocam hertürlü bilgisini çekebilirsiniz. Fakat keywords ü bilemiyorum ama bahsettiğiniz video açıklaması ise "id" yerine "description" yazarak çekebilirsiniz. Daha videonun bir çok özelliğini çekebilirsiniz.

    Sanırım arama sonucunda açıklamanın bir kısmı dönüyor. Videonun detaylı bilgileri için.

    https://gdata.youtube.com/feeds/api/videos/{ BURAYA VİDEO İD Sİ }?v=2&format=5&alt=jsonc
    şeklinde sorgu yaparsanız video açıklamasına "description" şeklinde ulaşabilirsin hocam. Fakat keywords den kastetdiğini tam anlayamadım.

    Örnek json dönütü -> buradan
  • 09-10-2014, 01:16:53
    #8
    deepkod adlı üyeden alıntı: mesajı görüntüle
    Tabiki hocam hertürlü bilgisini çekebilirsiniz. Fakat keywords ü bilemiyorum ama bahsettiğiniz video açıklaması ise "id" yerine "description" yazarak çekebilirsiniz. Daha videonun bir çok özelliğini çekebilirsiniz.

    Sanırım arama sonucunda açıklamanın bir kısmı dönüyor. Videonun detaylı bilgileri için.

    https://gdata.youtube.com/feeds/api/videos/{ BURAYA VİDEO İD Sİ }?v=2&format=5&alt=jsonc
    şeklinde sorgu yaparsanız video açıklamasına "description" şeklinde ulaşabilirsin hocam. Fakat keywords den kastetdiğini tam anlayamadım.

    Örnek json dönütü -> buradan
    hocam ben başlıgı aratıp, videolara girince kaynak kodundan etiket açıklama çekiyordum




    ayrıca
     $birincivideolinki = urlencode($birincivideolinki);
    bu kodu ekleyince hata kalktı şuan çalışıyor hiç birşey degiştirmedim

    teşekkürler