youtube video yerel üzerinde başarıyla downloaed, ancak sunucu (çevrimiçi) sadece 0 bayt flv indiriyor

2 Cevap php

i m using php tube class to download youtube video. Video is automatically downloaded in a folder by submitting youtube video url.

Her şey yerel (XAMPP) ince çalışıyor, ama sunucu (online) Bu yüklediğinizde, SONRA SADECE 0 bayt flv dosya kaydedilir.

i de (yerel ve küresel) yan hem kod hata ayıklama.

i (local üzerine) bu gibi url almak

http://www.youtube.com/get_video?video_id=1jNWCFwqPvM&=vjVQa1PpcFMyYCECyfmYENWklpwXGyhVgJpSFPgNAEc%3D

server i böyle bağlantı var oysa

http://www.youtube.com/ get_video?video_id=1jNWCFwqPvM&t=vjVQa1PpcFNS3SPxIXi8hy-NF4qZFFrScDXCjGLLrLc%3D

when i copy the link getting from local vepaste on browser then a download box appear on browser, whereas when i copy the link getting from server vepaste on browser then only a blank page appears

  1. benim sorunu çözmek lütfen, nerede hata olduğunu??
  2. nasıl armut sunucuda yüklü ya da olmadığını bilmek?
  3. Sunucu tarafında bazen ben gibi bağlantı olsun

    http://www.youtube.com/get_video?video_id=1jNWCFwqPvM&t=vjVQa1PpcFNS3SPxIXi8hy-NF4qZFFrScDXCjGLLrLc%3D

ama bazen ben sadece almak

http://www.youtube.com/get_video?video_id=&t=

nasıl bu çözmek için kılavuz beni lütfen?

UPDATE:

i tüm kod hata ayıklama ve sunucu üzerinde file_get_contents() return string (0) yerel üzerine bazı tamsayı değer döndürür oysa bulundu. allow_url_fopen sunucu onmy olduğu

bu index.php

include_once('functions.php');  
$url =  $_POST['url']; // here is url of youtube video
$pattern = getPatternFromUrl($url); 
$flv_path = GrabFlvFromYoutube($pattern );
echo "File Successfully Downloaded at:".$flv_path."<br/>";

Bu işlevler, functions.php içindedir

function getPatternFromUrl($url)
{
$url = $url.'&';
$pattern = '/v=(.+?)&+/';
preg_match($pattern, $url, $matches);
//echo $matches[1]; die;
return ($matches[1]);
}

ve

function GrabFlvFromYoutube( $pattern )
{
require_once ("phptube.php");
$tube = new PHPTube ();
$flv_http_path = $tube->download($pattern) ;
    echo "<br/>Complete URL:".$flv_http_path;
set_time_limit(0);

$data = file_get_contents($flv_http_path);  
//var_dump(file_get_contents($flv_http_path));  
$new_flv_path = dirname(_FILE_).'/flvs/'.$pattern.'-'.time().'.flv' ;

echo "<br />File uploaed:";
    file_put_contents($new_flv_path, $data);    

return $new_flv_path ;
}

phptube.php fonksiyon aşağıda

class PHPTube {

var $cookies;
var $mgr;
var $req; 
var $debug = true;
var $auth = false;

function PHPTube () {}
    function download ($video_id) {

    $url = "http://www.youtube.com/watch?v=".$video_id;     
$this->req =& new HTTP_Request($url);
$response = $this->req->sendRequest();
if (PEAR::isError($response)) {
    $response->getMessage()."\n";
} else {    
        $page = $this->req->getResponseBody();  
    $vpattern = '/v=(.*?)&/';
    //$vpattern ='/video_id:(.*?)/';
    preg_match($vpattern,$page,$mv);
    //preg_match('&"video_id": "(.*?)"&', $page, $mv); 
    echo "<br />Video ID:".$v_id = $mv[1]; 
    //$tpattern='/"t": "(.*?)"/';
    $tpattern = '/&t=(.*?)&/';
    preg_match($tpattern,$page,$tickets);
    echo "<br />Token ID:".$token = $tickets[1];
    $curl = "video_id=";
    $curl .= $v_id;
    $curl .= "&t=";         
    $curl.= $token;
    //echo "<br />Query String:".$curl; die;
    $url = "http://www.youtube.com/get_video?".$curl;  
    if ($this->debug)
     return $url;
     }
   }
 }  

Şimdiden teşekkürler tüm yaşlılar için

2 Cevap

En azından ben son soruda bahsettiğim kullanıcı aracısı fikir denemek mi? Eğer olmasaydı ben burada tekrar yapıştırın edeceğiz.

ini_set('user_agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9');

Ve size komut dosyası üstünde olduğunu yapıştırma gidiyoruz. Ayrıca user_agent setting altında php.ini dosyasında değiştirebilirsiniz.

Ben sunucu ve yerel makine arasında farklı olacağını hayal edebiliyorum tek şey sunucu kendini farklı tanımlayan olmasıdır.

Burada başka bir şey YouTube videoları sorulmasından sunucu / web barındırma engelliyor olabilir olmasıdır. Eğer paylaşılan bir bilgisayar ve birileri önce bu şeyler yapmaya çalıştı iseniz, Google üzerine çökertti ve ana IP kara listeye olabilirdi. is hizmet açısından karşı YouTube FLVs indirirken, bu yüzden çok iyi yapmış olabilir.

(Tekrar) yardımcı olur umarım.

Ben onların sourcecode ayrıştırmak ya da bir bağlantı kapmak için çalışır makinenin ip ile ilgili bir şey olduğunu düşünüyorum. Sayfayı çekin beri yerel makinede, bu bir uzak sunucuda yaptıysa bağlantı sunucuları ip ip param olacak, ip param senin ip olacak ve size makine indirmek için çalışıyor olacak ips eşleşmiyor nerede.

Ben de benim dev makine üzerinde gayet iyi bir benzer durumla karşı karşıya değilim ama canlı koymak kez tüm pota gitti. Ben atm, ben javascript ile istemci üzerinde yapıyor düşünebilirsiniz kolay / tek şey çalışmak için nasıl anlamaya çalışıyorum.

EDIT:

Başka bir etki alanından talep edemez gibi istemci üzerinde ajax kullanarak youtube sayfayı isteyen benim fikrim çalışmaz.

Ben işe almak için aklınıza gelebilecek diğer tek yolu, sunucu sunucunun ip için geçerli olacak download linki başlayalım, sonra vekil kullanarak dosya indirme readfile() ve bazı {[(1 )]} 'nin müşteriye. Bu ile büyük problem kesinlikle kullanıcılara bant genişliği akarsu indirme şut olacaktır.

Herkes daha iyi bir fikir olup olmadığını bilmek istiyorum?