Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite... estou com uma função CUrl onde tenho que retornar todo o conteúdo de uma URL... Mas não entendo oque está acontecendo... Quando chamo a URL, o conteúdo vem pela metade...
Se eu baixar o arquivo, ele possuí muito mais conteúdo do que o que foi retornado com curl...
function curlGet($URL) {
$ch = curl_init();
$timeout = 3;
curl_setopt( $ch , CURLOPT_URL , $URL );
curl_setopt( $ch , CURLOPT_RETURNTRANSFER , 1 );
//curl_setopt ( $ch , CURLOPT_TIMEOUT , 50 );
curl_setopt( $ch , CURLOPT_CONNECTTIMEOUT , $timeout );
/ if you want to force to ipv6, uncomment the following line /
//curl_setopt( $ch , CURLOPT_IPRESOLVE , 'CURLOPT_IPRESOLVE_V6');
$tmp = curl_exec( $ch );
curl_close( $ch );
return $tmp;
}
echo '<pre>'.(urldecode(urldecode(urldecode(curlGet('http://www.youtube.com/get_video_info?&video_id=QS7lN7giXXc')))));Bom dia William, a api do youtube não serve pois preciso além dos dados, da URL do vídeos... Tentei baixar o arquivo, ou pegá-lo com algumas funções nativas do php, mas o youtube bloqueia... daí retorna que não é possível pegar determinada URL...
A solução eu acredito que seja Curl, algo que faça ele ler todo o conteúdo...
ATT
cURL não resolve pq é um stream.
você precisa de um leitor de stream, e não cURL.
A URL do vídeo, vc não pode deduzir pelo video_id que vc já tem ?
>
cURL não resolve pq é um stream.
você precisa de um leitor de stream, e não cURL.
A URL do vídeo, você não pode deduzir pelo video_id que você já tem ?
Bruno, o que seria um leitor de striming?
Tentei usar assim, mas acontece a mesma coisa... Pega tudo pela metade...
function curlGet($URL) {
if ($stream = fopen($URL, 'r')) {
// print all the page starting at the offset 10
echo '<pre>';
echo urldecode(urldecode(urldecode(stream_get_contents($stream))));
fclose($stream);
echo '</pre>';
}
}
echo '<pre>'.(urldecode(urldecode(urldecode(curlGet('http://www.youtube.com/get_video_info?&video_id=QS7lN7giXXc')))));
Cara, pelo o que li, esse endpoint retorna um stream, então cada vez que você tentar bater nele, vai receber uma quantidade diferente, porque o server não está te enviando tudo de uma só vez, mas sim pedaços por pedaços.
Não sei como ficaria um stream em php, mas nenhuma outra api resolve esse problema pra você?
https://developers.google.com/youtube/v3/getting-started