Advertisement
Guest User

Untitled

a guest
Jan 19th, 2013
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 9.17 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3.  
  4. COMDIR="/home/cppmm/random/comics"
  5. TMPDIR="/tmp/comics"
  6.  
  7. # Создаём временную директорию
  8. if [ ! -d $TMPDIR ]
  9. then
  10.         mkdir $TMPDIR
  11. fi
  12.  
  13. for DIR in $(ls $COMDIR/)
  14. do
  15.         LAST=0
  16.         FIRST=1
  17.         NUM=0
  18.         if [ -d $COMDIR/$DIR ]
  19.         then
  20.                 NAME=$DIR
  21.                 ENDDIR="$COMDIR/$NAME"
  22.                 # Получаем номер последнего комикса или создаём файл для его хранения, если ничего ещё не скачано.
  23.                 if [ ! -d $ENDDIR ]
  24.                 then
  25.                         mkdir $ENDDIR
  26.                         touch "$ENDDIR/.last"
  27.                 fi
  28.                 if [ -e "$ENDDIR/.last" ] && [ -s "$ENDDIR/.last" ]
  29.                 then
  30.                         LAST=$(cat $ENDDIR/.last)
  31.                         FIRST=$(expr $LAST + 1)
  32.                         REALLAST=""
  33.                 else
  34.                         # Ссылка на реальный номер файла первого выпуска
  35.                         wget -q -O $TMPDIR/$NAME.html http://a-comics.ru/comics/$NAME/1
  36.                         if [ "$?" -ne "0" ]                                                                                                                                                                
  37.                         then                                                                                                                                                                              
  38.                                 DATE=$(date +%Y:%m:%d\ %H:%M:%S)                                                                                                                                          
  39.                                 echo "$DATE: Wrong dirname $NAME" >> $COMDIR/download.log                                                                                                                  
  40.                                 continue                                                                                                                                                                  
  41.                         fi                                                                                                                                                                                
  42.                         FIRSTLINK=$(grep -o -E "http://.*/users/.*[0-9]+.(jpg|png)" $TMPDIR/$NAME.html)                                                                                                    
  43.                         # Если тут пусто, то нормальных ссылок на файлы нет и надо каждый номер смотреть и грепать                                                                                        
  44.                         if [ -z $FIRSTLINK ]                                                                                                                                                              
  45.                         then                                                                                                                                                                              
  46.                                 rm $TMPDIR/$NAME.html                                                                                                                                                      
  47.                                 wget -q -O $TMPDIR/$NAME.html http://a-comics.ru/comics/$NAME                                                                                                              
  48.                                 NUM=0                                                                                                                                                                      
  49.                                 REALLAST=$(grep -oE "^.*nav-btn nav-(list|rand)" $TMPDIR/$NAME.html | sed -r 's/^.*\/([0-9]+)\?.*/\1/')                                                                    
  50.                                 echo $LAST > $ENDDIR/.last                                                                                                                                                
  51.                                 rm $TMPDIR/$NAME.html
  52.                         else
  53.                                 rm $TMPDIR/$NAME.html
  54.                                 FIRST=$(echo $FIRSTLINK | sed -r 's/^http.*\/0*([0-9]+).(jpg|png)/\1/')
  55.                                 wget -q -O $TMPDIR/$NAME.html http://a-comics.ru/comics/$NAME
  56.                                 if [ "$?" -ne "0" ]
  57.                                 then
  58.                                         continue
  59.                                 fi
  60.                                 LASTLINK=$(grep -o -E "http://.*/users/.*.(jpg|png)" $TMPDIR/$NAME.html)
  61.                                 rm $TMPDIR/$NAME.html
  62.                                 REALLAST=$(echo $LASTLINK | sed -r 's/^http.*\/0*([0-9]+).(jpg|png)/\1/')
  63.                                 NUM=1
  64.                                 if [ $(echo $REALLAST | grep "/") ]
  65.                                 then
  66.                                         NUM=0
  67.                                         REALLAST=""
  68.                                 fi
  69.                         fi
  70.                 fi
  71.  
  72.                 if [ "$NUM" -eq "1" ]
  73.                 then
  74.                         # Вытаскиваем урл картинок комикса и номер действительно последнего выпуска
  75.                         if [ -z $LASTLINK ]
  76.                         then
  77.                                 FIRST=$(echo $FIRSTLINK | sed -r 's/^http.*\/0*([0-9]+).(jpg|png)/\1/')
  78.                                 wget -q -O $TMPDIR/$NAME.html http://a-comics.ru/comics/$NAME
  79.                                 LASTLINK=$(grep -o -E "http://.*/users/.*.(jpg|png)" $TMPDIR/$NAME.html)
  80.                                 rm $TMPDIR/$NAME.html
  81.                                 REALLAST=$(echo $LASTLINK | sed -r 's/^http.*\/0*([0-9]+).(jpg|png)/\1/')
  82.                         fi
  83.                         USER=$(echo $LASTLINK | awk -F / '{print $5}')
  84.                         REALNAME=$(echo $LASTLINK | awk -F / '{print $6}')
  85.                         EXTENSION=$(echo $LASTLINK | sed -r 's/^.*[0-9]+.(.*)/\1/')
  86.  
  87.                         if [ "$REALLAST" -gt "$LAST" ]
  88.                         then
  89.                                 LAST=$REALLAST
  90.                                 DATE=$(date +%Y:%m:%d\ %H:%M:%S)
  91.                                 for IMAGENUM in $(seq -f "%05g" $FIRST $LAST)
  92.                                 do
  93.                                         wget -q -O $ENDDIR/$IMAGENUM.$EXTENSION http://a-comics.ru/users/$USER/$REALNAME/$IMAGENUM.$EXTENSION
  94.                                 done
  95.                                 echo $LAST > $ENDDIR/.last
  96.                                 echo "$DATE: New comics downloaded - $NAME ($FIRST - $LAST)" >> $COMDIR/download.log
  97.                         fi
  98.                 else
  99.                         if [ -z $REALLAST ]
  100.                         then
  101.                                 wget -q -O $TMPDIR/$NAME.html http://a-comics.ru/comics/$NAME
  102.                                 REALLAST=$(grep -oE "^.*nav-btn nav-(list|rand)" $TMPDIR/$NAME.html | sed -r 's/^.*\/([0-9]+)\?.*/\1/')
  103.                                 echo $LAST > $ENDDIR/.last
  104.                                 rm $TMPDIR/$NAME.html
  105.                         fi
  106.                         if [ "$REALLAST" -gt "$LAST" ]
  107.                         then
  108.                                 echo $REALLAST > $ENDDIR/.last
  109.                                 #LAST=$REALLAST
  110.                                 #FIRST=$(expr $LAST + 1)
  111.                                 DATE=$(date +%Y:%m:%d\ %H:%M:%S)
  112.                                 for (( PAGENUM=$FIRST; PAGENUM<=REALLAST; PAGENUM++))
  113.                                 do
  114.                                         wget -q -O $TMPDIR/$NAME.html http://a-comics.ru/comics/$NAME/$PAGENUM
  115.                                         PRELINK=$(grep -o -E "img-wrp.*alt=" $TMPDIR/$NAME.html)
  116.                                         if [ ! -z "$(echo $PRELINK | grep "http")" ]
  117.                                         then
  118.                                                 LINK=$(echo $PRELINK | sed -r 's/.*(http:\/\/.*)".*/\1/')
  119.                                         else
  120.                                                 LINK="http://a-comics.ru/$(echo $PRELINK | sed -r 's/.*src="(.*)".*/\1/')"
  121.                                        fi
  122.                                        EXTENSION=$(echo $LINK | sed -r 's/^.*\.([a-z]+)$/\1/')
  123.                                        IMAGENUM=$(printf %05g $PAGENUM)
  124.                                        wget -q -O $ENDDIR/$IMAGENUM.$EXTENSION $LINK
  125.  
  126.                                done
  127.                                echo "$DATE: New comics downloaded - $NAME ($FIRST - $REALLAST)" >> $COMDIR/download.log
  128.                        fi
  129.                fi
  130.        fi
  131. done
  132.  
  133.  
  134. n_download() {
  135.        echo "File downloaded"
  136.        kdialog --passivepopup 'This is a notification' 5
  137. }
  138.  
  139. rm -rf $TMPDIR
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement