Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /usr/bin/env bash
- ## website:auto_update_delay:pictures_format
- FMT_REF=(
- '4chan':5:'images\.4chan\.org/\w+/src/[0-9]+\.\w+'
- 'imagefap':0:'fap\.to/images/full/[0-9]+/[0-9]+/\w+\.\w+'
- )
- function fatal {
- echo "$@" 1>&2
- exit 1
- }
- function display_source {
- curl "$@" 2>/dev/null
- }
- function download_file {
- wget -o /dev/null -O "$1" "$2"
- }
- function loop_urls {
- local URL="$1"
- local FOLDER="$2"
- local FMT="$3"
- echo "Building URLs index from ${URL}..."
- local U=( $(display_source "$URL" | egrep -o "$FMT" | sort -u | uniq) )
- local NU=${#U[@]}
- test "$NU" -lt 1 && fatal "Unable to fetch $URL (404?)"
- local n=0
- for u in "${U[@]}"; do
- local F=$(basename "$u")
- n=$((n + 1))
- echo -n "Downloading pic #${n}/${NU} (${F})..."
- test -f "${FOLDER}/${F}" && echo " Cached" && continue
- download_file "${FOLDER}/${F}" "http://${u}" \
- || fatal "Unable to download pic (404?)"
- echo ' OK'
- done
- }
- function main {
- local URL="$1"
- local FOLDER="$2"
- echo "Creating folder $2..."
- mkdir -p "$FOLDER" 2>/dev/null || fatal "Unable to create folder $FOLDER"
- local FMT=''
- local DELAY='0'
- for i in "${FMT_REF[@]}"; do
- local k=$(echo "$i" | cut -d: -f1)
- local d=$(echo "$i" | cut -d: -f2)
- local v=$(echo "$i" | cut -d: -f3)
- echo "$URL" | grep -q "$k" \
- && FMT="$v" \
- && DELAY="$d" \
- && break
- done
- test -z "$FMT" && fatal "Unsupported website"
- echo "$DELAY" | egrep -q '[0-9]+' || fatal "Delay isn't a number"
- echo "Detected URL format: $FMT (delay: ${DELAY})"
- while true; do
- loop_urls "$URL" "$FOLDER" "$FMT"
- if [ "$DELAY" -gt 0 ]; then
- sleep "$DELAY"
- else
- break
- fi
- done
- }
- if [ $# -eq 2 ]; then
- main "$1" "$2"
- else
- fatal "Usage: $0 <url> <folder>"
- fi
Add Comment
Please, Sign In to add comment