FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy
RejestracjaRejestracja  Galeria AvatarówGaleria Avatarów  ZalogujZaloguj
 Ogłoszenie 
Forum archiwalne, nie można zakładać nowych kont.

Poprzedni temat :: Następny temat
  Onemanga i bash
Wersja do druku
Hammer Płeć:Mężczyzna
Master of disaster

Dołączył: 28 Kwi 2009
Status: offline
PostWysłany: 12-05-2009, 14:12   Onemanga i bash

Nie wiedziałem gdzie to dać, więc pomyślałem że tutaj się nada, jeśli ktoś uważa inaczej niech przeniesie temat -byłbym wdzięczny za info o tym. Jeśli temat łamie jakiś regulamin trudno, skasujcie

W każdym razie do rzeczy, jakiś czas temu szperałem po necie za skryptem basha i trafiłem na coś bardzo ciekawego. Otóż ktoś napisał skrypt basha do pobierania rozdziałów mangi z onemanga... Zauważyłem że na tym forum jest sporo użytkowników linuxa, więc postanowiłem zapodać skrypt, może się komuś przydać.

Więc po kolej, jak to działa, skrypt zapisuje sobie lokalnie stronę potem wyciąga z niej obrazek jak pobierze cały rozdział pakuje go rarem do pliku cbr. Jeśli ktoś nie wie jak oglądać plik cbr, niech po prostu rozpakuje archiwum unrarem. Działa to na wget, curl i rar

Ważne żeby mieć pakiety rar i curl, debian i pochodne typu ubuntu:
Kod:
 sudo apt-get install rar unrar curl

Potem kopiujemy tekst (ze spoilera) do np gedita i zapisujemy np w katalogu ~/manga jako onemanga.sh teraz otwieramy konsole (terminal w gnome to się nazywa) zmieniamy katalog i dajemy skryptowi prawo do wykonywania się.
Kod:

cd ~/manga
chmod +x onemanga.sh

no i w tym momencie mamy gotowy do działania skrypt.
Teraz możemy zacząć ściągać:
Kod:
maciek@maciek:~/manga$ ./onemanga.sh Fate-Stay_Night 1 17

pierwszy parametr to tytuł pod którym figuruje, np:Fate-Stay_Night drugi to pierwszy rozdział do pobrania a trzeci ostatni rozdział.

Teraz idziemy na herbatę i jak wracamy mamy piękne paczki z tomami mangi...

skrypt (spoiler żeby się zwijał i nie zajmował tyle miejsca):

Spoiler: pokaż / ukryj
#!/bin/bash

base_url="http://www.onemanga.com"
base_dir="."

if [[ "$1" == "-d" ]]; then
shift

if [[ ! -d $1 ]]; then
echo "Directory $1 does not exist. Created."
mkdir $1
fi

base_dir=$1
fi

cd ${base_dir}

manga_name=$1
chapter=$2
last_chapter=$3
display_name=`echo ${manga_name} | sed "s/_/ /g"`
word_count=`echo ${display_name} | wc -w`
sort_key=`echo "${word_count} + 1" | bc`

if [[ "${chapter#${chapter%?}}" == "+" ]]; then
chapter=${chapter%?}
echo "Start downloading at chapter ${chapter}."
latest_chapter=`curl -s --range 58000-60000 ${base_url}/${manga_name}/ | grep -i "ch-subject" | grep -v -i "chapter name" | head -1 | awk -F\/ '{print $3}'`

if [[ "${latest_chapter}" == "" ]]; then
echo "Cannot get the latest chapter of ${display_name} from onemanga.com. Aborted."
exit
else
echo "Latest chapter of ${display_name} on onemanga.com is ${latest_chapter}."
fi

if [[ `echo "${chapter} <= ${latest_chapter}" | bc` -eq 1 ]]; then
last_chapter=${latest_chapter}

if [[ `echo "(${latest_chapter} - ${chapter}) > 1" | bc` -eq 1 ]]; then
echo "The script will download ${display_name} chapter ${chapter}-${last_chapter}."
fi
else
echo "Whoops, something's wrong! The chapter you specified is greater than the latest chapter on onemanga.com!?"
exit
fi
fi

if [[ "${chapter}" == "" ]]; then
current_chapter=`ls *${manga_name}_*.cbr 2> /dev/null | sort -r -n -k ${sort_key} -t_ | head -1`
current_chapter=`echo ${current_chapter##*_} | cut -f1 -d\.`

if [[ "${current_chapter}" == "" ]]; then
echo "Cannot find any chapter of ${display_name} on local disk. Starting at chapter 1."
current_chapter=0
else
echo "Latest chapter of ${display_name} on local disk is ${current_chapter}."
fi

latest_chapter=`curl -s --range 58000-60000 ${base_url}/${manga_name}/ | grep -i "ch-subject" | grep -v -i "chapter name" | head -1 | awk -F\/ '{print $3}'`

if [[ "${latest_chapter}" == "" ]]; then
echo "Cannot get the latest chapter of ${display_name} from onemanga.com. Aborted."
exit
else
echo "Latest chapter of ${display_name} on onemanga.com is ${latest_chapter}."
fi

if [[ `echo "${current_chapter} == ${latest_chapter}" | bc` -eq 1 ]]; then
echo "You already have the latest chapter of ${manga_name}."
exit
elif [[ `echo "${current_chapter} < ${latest_chapter}" | bc` -eq 1 ]]; then
chapter=`echo "$current_chapter + 1" | bc`
last_chapter=${latest_chapter}

if [[ `echo "(${latest_chapter} - ${current_chapter}) > 1" | bc` -eq 1 ]]; then
echo "The script will download ${display_name} chapter ${chapter}-${last_chapter}."
fi
else
echo "Whoops, something's wrong! The latest chapter on local disk is greater than the latest chapter on onemanga.com!?"
exit
fi
fi

if [[ "${last_chapter}" == "" ]]; then
last_chapter=${chapter}
fi

while [[ `echo "${chapter} <= ${last_chapter}" | bc` -eq 1 ]]
do
printf "Downloading ${display_name} chapter ${chapter}\n[>"

next_page_chapter=${chapter}
page_location=`curl -s --range -1500 ${base_url}/${manga_name}/${chapter}/ | grep -i "begin reading" | awk -F\" '{print $2}'`

while [[ `echo "$next_page_chapter == $chapter" | bc` -eq 1 ]]
do
curl -s --range -2000 ${base_url}${page_location} > tmp_page

image_location=`grep "class=\"manga-page\"" < tmp_page | awk -F\" '{print $4}'`

if [[ "$image_location" != "" ]]; then
printf "\b=>"
wget -q $image_location
fi

page_location=`grep "value=\"next page\"" < tmp_page | awk -F\' '{print $2}'`
next_page_chapter=`echo ${page_location} | cut -d\/ -f3`
done

cbr_file_name="${manga_name}_${chapter}.cbr"
printf "\b]\nCreating ${cbr_file_name}... "
rar a -inul ${cbr_file_name} *.jpg
echo "DONE."
rm *.jpg

chapter=$next_page_chapter
done

rm tmp_page

if [[ "${base_dir}" != "." ]]; then
cd ..
fi

Ostatnia uwaga, to nie ma prawa działać na fabrycznym windowsie, ale jeśli kogoś to interesuje da się namówić windowsa żeby uruchamiał skrypty basha.

_________________
Boże czemuś nas pokarał ciepłym alkoholem i zimnymi kobietami?
Przejdź na dół
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików
Możesz ściągać załączniki
Dodaj temat do Ulubionych


Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group