Skip navigation

Navegando encontré una página muy piola de Manga’s para ver online, www.onemanga.com. A medida que iba viendo que Manga’s había para leer, a ver si reconocía alguno (no soy muy otaku que digamos), empecé a ver las imágenes y descubrí un patrón en las URLs…

cada página es una imagen JPG. la URL es casi siempre la misma, con el siguiente formato (entre corchetes los valores variables):
http://img[SERVIDOR_DE_IMAGENES].onemanga.com/mangas/[NRO_DE_MANGA]/[NRO_DE_CAPITULO]/[NRO_DE_PAGINA].jpg
Al darme cuenta de esto se me ocurrió instantáneamente que se podía programar algo para manipular dinámicamente cualquier Manga publicado en ese sitio.

Sin perder más tiempo me puse a programar, en BASH (el intérprete de comandos de Linux) un script no muy largo, que se encargue de:

  1. Tomar por parámetro los datos necesarios para el Manga en cuestión (img_server, manga_id, chapter_id, etc).
  2. Hacer un bucle que intente descargar (con el comando wget) cada página jpg (si existe).
  3. Una vez que tenga todas las páginas del capítulo ya descargadas, comprimirlas en formato RAR.
  4. Renombrar el RAR a la extensión CBR para que pueda ser leído por programas como Comix o similares.

EDIT: Lo subí a google docs y lo publiqué (así no lo borran jamás). Lo pueden ver acá.

Requerimientos para correr el script:

  • Linux o algún emulador de BASH (Cygwin? ni idea)
  • Comando wget (asumo que en linux ya viene por default, pero no estoy seguro con Cygwin o similares)
  • RAR (apt-get install rar, ubuntu-users!)

El script tiene un par de constantes que deberían editar según sus necesidades (como en qué directorio guardar el archivo CBR) pero salvo por eso el resto es “pretty straightforward”.

Uso:
./download_manga.sh [image_server_id] [manga_id] [chapter_id]

16 Comments

  1. ¡Qué tio! Me encanta tu sitio. De mayor quiero ser como tú. Compartes tus experiencias e investigaciones y enriqueces nuestra esencia con tus scripts.
    Sigue así, te apunto en mis favoritos.

    Gracias ;-D

    Un pspero

  2. Me alegro que te haya gustado! ¿probaste el script?
    Debería postear con más frecuencia, estoy medio colgado.

  3. Works fine, except for the fact that some pages in onemanga are spreads.. i.e. 03-04.jpg

    I did a simple PHP script that zips and downloads ‘em all over at http://simpl.ir/manga-downloader/

  4. @rabidfrog:

    Did you try my script? Have you ever READ it ??
    it already does what you complain about. It also ECHOES that it’s actually doing it:

    echo “Error while trying to download $PAGE.jpg. The file might not exist.”;
    echo “Maybe it’s a double-page. Trying to download $DOUBLE_PAGE.jpg …”;


    Where $DOUBLE_PAGE is actually a string made with sprintf, something like “03-04”.

    I actually USE my script regularly, so I know it works, even for double pages, cover pages, note pages and credit pages (maybe you should also read the part where it does that).

    BTW, I have no problem leaving that “advertisement” of your PHP script in my blog, but i’ve tried it, and it doesn’t seem to work for every manga (something about your limited disk space?). Also, you should think about releasing the source-code so people can see how it really works, even for double pages and covers, like mine.

    en castellano:

    Probaste mi script? Al menos lo leíste??

    Mi script ya hace eso de que te quejás. además muestra con ECHOs que está haciéndolo:

    echo “Error while trying to download $PAGE.jpg. The file might not exist.”;
    echo “Maybe it’s a double-page. Trying to download $DOUBLE_PAGE.jpg …”;


    donde $DOUBLE_PAGE es una string concatenada con sprintf, algo como “03-04”.
    Realmente uso mi script regularmente, por eso sé que funciona, incluso para páginas dobles, tapas, notas y créditos (quiza también deberías leer la parte en la que hace eso).

    Por cierto, no tengo problema en dejar esa “publicidad” de tu script PHP en mi blog, pero lo probé, y no parece funcionar del todo bien para cualquier manga (algo sobre tu espacio de disco limitado?). Además, deberías pensar en liberar el código fuente para que la gente pueda ver cómo funciona realmente, incluso para páginas dobles y tapas, como el mío.

  5. My bad, should have read😛

    Source is actually rather simple, I just parse thru the select tags and download the image accordingly. My webhosting is limited to about 3 gigs only so I guess I should set a cron to clear out the mangas every 2-3 days or so😛

  6. I really like your PHP approach (multi-platform, yay!)
    a nice new feature in your app would be to be able to select the number of the manga, so let’s say I pick “Biomega”, then “#35”, that way people don’t have to wait till your server creates mangas from #00 to #34, and you save processing time and hosting space.
    Also, if you make’em .ZIP, you should consider renaming it to .CBZ, so the file is ready to be read in Comic Programs😉
    The cron to wipe the unused mangas is a MUST-HAVE !!!😛

    — en castellano:

    No tengo ganas. Aprendan inglés.

  7. Hola! La verdad que es muy tentador cuando ves que todas las imagenes estan en el mismo servidor y encontras patrones para bajarlos jojojojo

    Justo el otro dia me paso lo mismo que a vos, conoci la pagina onemanga y pense, tengo que hacer un prog/script que lo baje todo. Haciendo esto me puse a investigar, pero como no tengo un linux a mano no me puse a probar con .sh y mucho no se de bash ( aunque el wget fue mi primera opcion ). Asi que lo hice en VB. Obviamente mi codigo es mucho mas extenso que el tuyo gracias a las maravillas de VB jejeje

    Buscando para ver si alguien lo habia hecho me encontre con tu post. Lo que observe es que vos le tenes pasar el id del manga y el id del capitulo ( los capitulos no son secuenciales en los numeros ). Una cosa uqe me parece que fallaria es cuando la imagen no tiene forma de numero. Me ha pasado de tratar de parsear un “last-23.jpg” por ejemplo y ahi se me iba al tacho. Observando las paginas descubri ( probablemente vos tambien ) que en http://www.onemanga.com/manga_js/ estan la lista de los capitulos del manga en cuestion con un dato interesante: “esta la primera pagina del capitulo, con lo que vos podes agarrar esa pagina y parsearla para conectarte a la primera pagina del capitulo y obtener el servidor que tiene las imagenes. En resumen, el resto del programa es muy parecido al tuyo, solo que baja mangas enteros. Estoy bajando continuamente, si tuviese un linux dando vueltas usaria el tuyo sin duda.

    Ahora estoy tratando de hacer una version en C++, y en python

    Un abrazo

  8. qué loco, no había visto ese /manga_js/ … muy buen descubrimiento.

    Yo más que nada el script lo hice que descargue de a números sueltos porque nunca leo una serie entera…😛
    Además fué bien quick&dirty™ porque no sabía cuanto iba a durar abierto el tema este de las imgs “free”.
    Yo si fuese Mr. Onemanga les pondría nombres random a las imgs, guardados en una DB, y que cada request “get_next_page” pida el ID internamente (para evitar a los web-scavengers como nosotros).

  9. Hi! i really need this but i dont know how to run this in windows xp

  10. you should get a BaSH interpreter for Windows… or use the source and ideas/commentaries to program something windows-compatible… But to tell you the truth, I didn’t have Windows users in mind when i did this.
    Maybe it’s a good time for you to try Ubuntu (or any other Linux distro)😛

  11. i would install ubuntu again if i can dl all chapters in one manga

    /download_manga.sh 16 150 01-160

    if thats possible =[

    and thanks time for looking for BaSH interpreter

  12. install cygwin but have no idea how to run it haha! i suck

  13. Hi TaTooKa, I’ve tried to get your code from Driveway, but the page sez: “This file/folder has been deleted from the Driveway account by the owner. This link is no longer valid.”

    Is there any other link where I can get it? Thanks.🙂

  14. hi retroovert,
    unfortunately I don’t have the script at hand (forgot that Driveway would erase it someday). I’ll check if I can find it at home.

  15. ow, okay boss.. thx btw.😀

  16. @retroovert:
    I found the script. I decided to upload it to google docs, so it won’t get erased again.
    link: http://docs.google.com/View?id=dxhqxdm_248dm74wkfw


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: