Ante todo decir que no tengo ni idea de php, así que lo siento si me expreso mal en las definiciones
![borracho](http://static.forosdelweb.com/fdwtheme/images/smilies/borracho.png)
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;
?>
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!