Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- function display_usage() {
- 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'
- exit 1
- }
- page_start=1
- page_amount=3
- search_term=''
- board='b'
- single_image='false'
- while getopts 'f:s:a:t:b:z' flag; do
- case "${flag}" in
- f)
- folder="${OPTARG}"
- ;;
- s)
- page_start="${OPTARG}"
- ;;
- a)
- page_amount="${OPTARG}"
- ;;
- t)
- search_term="${OPTARG}"
- ;;
- b)
- board="${OPTARG}"
- ;;
- z)
- single_image='true'
- ;;
- *)
- display_usage
- ;;
- esac
- done
- if ! ${single_image} && [[ -z "${search_term}" || -z "${board}" ]]; then
- display_usage
- fi
- function set_board_opts(){
- case "${board}" in
- b)
- export search_board='thebarchive.com'
- export search_images='thebarchive.com/data/b/image'
- ;;
- g)
- export search_board='archive.rebeccablacktech.com'
- export search_images='desu-usergeneratedcontent.xyz/g/image'
- ;;
- gif)
- export search_board='desuarchive.org'
- export search_images='desu-usergeneratedcontent.xyz/gif/image'
- ;;
- *)
- display_usage
- ;;
- esac
- }
- if ${single_image}; then
- initial_form="$(zenity --forms --title='GAI - Get Archived Images' --text="Find images" --add-entry='Search Term:' --add-entry='Pages:' --add-entry='Board:')"
- search_term="${initial_form%%|*}"
- ps_var="${initial_form#*|}"
- page_amount="${ps_var%|*}"
- page_amount="${page_amount:-3}"
- board="${initial_form##*|}"
- board="${board:-b}"
- set_board_opts "${board}"
- page_end=$((page_start+page_amount))
- for ((page_start; page_start < page_end; page_start++)); do
- mapfile -t image_links < <(curl -s "https://${search_board}/${board}/search/text/${search_term}/filter/text/page/${page_start}/" \
- | grep -o -i "https://${search_images}/[0-9]*/[0-9]*/[0-9]*\\.[a-z]\\{3\\}" \
- | uniq)
- printf '<img src="%s" style="max-height:150px;max-width:150px" />\n' "${image_links[@]}" > '/tmp/image_list.html'
- zenity --text-info --title='GAI - Get Archived Images' --width=640 --height=480 --html --filename='/tmp/image_list.html'
- done
- exit 0
- fi
- set_board_opts "${board}"
- folder="${folder:-/home/blackcat/Downloads/4chan/${board}/${search_term}/}"
- mkdir -p "${folder}"
- for ((page_start; page_start < page_end; page_start++)); do
- curl -s "https://${search_board}/${board}/search/text/${search_term}/type/op/page/${page_start}/" \
- | grep -o -i "https://${search_board}/${board}/thread/[0-9]*/" \
- | uniq \
- | while read -r thread; do
- mapfile -t image_links < <(curl -s "${thread}" | grep -o -i "https://${search_images}/[0-9]*/[0-9]*/[0-9]*\\.[a-z]\\{3,4\\}" | uniq)
- 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/\>\;//g')"
- 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}"
- wget -q --show-progress -nc -P "${folder}" "${image_links[@]}"
- done
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement