Advertisement
Guest User

GAI B O I

a guest
Feb 13th, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.14 KB | None | 0 0
  1. #!/bin/bash
  2. function display_usage() {
  3.     echo -e '  options:\n    -f  Folder (use absolute paths)\n    -s  Start on page\n    -a  Amount of pages\n    -t  Text to search\n    -b  Board to search\n    -z  Single image search (use with a hotkey)\n\n    gai -t "install gentoo" -b g'
  4.     exit 1
  5. }
  6. page_start=1
  7. page_amount=3
  8. search_term=''
  9. board='b'
  10. single_image='false'
  11. while getopts 'f:s:a:t:b:z' flag; do
  12.     case "${flag}" in
  13.         f)
  14.             folder="${OPTARG}"
  15.             ;;
  16.         s)
  17.             page_start="${OPTARG}"
  18.             ;;
  19.         a)
  20.             page_amount="${OPTARG}"
  21.             ;;
  22.         t)
  23.             search_term="${OPTARG}"
  24.             ;;
  25.         b)
  26.             board="${OPTARG}"
  27.             ;;
  28.         z)
  29.             single_image='true'
  30.             ;;
  31.         *)
  32.             display_usage
  33.             ;;
  34.     esac
  35. done
  36. if ! ${single_image} && [[ -z "${search_term}" || -z "${board}" ]]; then
  37.     display_usage
  38. fi
  39. function set_board_opts(){
  40.     case "${board}" in
  41.         b)
  42.             export search_board='thebarchive.com'
  43.             export search_images='thebarchive.com/data/b/image'
  44.             ;;
  45.         g)
  46.             export search_board='archive.rebeccablacktech.com'
  47.             export search_images='desu-usergeneratedcontent.xyz/g/image'
  48.             ;;
  49.         gif)
  50.             export search_board='desuarchive.org'
  51.             export search_images='desu-usergeneratedcontent.xyz/gif/image'
  52.             ;;
  53.         *)
  54.             display_usage
  55.             ;;
  56.     esac
  57. }
  58. if ${single_image}; then
  59.     initial_form="$(zenity --forms --title='GAI - Get Archived Images' --text="Find images" --add-entry='Search Term:' --add-entry='Pages:' --add-entry='Board:')"
  60.     search_term="${initial_form%%|*}"
  61.     ps_var="${initial_form#*|}"
  62.     page_amount="${ps_var%|*}"
  63.     page_amount="${page_amount:-3}"
  64.     board="${initial_form##*|}"
  65.     board="${board:-b}"
  66.     set_board_opts "${board}"
  67.     page_end=$((page_start+page_amount))
  68.     for ((page_start; page_start < page_end; page_start++)); do
  69.         mapfile -t image_links < <(curl -s "https://${search_board}/${board}/search/text/${search_term}/filter/text/page/${page_start}/" \
  70.         | grep -o -i "https://${search_images}/[0-9]*/[0-9]*/[0-9]*\\.[a-z]\\{3\\}" \
  71.         | uniq)
  72.         printf '<img src="%s" style="max-height:150px;max-width:150px" />\n' "${image_links[@]}" > '/tmp/image_list.html'
  73.         zenity --text-info --title='GAI - Get Archived Images' --width=640 --height=480 --html --filename='/tmp/image_list.html'
  74.     done
  75.     exit 0
  76. fi
  77. set_board_opts "${board}"
  78. folder="${folder:-/home/blackcat/Downloads/4chan/${board}/${search_term}/}"
  79. mkdir -p "${folder}"
  80. for ((page_start; page_start < page_end; page_start++)); do
  81.     curl -s "https://${search_board}/${board}/search/text/${search_term}/type/op/page/${page_start}/" \
  82.     | grep -o -i "https://${search_board}/${board}/thread/[0-9]*/" \
  83.     | uniq \
  84.     | while read -r thread; do
  85.         mapfile -t image_links < <(curl -s "${thread}" | grep -o -i "https://${search_images}/[0-9]*/[0-9]*/[0-9]*\\.[a-z]\\{3,4\\}" | uniq)
  86.         original_post="$(curl -s "${thread}" | grep -oP '(?<=<div class="text"> ).*?(?= </div>)' | head -n1 | echo -e "$(sed 's/<br \//\\n/g')" | head -n5 | sed 's/<[^>]\+>/ /g; s/\&gt\;//g')"
  87.         printf '\033cCurrent page: %s\nRetrieving images from: %s\nImages found: %s\n\nOriginal post:\n%s ...\n\n' "${page_start}" "${thread}" "${#image_links[@]}" "${original_post}"
  88.         wget -q --show-progress -nc -P "${folder}" "${image_links[@]}"
  89.     done
  90. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement