BASH   24

grab

Guest on 24th January 2023 02:03:56 PM


  1. #!/bin/sh
  2.  
  3. GET=fetch
  4. #GET=echo
  5.  
  6. FILETYPES="jpg jpeg png gif"
  7.  
  8. did_something=0
  9.  
  10. filename() {
  11.         echo $1 | grep -o '[^/]*$'
  12. }
  13.  
  14. get_img() {
  15.         if [ ! -f `filename $1` ]; then
  16.                 $GET -q $1 2> /dev/null
  17.                 if [ $? -eq 0 ]; then
  18.                         echo getting $1
  19.                         did_something=1
  20.                 fi
  21.         #else
  22.                 #echo $1 already exists.
  23.         fi
  24. }
  25.  
  26. insert_header() {
  27.         file=$1
  28.         echo '<html><body>' > $file
  29.         lines=`wc -l ../index.html | awk '{ print $1 }'`
  30.         tail -$(($lines - 2)) ../index.html | head -$(($lines - 4)) | sed 's,"\([^"]*\)","../\1",g' >> $file
  31.         echo '<br/>' >> $file
  32.         date >> $file
  33.         echo '<br/>' >> $file
  34. }
  35.  
  36. grab_board() {
  37.         url=$1
  38.         dir=$2
  39.         prefix=`echo $url | sed 's/[^/]*$//'`
  40.         board=`filename $url`
  41.  
  42.  
  43.         mkdir $dir 2> /dev/null
  44.         cd $dir 2> /dev/null
  45.         mkdir thumbs 2> /dev/null
  46.         mkdir threads 2> /dev/null
  47.         mkdir src 2> /dev/null
  48.  
  49.         #echo board $board
  50.         cd threads
  51.         $GET -q $url > /dev/null
  52.  
  53.         for link in `egrep -o 'a href="[^"]+' $board | egrep -o '[^"=]*res[^" #]+' | uniq`; do
  54.                 echo $link | grep '^http://'
  55.                 if [ $? = 0 ]; then
  56.                         $GET -q $link > /dev/null
  57.                 else
  58.                         $GET -q $prefix$link > /dev/null
  59.                 fi
  60.                 threads="$threads threads/`filename $link`"
  61.         done
  62.         cd ..
  63.  
  64.         #for thread in `ls threads/*html`; do
  65.         for thread in $threads; do
  66.                 thumbs=`egrep -io 'img src="?[^" #]+' $thread | egrep -o '[^="]+$' | grep thumb`
  67.                 cd thumbs
  68.                 for img in $thumbs; do
  69.                         get_img $img
  70.                 done
  71.                 cd .. > /dev/null
  72.                 for type in $FILETYPES; do
  73.                         imgs=`egrep -io 'a href="?[^" #]+' $thread | egrep -o '[^="]+$'  | grep -i $type\$`
  74.                         cd src
  75.                         for img in $imgs; do
  76.                                 get_img $img
  77.                         done
  78.                         cd .. > /dev/null
  79.                         #echo $imgs
  80.                 done
  81.         done
  82.  
  83.         if [ $did_something = 0 ]; then
  84.                 echo "nothing to do"
  85.                 exit
  86.         fi
  87.  
  88.         rm snowcrash.html 2> /dev/null
  89.  
  90.         echo generating html `date`
  91.         num=0
  92.         file_num=0
  93.         file_name=index.tmphtml
  94.         insert_header $file_name
  95.         for img in `ls src | grep -v 'html$' | grep '\.' | sort -rn`; do
  96.                 thumb=`echo $img | cut -d . -f 1`s.jpg
  97.  
  98.                 echo src/$img | grep '\.gif$' > /dev/null
  99.                 if [ $? -eq 0 ]; then
  100.                         # 000000e0  46 46 47 47 47 48 48 48  49 49 49 4a 4a 4a 4b 4b  |FFGGGHHHIIIJJJKK|
  101.                         hd src/$img | head -15 | tail -1 | grep GGG > /dev/null
  102.                         if [ $? -eq 0 ]; then
  103.                                 #echo deleting snowcrash $img
  104.                                 #rm $img thumbs/$thumb
  105.                                 echo src/$img thumbs/$thumb >> snowcrash.html
  106.                                 continue
  107.                         fi
  108.                 fi
  109.  
  110.                 num=$(($num + 1))
  111.                 if [ $num -gt 100 ]; then
  112.                         num=0
  113.                         file_num=$(($file_num + 1))
  114.                         file_name=${file_num}.tmphtml
  115.                         insert_header $file_name
  116.                 fi
  117.  
  118.                 date=`echo $img | cut -d. -f 1 | sed s,...$,,`
  119.                 date=`date -r $date '+%m/%d/%y %H:%M:%S'`
  120.                 echo '<a href="'src/$img'"><img src="thumbs/'$thumb'" title="'$date'"></a>' >> $file_name
  121.         done
  122.  
  123.         echo appending footer `date`
  124.         for i in `ls *.tmphtml`; do
  125.                 echo '<br/><a href="index.html">0</a>' >> $i
  126.                 for j in `ls *.html | sort -n`; do
  127.                         if [ $j = index.tmphtml -o $j = index.html -o $j = snowcrash.html ]; then
  128.                                 continue
  129.                         fi
  130.                         echo '<a href="'$j'">'`echo $j | sed 's,\(.*\)\..*html,\1,'`'</a>' >> $i
  131.                 done
  132.                 echo '</body></html>' >> $i
  133.                 mv $i `echo $i | sed s,\.tmp,.,`
  134.         done
  135.  
  136.         cd ..
  137. }
  138.  
  139. #n=`wc -l $1 | awk '{ print $1 }'`
  140. #for i in `jot $n 1`; do
  141. #       line=`cat $1 | head -$i | tail -1`
  142. #       url=`echo $line | awk '{ print $1 }'`
  143. #       dir=`echo $line | awk '{ print $2 }'`
  144. #       grab_board $url $dir
  145. #done
  146.  
  147. grab_board $1 $2

Raw Paste


Login or Register to edit or fork this paste. It's free.

">