Radjah

getpixiv.sh

Nov 1st, 2013
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.67 KB | None | 0 0
  1. #! /bin/bash
  2.  
  3. dldr='aria2c --remote-time'
  4. if [ ! -d $3 ]
  5. then
  6. echo Creating $3
  7. mkdir "$3"
  8. else
  9. dldr='wget -nc'
  10. fi
  11. echo Entering $3
  12. cd $3
  13.  
  14. # ярлык на страницу автора
  15. echo \[InternetShortcut\] > "$3.url"
  16. echo URL=http\:\/\/www.pixiv.net\/member_illust.php\?id=$1 >> "$3.url"
  17.  
  18. # настройки
  19. # id художника (athid) берется из URL вида http://www.pixiv.net/member_illust.php?id=18530, где 18530 и есть искомый параметр.
  20. pixid=ЛОГИН
  21. pixpass=ПАРОЛЬ
  22. picnum=$2
  23. let "pagenum=picnum/20+1"
  24. athid=$1
  25.  
  26. # логинимся (куки в pixiv.txt)
  27. AUTH=`curl -s -c pixiv.txt -F"mode=login" -F"pass=${pixpass}" -F"pixiv_id=${pixid}" -F"skip=1" http://www.pixiv.net/index.php`
  28.  
  29. # качаем все страницы с картинками и парсим их на ходу
  30. for ((i=1;i<=$pagenum;i++))
  31. do
  32. wget --load-cookies=pixiv.txt "http://www.pixiv.net/member_illust.php?id=$athid&p=$i" -O - --referer="http://www.pixiv.net/"|pcregrep -o  -e 'http\:\/\/i\d{1,3}\.pixiv\.net\/img-inf\/img\/[^\"]+' -e 'http\:\/\/i\d{1,3}\.pixiv\.net\/img\d{1,3}\/img\/[^\"]+'|sed 's/_s\./\./' | sed 's/\?.*//'>> get.pixiv.txt
  33. done;
  34.  
  35. # Отделяем новые хитрые ссылки
  36. basename -a `cat get.pixiv.txt| grep img-inf`|sed 's/\..*//' > get.pixiv.alt.txt
  37. cat get.pixiv.txt | grep -v img-inf > get.pixiv.txt.tmp
  38. mv get.pixiv.txt.tmp get.pixiv.txt
  39.  
  40. # Парсим страницы
  41. # http://www.pixiv.net/member_illust.php?mode=big&illust_id=29149986
  42.  
  43. for i in `cat get.pixiv.alt.txt`
  44. do
  45. wget "http://www.pixiv.net/member_illust.php?mode=big&illust_id=$i" --load-cookies=pixiv.txt --referer="http://www.pixiv.net/member_illust.php?mode=medium&illust_id=$i" -O -|pcregrep -o  -e 'http\:\/\/i\d{1,3}\.pixiv\.net\/img\d{1,3}\/img\/[^\"]+' >> get.pixiv.txt
  46. done;
  47.  
  48. # Чистка от левых дописок к имени файла
  49. cat get.pixiv.txt| sed 's/\?.*//' > get.pixiv.txt.tmp
  50. mv get.pixiv.txt.tmp get.pixiv.txt
  51.  
  52. # качаем все картинки, которые нашли
  53.  
  54. $dldr -i get.pixiv.txt --referer="http://www.pixiv.net/"
  55.  
  56. cat get.pixiv.txt |sed 's/http\:\/\/i[^\/]*\/img[0-9]*\/img\/[^\/]*\///g'|sort|uniq > list1
  57. ls *.jpg *.png *.gif|grep -v _ > list2
  58. cat list1 list2|sort|uniq -u|sed 's/\..*//g' > list3
  59. for i in `cat list3`
  60. do
  61. wget "http://www.pixiv.net/member_illust.php?mode=manga&illust_id=$i&type=scroll" --load-cookies=pixiv.txt --referer="http://www.pixiv.net/" -O -|pcregrep -o -e "http\:\/\/i\d{1,3}\.pixiv\.net\/img\d{1,3}\/img\/[^(\'|\?|\")]+" -e "http\:\/\/i\d{1,3}\.pixiv\.net\/img-inf\/img\/[^(\'|\?|\")]+"| sed 's/_p/_big_p/g'>> get.pixiv.albums.txt
  62. done;
  63. cat get.pixiv.albums.txt| grep -v _s|grep -v '\/mobile\/'|sort|uniq > get.pixiv.albums.clean.txt
  64. mv get.pixiv.albums.clean.txt get.pixiv.albums.txt
  65.  
  66. $dldr -i get.pixiv.albums.txt --referer="http://www.pixiv.net/"
  67.  
  68. rm get.pixiv.albums.txt
  69.  
  70. # Докачиваем альбомы без _big
  71. ls *.jpg *.png *.gif|grep big|sed 's/_big[^\.]*//g'|uniq > list2
  72. cat list3 list2|sort|sed 's/\..*//g'|uniq -u > list4
  73. for i in `cat list4`
  74. do
  75. wget "http://www.pixiv.net/member_illust.php?mode=manga&illust_id=$i&type=scroll" --load-cookies=pixiv.txt --referer="http://www.pixiv.net/" -O -|pcregrep -o -e "http\:\/\/i\d{1,3}\.pixiv\.net\/img\d{1,3}\/img\/[^(\'|\?|\")]+" -e "http\:\/\/i\d{1,3}\.pixiv\.net\/img-inf\/img\/[^(\'|\?|\")]+" >> get.pixiv.albums.txt
  76. done;
  77. cat get.pixiv.albums.txt| grep -v _s|grep -v '\/mobile\/'|sort|uniq > get.pixiv.albums.clean.txt
  78. mv get.pixiv.albums.clean.txt get.pixiv.albums.txt
  79. $dldr -i get.pixiv.albums.txt --referer="http://www.pixiv.net/"
  80.  
  81. # удаляем палево
  82.  
  83. rm -f *.txt list*
Advertisement
Add Comment
Please, Sign In to add comment