|

Laboratorio: marcadores en los vídeos de YouTube

Una de las cosas que diferencia a YouTube de los demás es su API, la cual nos permite trabajar con los vídeos de forma muy sencilla. Y algo que echo en falta cuando me pasan videos de YouTube, ya sea en la propia web o en un videoblog, es tener que esperar a que llegue el momento destacado que querían que viera o tener que “jugar” con el controlador hasta que doy con el tiempo adecuado.

Por eso se me ha ocurrido que mediante la API se podría evitar esta situación facilmente, tan solo habría que indicar mediante un anchor la posición que queremos que se cargue el vídeo, ya sea mediante enlaces en la propia web o mediante la propia URL.

Se trata de un script muy sencillo, el cual he realizado sin frameworks como jQuery, porque a parte de intentar no olvidar el javascript normal, tampoco era necesario meterle jQuery o parecido. Eso sí, he utilizado swfobject porque es más sencillo trabajar con esta librería.

El script consta de dos partes: modificar los enlaces con anchors a partes del vídeo y acceder a una posición concreta del vídeo si se indica en la URL. Para ello es necesaria la función onYouTubePlayerReady, que es la que se ejecuta cuando el player de YouTube se carga y la API de javascript está activada.

var params = { allowScriptAccess: "always", bgcolor: "#cccccc" };
var atts = { id: "myytplayer" };
swfobject.embedSWF("http://www.youtube.com/v/AaO1FzE6J9I&border=0&enablejsapi=1&playerapiid=ytplayer",
"ytapiplayer", "425", "344", "8", null, null, params, atts);
function onYouTubePlayerReady() {
// Calcula los segundos de un tiempo
var segundos = function(tiempo) {
var fact = 1;
var segs = 0;
for(var j=tiempo.length-1; j>=0; j--) {
segs += tiempo[j]*fact;
fact *= 60;
}
return segs;
}
// Modifico los anchors del video
var enlaces = document.getElementById('marcadores').getElementsByTagName('a');
for(var i=0; i<enlaces.length; i++) {
enlaces[i].addEventListener('click', function() {
var tiempo=this.href.substring(this.href.indexOf('#')+1).split(':');
var player = document.getElementById('myytplayer');
player.seekTo(segundos(tiempo), true);
player.playVideo();
return false;
}, true);
}
// Accedo al tiempo específico de la URL
var href = document.location.href;
if ((pos = href.indexOf('#')+1)) {
var player = document.getElementById('myytplayer');
player.seekTo(segundos(href.substring(pos).split(':')));
player.playVideo();
}
}

El formato del marcador tiene que ser #HH:MM:SS o #MM:SS o #SS

Yo creo que este script puede ser muy útil para los videoblogs para marcar momentos específicos y para que los visitantes puedan enviar a sus amigos los momentos que más le interesan.

Ejemplo

“Se leer pero no tan de cerca”

“Segundas partes nunca fueron buenas”

Expresiones regulares con filtros en PHP

Buena alternativa para validar variables usando expresiones regulares usando filtros:

  • Validar números reales
$values= array(10.75, '10.75', -1234.5678, 'This is a string', array());
$filteredValues = filter_var($values, FILTER_VALIDATE_FLOAT, FILTER_REQUIRE_ARRAY);
  • Validar expresiones regulares
if(filter_var($value, FILTER_VALIDATE_REGEXP, array('options' => array('regexp' => "/^G(.+)/")))) {
// Lo que sea
}
  • Validar URLs
$url = 'http://www.devshed.com';
if(filter_var($url, FILTER_VALIDATE_URL)) {
// Lo que sea
}

Working with Regular Expressions with Filters in PHP 5

jCryption: encriptación mediante javascript

jCryption es una librería javascript que utiliza jQuery y que nos permite encriptar los datos de un formulario sin necesidad de utilizar SSL. Para ello utiliza la encriptación del algoritmo de clave pública de RSA.
Muy útil para aquellos que no puedan disponer de conexión SSL.
jCryption
Vía / DZone

Cherokee: servidor web rápido y potente

Cherokee es un servidor web muy rápido y con muchas funcionalidades. Según los benchmarks es el más rápido que existe, lo cual es bastante interesante.
Permite FastCGI, SCGI, PHP, CGI, SSI, TLS y conexiones encriptadas SSL, Virtual hosts, Authentication, codificación “on the fly”, Load Balancing, logs compatibles con Apache, balanceo de bases de datos, Reverse HTTP Proxy, Traffic Shaper, Video Streaming y mucho más.
Lo mejor del todo es que el proyecto lo lleva un madrileño, lo peor de todo es que desconocía totalmente el proyecto 🙁
Cherokee
Vía / HowtoForge

Interfaces predefinidas en PHP5

Interesante resumen de interfaces predefinidas en PHP5 que permiten darle a nuestros objetos unas características muy útiles:

  • Traversable: permite usar el objeto en un foreach.
  • Iterator: extiende de Traversable y permite realizar iteraciones sobre el objeto.
  • IteratorAggregate: extiende de Traversable y permite añadir objetos iterators externos.
  • ArrayAccess: permite comportarse al objeto como un array, usando por ejemplo el operador [].
  • Serializable: permite realizar serialización en el objeto.

PHP5: Predefined Interfaces

Vía / DZone

phpMyBackupPro: realiza backups de MySQL

phpMyBackupPro es un sistema que nos permite controlar las backups de nuestra BD MySQL de forma sencilla.

Entre las características que ofrece nos encontramos con:

  • Backups de una o varias BD con datos, sin datos, estrutura de las tablas, …
  • Tres tipos de comprensión: sin comprensión, gzip o zip
  • Backups programables
  • Administración de backups que permite verlas, recuperarlas, descargarlas o borrarlas
  • Backup en servidor FTP o envío por email
  • Modo shell

phpMyBackupPro

Vía / Weblenium

jQuery Silver: buscador de enlaces con jQuery

jQuery Silver es un buscador de enlaces en el contenido de la página. Su uso es muy sencillo, se abre una ventana mediante shortcuts, y en ella se pueden realizar búsquedas de enlaces. Permite buscar en etiquetas A e INPUT.
Quizás a simple vista no sea muy útil, pero puede venir bien para aplicaciones más elaboradas.
jQuery Silver
Vía / DZone