10-14-2015, 05:17 PM
El código de la etiqueta [video] funciona tal que así:
Para hacer lo que propones, me falta el tipo de vídeo del paso 1, que tendría que obtenerlo buscando algunas palabras clave en la url. Todo esto dentro de esto:
Como dice Loko, poderse se puede, y no parece complicado. Otra cosa es el epicpal infinito, y que prefiero fansubear algo que seguir tocando esto para que ahorréis cinco teclas o dos clicks xD
PD: Me hacía ilusión usar el tag para PHP por primera vez xD[/video]
Código PHP:
/**
* Parses video MyCode.
*
* @param string $video The video provider.
* @param string $url The video to link to.
* @return string The built-up video code.
*/
function mycode_parse_video($video, $url)
{
global $templates;
if(empty($video) || empty($url))
{
return "[video={$video}]{$url}[/video]";
}
$parsed_url = @parse_url(urldecode($url));
if($parsed_url == false)
{
return "[video={$video}]{$url}[/video]";
}
$fragments = array();
if($parsed_url['fragment'])
{
$fragments = explode("&", $parsed_url['fragment']);
}
$queries = explode("&", $parsed_url['query']);
$input = array();
foreach($queries as $query)
{
list($key, $value) = explode("=", $query);
$key = str_replace("amp;", "", $key);
$input[$key] = $value;
}
$path = explode('/', $parsed_url['path']);
switch($video)
{
case "dailymotion":
list($id) = explode('_', $path[2], 2); // http://www.dailymotion.com/video/fds123_title-goes-here
break;
case "metacafe":
$id = $path[2]; // http://www.metacafe.com/watch/fds123/title_goes_here/
$title = htmlspecialchars_uni($path[3]);
break;
case "myspacetv":
$id = $path[4]; // http://www.myspace.com/video/fds/fds/123
break;
case "facebook":
$id = $input['v']; // http://www.facebook.com/video/video.php?v=123
break;
case "veoh":
$id = $path[2]; // http://www.veoh.com/watch/123
break;
case "liveleak":
$id = $input['i']; // http://www.liveleak.com/view?i=123
break;
case "yahoo":
$id = $path[1]; // http://xy.screen.yahoo.com/fds-123.html
// Support for localized portals
$domain = explode('.', $parsed_url['host']);
if($domain[0] != 'screen' && preg_match('#^([a-z-]+)$#', $domain[0]))
{
$local = "{$domain[0]}.";
}
else
{
$local = '';
}
break;
case "vimeo":
$id = $path[1]; // http://vimeo.com/fds123
break;
case "youtube":
if($fragments[0])
{
$id = str_replace('!v=', '', $fragments[0]); // http://www.youtube.com/watch#!v=fds123
}
elseif($input['v'])
{
$id = $input['v']; // http://www.youtube.com/watch?v=fds123
}
else
{
$id = $path[1]; // http://www.youtu.be/fds123
}
break;
default:
return "[video={$video}]{$url}[/video]";
}
if(empty($id))
{
return "[video={$video}]{$url}[/video]";
}
$id = htmlspecialchars_uni($id);
eval("\$video_code = \"".$templates->get("video_{$video}_embed")."\";");
return $video_code;
}
- Obtiene tipo de vídeo y url.
- Parte la url.
- Según el tipo, obtiene el id del video del fragmento de la url que toque.
- Carga la plantilla del reproductor embedded del tipo de video, y le pasa el id.
Para hacer lo que propones, me falta el tipo de vídeo del paso 1, que tendría que obtenerlo buscando algunas palabras clave en la url. Todo esto dentro de esto:
Código PHP:
if(empty($video) || empty($url))
{
return "[video={$video}]{$url}[/video]";
}
PD: Me hacía ilusión usar el tag para PHP por primera vez xD[/video]