Utiliser Bash (et PHP) pour se faciliter la vie


23 mars 2013

Pour lire le manga Shamo depuis le site KissManga en utilisant son terminal à bon escient voici un petit script PHP :

#!/usr/bin/php -q
<?
if (array_key_exists(2, $_SERVER["argv"]))      {
    $TitleURL = $_SERVER["argv"][2];
    preg_match("@(http://[^/]+)@", $TitleURL, $Matches);
    $RootURL = $Matches[1];
}   else    $RootURL = false;

$Contents = file_get_contents("php://stdin");

//Analyse de la page principale du manga : on en déduit le nom du volume et la page spécifique du volume contenant toutes ses images
if ($_SERVER["argv"][1] == "--main")        preg_match_all('@<a\s+href="([^"]*)" title="Read[^"]+online">([^<]*)</a>@is', $Contents, $Matches);
//Analyse de la page d'un volume donné : on en déduit toutes les URLs des images du volume
if ($_SERVER["argv"][1] == "--volume")      preg_match_all('@lstImages\.push\("([^"]+)"\)@', $Contents, $Matches);

foreach($Matches[1] as $i=>$U)      echo $RootURL === false ? "$U\n" : "$RootURL$U|".trim($Matches[2][$i])."\n";

?>

Pour l'utiliser, du Bash sympathique :

MangaURL='http://kissmanga.com/Manga/Shamo'; MangaDir="shamo"; which wget && dlout='wget -qO -' && dlhead='wget --spider -qS 2>&1' && dlfile='wget -qO'; which curl && dlout='curl -s' && dlhead='curl -sI' && dlfile='curl -s -o'; $dlout "$MangaURL" | ./kissmanga --main "$MangaURL" | while read f; do URL=$(echo $f | awk -F '|' '{print $1}'); Folder=$(echo $f | awk -F '|' '{print $2}'); echo $Folder; mkdir -p "$MangaDir/$Folder"; i=-1; $dlout "$URL" | ./kissmanga --volume | while read img; do ((i++)); echo -n $i" : "$img; ImgType=$($dlhead "$img" | grep 'Content-Type:' | awk -F ':' '{print $2}'); Ext=${ImgType#*/}; PicName=$MangaDir/$Folder/$(printf %03d $i).$Ext; [[ -f $PicName ]] && echo " : existe" && continue; $dlfile "$PicName" "$img"; echo " : ok"; done; done

Et au final on obtient en moins de 20 minutes 5722 images correctement nommées et classées en 20 dossiers.

Ce script est compatible Linux et OSX.

Le script commenté est accessible et donc téléchargeable.

Accueil