Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/03/2010, 15:53
tubos
 
Fecha de Ingreso: marzo-2010
Mensajes: 10
Antigüedad: 16 años, 7 meses
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(':', $line, 2);
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!