Capturador de enlaces de Películas Yonkis
AVISO IMPORTANTE: Script obsoleto
Desde que el diseño de Películas Yonkis cambió, el script que desarrollé y que hay aquí colgado, se ha quedado obsoleto. Sería necesario reajustar las expresiones regulares. Ignoro si hay más cambios (como nuevas “trampas” en JavaScript).
Por favor, si has creado una versión actualizada, compártelo y añado una referencia a la URL donde lo tengas alojado.
¡Cuantísimo tiempo sin escribir! Por suerte o por desgracia, últimamente tengo muy poco tiempo para mí. Recientemente se han visto varias noticias sobre cómo dejar de depender de páginas de enlaces como Series Yonkis y compañía. Al hilo de ese asunto, alguien redactó el Proyecto Communis. En resumen consiste en crear una base de datos única con todos los enlaces a descargas. De esa base de datos podrán beber todos los servicios que lo deseen. En mi opinión, ése no es el camino a seguir; seguiría siendo un sistema centralizado, en tanto que tanto los ficheros como la base de datos estarían alojadas en algún servidor en particular. Es un sistema muy débil, pero es el que venimos usando ahora. La solución pasa por volver a un sistema completamente descentralizado como es el P2P.
Ahora bien, las páginas de descargas son hoy por hoy la solución más eficaz para acceder a los contenidos. En concreto, la web que más tráfico tiene (y entiendo que la mayor base de datos también) es Películas Yonkis. Y no sé a vosotros, pero a mí no me gusta, no me gusta nada. Está inundada de screeners, audios en latino, o versiones originales. No hay nada malo en ello, siempre y cuando hubiera alguna forma eficaz de poder filtrar contenidos. Y como no existe, pues me he hecho un programa (sí, otro más) para descargar su base de datos. Luego tengo una web de uso personal para yo (y mi señor padre) poder localizar esos enlaces.
Os presento mi script capturador de Películas Yonkis: crawler.php
Funciona igual que el que desarrolló Carlos Capote para Series Yonkis: Un script se encarga de descargar documentos web, y mediante expresiones regulares, captura su contenido. Finalmente, se salta la protección javascript ejecutando javascript en consola (con SpiderMonkey).
Características
Como principales características tiene:
- Funciona en PHP, de modo que se puede ejecutar en prácticamente cualquier servidor web.
- Es únicamente para Películas Yonkis, aunque está hecho de forma que sea fácilmente extensible para añadir otros portales (próximamente, CineTube).
- Guarda una copia local en SQLite.
- Puede ejecutarse en busca de nuevos enlaces. Sólo lleva unos segundos, ya que mediante peticiones HEAD comprueba si la URL ya se ha analizado: para ello, almacena una lista de URLs y sus cabeceras ETag y last-modified.
- Evita duplicados, ya que almacena en base de datos cada URL de descarga.
Únicamente tiene dos dependencias: SpiderMonkey y cURL para PHP.
Base de datos
La base de datos tiene dos tablas, Movies y Movie_Links:
Movies:
- id – identificador numérico.
- title – Título de la película.
- year – Valor numérico para el año.
- description – Sinopsis.
- genres – Lista separada por comas de géneros.
Movie_Links:
- id – Identificador numérico.
- movie_id – Identificador de la película a la que pertenece.
- urls – Lista de URLs de esta descarga. En la mayoría de los casos será sólo una, pero hay películas que están divididas en partes.
- lang – Idioma.
- subs – Indica si tiene o no subtítulos.
- quality – Calidad, de 1 a 5.
- length – Duración en minutos.
- enc – Método de codificación, por ejemplo DVD-Rip o Screener.
- size – Tamaño total en MB.
- format – Formato del fichero, por ejemplo AVI.
- resolution – Resolución de salida.
- type – Indica si es descarga directa o visualización online.
- service – Almacena el servicio utilizado, por ejemplo, megaupload, megavideo, veoh, fileserve, etc.
- broken – No usado todavía, sirve para notificar si un enlace está roto.
Y aquí dejo una copia de la base de datos (14.85MB). Puedes descargarla y ejecutar:
$ sqlite3 peliculas.db
Supongamos que queremos consultar todas las pelis de ciencia ficción que estén en megaupload, en DVD-Rip y en español de España, podríamos ejecutar:
$ sqlite3 peliculas.db SQLite version 3.6.12 Enter SQL statements terminated with a ";" sqlite> select distinct(m.title) from movies m, movie_links ml where ml.movie_id = m.id and enc="DVD-Rip" and genres like "%ciencia%" and lang="spanish" and service="Megaupload";