Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- COMDIR="/home/cppmm/random/comics"
- TMPDIR="/tmp/comics"
- # Создаём временную директорию
- if [ ! -d $TMPDIR ]
- then
- mkdir $TMPDIR
- fi
- for DIR in $(ls $COMDIR/)
- do
- LAST=0
- FIRST=1
- NUM=0
- if [ -d $COMDIR/$DIR ]
- then
- NAME=$DIR
- ENDDIR="$COMDIR/$NAME"
- # Получаем номер последнего комикса или создаём файл для его хранения, если ничего ещё не скачано.
- if [ ! -d $ENDDIR ]
- then
- mkdir $ENDDIR
- touch "$ENDDIR/.last"
- fi
- if [ -e "$ENDDIR/.last" ] && [ -s "$ENDDIR/.last" ]
- then
- LAST=$(cat $ENDDIR/.last)
- FIRST=$(expr $LAST + 1)
- REALLAST=""
- else
- # Ссылка на реальный номер файла первого выпуска
- wget -q -O $TMPDIR/$NAME.html http://a-comics.ru/comics/$NAME/1
- if [ "$?" -ne "0" ]
- then
- DATE=$(date +%Y:%m:%d\ %H:%M:%S)
- echo "$DATE: Wrong dirname $NAME" >> $COMDIR/download.log
- continue
- fi
- FIRSTLINK=$(grep -o -E "http://.*/users/.*[0-9]+.(jpg|png)" $TMPDIR/$NAME.html)
- # Если тут пусто, то нормальных ссылок на файлы нет и надо каждый номер смотреть и грепать
- if [ -z $FIRSTLINK ]
- then
- rm $TMPDIR/$NAME.html
- wget -q -O $TMPDIR/$NAME.html http://a-comics.ru/comics/$NAME
- NUM=0
- REALLAST=$(grep -oE "^.*nav-btn nav-(list|rand)" $TMPDIR/$NAME.html | sed -r 's/^.*\/([0-9]+)\?.*/\1/')
- echo $LAST > $ENDDIR/.last
- rm $TMPDIR/$NAME.html
- else
- rm $TMPDIR/$NAME.html
- FIRST=$(echo $FIRSTLINK | sed -r 's/^http.*\/0*([0-9]+).(jpg|png)/\1/')
- wget -q -O $TMPDIR/$NAME.html http://a-comics.ru/comics/$NAME
- if [ "$?" -ne "0" ]
- then
- continue
- fi
- LASTLINK=$(grep -o -E "http://.*/users/.*.(jpg|png)" $TMPDIR/$NAME.html)
- rm $TMPDIR/$NAME.html
- REALLAST=$(echo $LASTLINK | sed -r 's/^http.*\/0*([0-9]+).(jpg|png)/\1/')
- NUM=1
- if [ $(echo $REALLAST | grep "/") ]
- then
- NUM=0
- REALLAST=""
- fi
- fi
- fi
- if [ "$NUM" -eq "1" ]
- then
- # Вытаскиваем урл картинок комикса и номер действительно последнего выпуска
- if [ -z $LASTLINK ]
- then
- FIRST=$(echo $FIRSTLINK | sed -r 's/^http.*\/0*([0-9]+).(jpg|png)/\1/')
- wget -q -O $TMPDIR/$NAME.html http://a-comics.ru/comics/$NAME
- LASTLINK=$(grep -o -E "http://.*/users/.*.(jpg|png)" $TMPDIR/$NAME.html)
- rm $TMPDIR/$NAME.html
- REALLAST=$(echo $LASTLINK | sed -r 's/^http.*\/0*([0-9]+).(jpg|png)/\1/')
- fi
- USER=$(echo $LASTLINK | awk -F / '{print $5}')
- REALNAME=$(echo $LASTLINK | awk -F / '{print $6}')
- EXTENSION=$(echo $LASTLINK | sed -r 's/^.*[0-9]+.(.*)/\1/')
- if [ "$REALLAST" -gt "$LAST" ]
- then
- LAST=$REALLAST
- DATE=$(date +%Y:%m:%d\ %H:%M:%S)
- for IMAGENUM in $(seq -f "%05g" $FIRST $LAST)
- do
- wget -q -O $ENDDIR/$IMAGENUM.$EXTENSION http://a-comics.ru/users/$USER/$REALNAME/$IMAGENUM.$EXTENSION
- done
- echo $LAST > $ENDDIR/.last
- echo "$DATE: New comics downloaded - $NAME ($FIRST - $LAST)" >> $COMDIR/download.log
- fi
- else
- if [ -z $REALLAST ]
- then
- wget -q -O $TMPDIR/$NAME.html http://a-comics.ru/comics/$NAME
- REALLAST=$(grep -oE "^.*nav-btn nav-(list|rand)" $TMPDIR/$NAME.html | sed -r 's/^.*\/([0-9]+)\?.*/\1/')
- echo $LAST > $ENDDIR/.last
- rm $TMPDIR/$NAME.html
- fi
- if [ "$REALLAST" -gt "$LAST" ]
- then
- echo $REALLAST > $ENDDIR/.last
- #LAST=$REALLAST
- #FIRST=$(expr $LAST + 1)
- DATE=$(date +%Y:%m:%d\ %H:%M:%S)
- for (( PAGENUM=$FIRST; PAGENUM<=REALLAST; PAGENUM++))
- do
- wget -q -O $TMPDIR/$NAME.html http://a-comics.ru/comics/$NAME/$PAGENUM
- PRELINK=$(grep -o -E "img-wrp.*alt=" $TMPDIR/$NAME.html)
- if [ ! -z "$(echo $PRELINK | grep "http")" ]
- then
- LINK=$(echo $PRELINK | sed -r 's/.*(http:\/\/.*)".*/\1/')
- else
- LINK="http://a-comics.ru/$(echo $PRELINK | sed -r 's/.*src="(.*)".*/\1/')"
- fi
- EXTENSION=$(echo $LINK | sed -r 's/^.*\.([a-z]+)$/\1/')
- IMAGENUM=$(printf %05g $PAGENUM)
- wget -q -O $ENDDIR/$IMAGENUM.$EXTENSION $LINK
- done
- echo "$DATE: New comics downloaded - $NAME ($FIRST - $REALLAST)" >> $COMDIR/download.log
- fi
- fi
- fi
- done
- n_download() {
- echo "File downloaded"
- kdialog --passivepopup 'This is a notification' 5
- }
- rm -rf $TMPDIR
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement