/mangafox.sh

http://gsbabil.googlecode.com/ · Shell · 110 lines · 84 code · 19 blank · 7 comment · 9 complexity · a5c7b1daa02354de28f2d648b9aa0bbd MD5 · raw file

  1. #!/bin/bash
  2. RED='\e[1;31m'
  3. CYAN='\e[1;36m'
  4. NC='\e[0m' # No Color
  5. YLW='\e[1;33m'
  6. WHITE='\e[0;37m'
  7. main_url="http://www.mangafox.com/manga"
  8. wget_param="--tries=10 --retry-connrefused"
  9. ## usage
  10. if [ -z $1 ]
  11. then
  12. echo
  13. echo -e "${CYAN}[*]${RED} usage: `basename $0` manga_url${NC}"
  14. echo
  15. exit
  16. else
  17. manga_name=`echo $1 | awk -F '/' '{for(i=NF;i>=0;i--){if(length($i)>0){print $i;break;}}}'`
  18. if [ ! -z "$2" ]
  19. then
  20. specific_chapter="$2"
  21. fi
  22. fi
  23. ##
  24. function find_chapters()
  25. {
  26. TMP="${manga_name}_find_chapters.tmp"
  27. echo -n -e "${CYAN}[*]${RED} Finding total chapters in ${CYAN} $manga_name ${NC}= "
  28. wget $wget_param -q -nv "${main_url}/${manga_name}/?no_warning=1" -O $TMP
  29. chapters=`cat $TMP | grep -e 'class="chico">' | grep -v -e '</td>' -e '#listing' | awk -F '"' '{print $2}' | sed 's/^\/manga\///g'`
  30. count=0
  31. for c in $chapters
  32. do
  33. mkdir -p ./$c
  34. #echo $c ##debug
  35. count=$((count+1))
  36. done
  37. echo -e "${CYAN}${count}${NC}"
  38. }
  39. function parse_chapter_n_download()
  40. {
  41. PAGES="pages.tmp"
  42. PAGE="page_html.tmp"
  43. for chapter in $chapters
  44. do
  45. pwd=`pwd`
  46. if [ "$specific_chapter" ]
  47. then
  48. mkdir -p "$specific_chapter" 2>/dev/null
  49. chapter=$specific_chapter
  50. fi
  51. cd ./$chapter
  52. ## find total number of pages in chapter
  53. echo -n -e "${CYAN}[*]${RED} Total pages in ${CYAN} $chapter ${NC}= "
  54. wget -q -nv $wget_param $main_url/$chapter -O $PAGES
  55. pages=`cat $PAGES | grep '^.*<option value=.*<\/select>.*$' -m1 | awk '{for(i=1;i<=NF;i++){if($(i-1)~"value"){print $i}}}' | sed -e 's/selected//g;s/option//g;s/[<>\/"=]//g;'`
  56. n=0
  57. for k in $pages
  58. do
  59. #echo $k ##debug
  60. n=$((n+1))
  61. done
  62. echo -e "${CYAN}$n${NC}"
  63. ## now i have a list of (1,2,3...).html pages
  64. for p in $pages
  65. do
  66. wget $wget_param -q -nv $main_url/$chapter/${p}.html -O $PAGE
  67. img_url=`cat $PAGE | grep 'onclick="return enlarge();' | awk '{for(i=1;i<=NF;i++){if($i~"http://"){print $i}}}' | sed 's/src=//g;s/["=]//g'`
  68. img=`echo $img_url | awk -F '/' '{print $NF}'`
  69. echo -e -n "${CYAN}>>${WHITE} $img_url ${RED} ... ${NC}"
  70. wget $wget_param -q -nv $img_url
  71. if [ -e $img ]
  72. then
  73. echo -e "${CYAN}[done]${NC}"
  74. else
  75. echo -e "${YLW}[failed]${NC}"
  76. fi
  77. done
  78. cd $pwd
  79. if [ "$specific_chapter" ]
  80. then
  81. exit;
  82. fi
  83. done
  84. }
  85. function main()
  86. {
  87. rm -rf ${manga_name}
  88. find_chapters
  89. parse_chapter_n_download
  90. }
  91. main