Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal eu gostaria de saber como que faço para pegar o tamanho de um arquivo que esteja hospedado no megaupload por exemplo.
O seguinte link -> http://www.megaupload.com/?d=X1HYVC9D tem 348.28 MB, como que faço para pegar essa valor ?!
Desde de já obrigado pela ajuda de todos, até mais.
Olá André D. Molin, estou tentando fazer isso o que você vende e falta apenas pegar o tamanho do arquivo. Só o que estou fazendo para um trabalho acadêmico, de Auditoria e Sistema de Segurança.
Da forma que estou tentando fazer, parece ser meio que uma viagem mais acho que vai dar certo, eu acho né.. rsrs
Quero pegar o tamanho do arquivo para fazer um cálculo para saber quanto tempo vai levar mais ou menos para ser baixado, de acordo com a velocidade do usuário.
E o meu DOM está da seguinte forma abaixo
$dom = new DOMDocument;
@$dom->loadHTML( $out );
$xpath = new DOMXPath( $dom );
$resultado = $xpath->query( "//div[@id='downloadlink']//a" )->item(0)->getAttribute( 'href' );
echo "<b><a href='".$resultado."' target=\"_blank\">".$resultado."</a></b><br>";
Tentei fazer da seguinte forma abaixo, sabe me dizer se é possível ?!
$result = @file_get_contents('http://www.megaupload.com/?d=X1HYVC9D');
if ($result !== false)
{
$ArquivoExiste = stripos($result, 'td[@valign=\'middle\' and @align=\'left\' and @width=\'500\']font[6]');
echo $ArquivoExiste;
}Executou o código que eu postei, sem alterar nada nele?
EDIT
O código tinha um erro, execute esse aqui:
<?php
$dom = new DOMDocument;
@$dom->loadHTML( file_get_contents( 'http://www.megaupload.com/?d=X1HYVC9D' ) );
$xpath = new DOMXPath( $dom );
$name = $xpath->query( "//td[@valign='middle' and @align='left' and @width='500']//font[2]" )->item( 0 );
$size = $xpath->query( "//td[@valign='middle' and @align='left' and @width='500']//font[6]" )->item( 0 );
if ( is_object( $name ) && is_object( $size ) ) {
list( $size, $unit ) = sscanf( $size->nodeValue, '%s %s' );
printf( 'O arquivo <b>%s</b> tem %s %s.', $name->nodeValue, $size, $unit ); echo 'Falhou!';
}Olá André D. Molin, executei aqui e apareceu o nome e tamanho do arquivo.
Como que eu deveria para adaptar para o meu DOM ?! Olhando para os dois não tenho idéia bem claras de como fazer isso.
Eu posso ter dois em um só arquivo ?!
Deixando mais ou menos da seguinte forma abaixo ?!
$dom = new DOMDocument;
@$dom->loadHTML( file_get_contents( 'http://www.megaupload.com/?d=X1HYVC9D' ) );
$xpath = new DOMXPath( $dom );
$name = $xpath->query( "//td[@valign='middle' and @align='left' and @width='500']//font[2]" )->item( 0 );
$size = $xpath->query( "//td[@valign='middle' and @align='left' and @width='500']//font[6]" )->item( 0 );
if ( is_object( $name ) && is_object( $size ) )
{
list( $size, $unit ) = sscanf( $size->nodeValue, '%s %s' );
printf( 'O arquivo <b>%s</b> tem %s %s.', $name->nodeValue, $size, $unit );
} echo 'Falhou!';
}
...
$dom = new DOMDocument;
@$dom->loadHTML( $out );
$xpath = new DOMXPath( $dom );
$resultado = $xpath->query( "//div[@id='downloadlink']//a" )->item(0)->getAttribute( 'href' );
echo "<b><a href='".$resultado."' target=\"_blank\">".$resultado."</a></b><br>";
Desde de já obrigado pela ajuda.
Eu posso ter dois em um só arquivo ?!
Pode, mas dá para fazer com uma instancia só.
Olá André D. Molin, deixei da seguinte forma abaixo, acho que está certo. Tem como você dá uma conferida, e ver se está tudo ok ?!
// Pega o tamanho do arquivo e a unidade de tamanho KB, MB e GB
$dom = new DOMDocument;
@$dom->loadHTML( file_get_contents( $megaupload ) );
$xpath = new DOMXPath( $dom );
// $name = $xpath->query( "//td[@valign='middle' and @align='left' and @width='500']//font[2]" )->item( 0 );
$size = $xpath->query( "//td[@valign='middle' and @align='left' and @width='500']//font[6]" )->item( 0 );
if ( is_object( $size ) )
{
list( $size, $unidade ) = sscanf( $size->nodeValue, '%s %s' );
// printf( 'O arquivo <b>%s</b> tem %s %s.', $name->nodeValue, $size, $unit );
}
// 1KB x 1024
// 1MB x 1024 x 1024
// 1GB x 1024 x 1024 x 1024
// Verifica a unidade do arquivo
if ( $unidade == "KB" || $unidade == "kb" ) { $size = $size * 1024; }
elseif ( $unidade == "MB" || $unidade == "mg" ) { $size = $size 1024 1024; }
elseif ( $unidade == "GB" || $unidade == "gb" ) { $size = $size 1024 1024 * 1024; }
else { $size = $size; }
Pode, mas dá para fazer com uma instancia só.
Como que eu poderia fazer em uma instância só ?!
Obrigado pela ajuda.
Como que eu poderia fazer em uma instância só ?!
Da mesma maneira que eu fiz com $name e $size. Ambos utilizam a mesma instancia $xpath. Para pegar o link de download, faça o mesmo, só alterando o valor recebido pelo método query().
aH, é verdade, não tinha pensando nisso.
Só mais algumas dúvidas.
Porque que você usou font[2] e font[6] ?!
O megaupload suporta quantos IPs diferentes conectados ?!
Porque que você usou font[2] e font[6] ?!
http://www.w3schools.com/xpath/xpath_syntax.asp
O megaupload suporta quantos IPs diferentes conectados ?!
Não sei te dizer.
Bom dia André D. Molin.
Aproveitando o post você saberia me dizer como que faço para usar proxy com cURL ?!
Eu gostaria que independente do local que eu acessasse gostaria que aparecesse para o servidor o IP da proxy e não o de onde eu estivesse acessando.
Tentei da seguinte forma abaixo, mas não deu certo, você saberia me dizer como que posso fazer isso ?!
$ch = curl_init();
// Cookie Session
curl_setopt($ch, CURLOPT_COOKIESESSION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "login=1&redir=1&username=".$login."&password=".$passwd."");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_setopt($ch, CURLOPT_PROXY, "109.109.243.186:80");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0");
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_LOW_SPEED_TIME, 1);
$out = curl_exec($ch);
Obrigado pela força.
if ( is_object( $name ) && is_object( $size ) ) {
} else {
Tenho um serviço privado que faz isso para vários servidores, não só o megaupload. Isso ai é um trecho do código dele.