• Publicidad

RapidShare downloader premium desde portal

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

RapidShare downloader premium desde portal

Notapor angelruiz » 2009-07-14 23:22 @015

Hola amigos...

Tengo una red inalámbrica con 80 usuarios, mi servidor lo monte con brazilfw, pero se me ha presentado un problema.

Cuando ciertos usuarios usan RapidShare están limitados por el número y megas de descargas gratuitas... por lo cual hice pruebas con wget y curl y los dos me permitieron hacer descargas con mi cuenta premium por consola a mi servidor (primero me baja la cookie de la cuenta; luego, usando la cookie bajo el archivo solicitado). La idea, la finalidad, es que estas descargas lleguen al usuario final.

  1. Una manera sería que el usuario abra una página web de mi servidor e ingrese allí el link de RapidShare -el servidor se encarga de bajarlo a través de curl-, luego el usuario -por FTP- se descarga el archivo. Lo malo en mi caso es la capacidad de memoria que tenga mi servidor: en poco tiempo me llenarían el disco; además lo veo poco práctico.
    .
  2. Ahora bien, pensé en Perl... soy novato y no sé hasta dónde con Perl a través de CGI u otra forma se lograría que la descarga se haga directamente al PC del usuario (tomando en cuenta que la cookie la obtengo previamente con curl) ¿podría hacer que una página "cgi en perl" tome la cookie + el URL del usuario y éste haga la descarga directamente en su PC?
    .
Posiblemente hay otras maneras que desconozco. :D tampoco les pido que me hagan el cgi, realmente quiero saber si es posible y algunas pautas a seguir o recomendaciones para lograr hacer funcionar lo antes planteado.

No sé cómo donar al proyecto; soy de Venezuela y hay un control de divisa que no me permite consignar con facilidad al exterior (sí se puede pero se me es difícil).

Saludos.
angelruiz
Perlero nuevo
Perlero nuevo
 
Mensajes: 32
Registrado: 2009-06-03 08:33 @398

Publicidad

Re: RapidShare downloader premium desde portal

Notapor explorer » 2009-07-15 06:52 @327

A mi me gusta la primera opción:
  • El usuario ingresa, con un CGI, la URL del fichero que quiere bajar
    .
  • El cgi agrega la URL y el cliente que la ha demandado a una cola de peticiones, que es gestionada por otro programa. El cgi termina indicando al usuario que su "trabajo" ha sido encolado
    .
  • El otro programa se levanta cada minuto o cinco minutos o está funcionando constantemente. Mira la cola de trabajos por si tiene que bajarse alguno. Si lo tiene que hacer, inicia el proceso de bajada
    .
  • El proceso de bajada consiste primero en saber el tamaño de lo que nos vamos a bajar, para ver si cabe en nuestro disco duro
    .
  • Si no lo sabemos o podemos saber, decidimos antes un mínimo de espacio que debe estar libre para bajar ficheros. Pongamos que debe haber un 1Gb para continuar
    .
  • Si no hay espacio libre, el programa consulta la lista de ficheros bajados o hace un listado de los ficheros bajados en el directorio y, comenzando por los ficheros más viejos, los borra, mientras no haya espacio suficiente en disco. Si sigue borrando y después de borrarlos todos no hay espacio, debe terminar con una condición de error
    .
  • Si hay espacio libre o lo hemos creado, ya podemos bajarnos el fichero con curl o con LWP::Simple o cualquiera de las herramientas Perl con soporte de cookies
    .
  • Al terminar de bajarlo (si se ha hecho correctamente), el fichero residirá en el directorio destino y solo tenemos que avisar al usuario que lo solicitó con un aviso. Si terminó mal podemos usar el truco del wget de reintentar basado en lo ya bajado (para que no se lo baje desde el principio, pero esto depende de si RapidShare permite esta extensión). Podemos incluso hacer un bucle de 3 intentos. Si pasados esos intentos no lo conseguimos, movemos el fichero al final de la cola para intentarlo más tarde, o informamos al usuario con un error
    .
  • El aviso al usuario se puede realizar de muchas formas: correo electrónico, mensajería instantánea o, si todos usan Windows, usar el sistema del servicio de mensajería de Windows, que permite enviar mensajes cortos a los ordenadores a través de la red de Windows usando el protocolo SMB. En Perl se haría con los módulos dependientes de SAMBA. En fin, hay muchas formas. Incluso si están todos en el mismo sitio, con un sintetizador de voz y unos altavoces
    .
  • El usuario sabe dónde y cómo bajárselo: entrando en un directorio del servidor, bien sea por FTP o HTTP. Y con un clic ya se lo está bajando. Y sabe que dispone de unas horas/minutos antes de que sea borrado para hacer espacio para los demás
    .
  • Todo esto se puede complementar con un CGI que consultara la lista de trabajos y mostrara el orden y el tiempo estimado de servicio. Se puede calcular en función de lo que se tardan en servir los ficheros, pero sería más fácil si se supiera el tamaño con anterioridad. Una forma de saberlo sería conectarse una vez a RapidShare con el único fin de saber esos tamaños. Eso se puede hacer haciendo una petición head() HTTP al fichero a bajar. Así el servidor nos devuelve fecha y tamaño del fichero. Cortamos la conexión y agregamos esa información a la lista de ficheros a bajar.

Un proyecto interesante...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: RapidShare downloader premium desde portal

Notapor angelruiz » 2009-07-15 14:23 @641

¡¡Gracias, amigo¡¡

Voy estudiando lo que planteas a ver por dónde inicio el trabajo.

Saludos.
angelruiz
Perlero nuevo
Perlero nuevo
 
Mensajes: 32
Registrado: 2009-06-03 08:33 @398


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron