Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/03/2010, 15:53
tubos
 
Fecha de Ingreso: marzo-2010
Mensajes: 10
Antigüedad: 14 años, 1 mes
Puntos: 0
Ayuda añadiendo parametro a php (creo que es muy fácil)

Hola,

Ante todo decir que no tengo ni idea de php, así que lo siento si me expreso mal en las definiciones
Tengo varios archivos php que cargándolos desde la web y añadiendole un dato me descarga videos de utube en HD a 720p (fmt=22). El problema es que quiero añadirle el parametro fmt=18 para que en caso de que el vídeo no esté en fmt=22 me lo descarge en fmt=18, pero no sé como hacerlo...
Uno de los archivos que tengo es este:
Código PHP:
<?php

// call with: http://www.mydomain.com/path/YouTube_Multi-Format.php?v=K2_U1kbIcJQ&fmt=18
// JWMP code:
// 'file': encodeURIComponent('YouTube_Multi-Format.php?v=K2_U1kbIcJQ&fmt=18'),
// 'type': 'video',
// fmt=6 HQ FLV 480x360
// fmt=18 HQ MP4 480x270
// fmt=22 HQ MP4 1280x720
// fmt=35 HQ MP4 640x360

$videoid=$_GET["v"];
//$videoid = (isset($_GET['videoid'])) ? strval($_GET['videoid']) : '8bV0XSwnPkI';
//$fmt = (isset($_GET['fmt'])) ? intval($_GET['fmt']) : '';
$fmt 22;
parse_str(file_get_contents("http://youtube.com/get_video_info?video_id=$videoid"));
//$uri = "http://www.youtube.com/get_video.php?video_id=$videoid&t=$token";
$uri "http://www.youtube.com/get_video.php?video_id=$videoid&t=$token&fmt=$fmt";
//...debug

//$headers = get_headers($uri);
//print "<pre>\n";
//print " uri: $uri\n" ;
//print "videoid: $videoid\n";
//print " token: $token\n";
//print " fmt: $fmt\nheaders: ";
//print_r($headers);
//print "\n</pre>\n";
//exit;

//...debug


function http_test_existance(
$url,
$timeout 10
) {
$timeout = (int)round($timeout/2+0.00000000001);
$return = array();

### 1 ###
$inf parse_url($url);

if (!isset(
$inf['scheme']) or $inf['scheme'] !== 'http') return array('status' => -1);
if (!isset(
$inf['host'])) return array('status' => -2);
$host $inf['host'];

if (!isset(
$inf['path'])) return array('status' => -3);
$path $inf['path'];
if (isset(
$inf['query'])) $path .= '?'.$inf['query'];

if (isset(
$inf['port'])) $port $inf['port'];
else 
$port 80;

### 2 ###
$pointer fsockopen($host$port$errno$errstr$timeout);
if (!
$pointer) return array('status' => -4'errstr' => $errstr'errno' => $errno);
socket_set_timeout($pointer$timeout);

### 3 ###
$head =
'HEAD '.$path.' HTTP/1.1'."\r\n".
'Host: '.$host."\r\n";

if (isset(
$inf['user']))
$head .= 'Authorization: Basic '.
base64_encode($inf['user'].':'.(isset($inf['pass']) ? $inf['pass'] : ''))."\r\n";
if (
func_num_args() > 2) {
for (
$i 2$i func_num_args(); $i++) {
$arg func_get_arg($i);
if (
strpos($arg':') !== false and
strpos($arg"\r") === false and
strpos($arg"\n") === false
) {
$head .= $arg."\r\n";
}
}
}
else 
$head .=
'User-Agent: Selflinkchecker 1.0 (http://aktuell.selfhtml.org/artikel/php/existenz/)'."\r\n";

$head .=
'Connection: close'."\r\n"."\r\n";

### 4 ###
fputs($pointer$head);

$response '';

$status socket_get_status($pointer);
while (!
$status['timed_out'] && !$status['eof']) {
$response .= fgets($pointer);
$status socket_get_status($pointer);
}
fclose($pointer);
if (
$status['timed_out']) {
return array(
'status' => -5'_request' => $head);
}

### 5 ###
$res str_replace("\r\n""\n"$response);
$res str_replace("\r""\n"$res);
$res str_replace("\t"' '$res);

$ares explode("\n"$res);
$first_line explode(' 'array_shift($ares), 3);

$return['status'] = trim($first_line[1]);
$return['reason'] = trim($first_line[2]);

foreach (
$ares as $line) {
$temp explode(':'$line2);
if (isset(
$temp[0]) and isset($temp[1])) {
$return[strtolower(trim($temp[0]))] = trim($temp[1]);
}
}

//$return['_response'] = $response;
//$return['_request'] = $head;






return $return;

}

$response=http_test_existance($uri);
$uri=$response["location"];

header("location: $uri");
exit;


?>
-Si abro la siguiente url (en firefox) me descarga el video en calidad fmt=22 , es decir a 720p:
http://estosesale.com/test2.php?v=lsPaYZ26Cw0 (lo que va trás el v= es el id del video de youtue)
-Pero sin embargo si pongo esto http://estosesale.com/test2.php?v=ljxUQ07NXB4c no descarga nada ya que ese video no está en fmt=22 sino fmt=18.
Por tanto se trata de hacer que si ese video no tiene fmt=22, lo coja en fmt=18.

Espero haberme exlicado bien y que me podáis ayudar... Gracias mil!