apiVersion: v1 data: reddit_downloader.sh: | #!/bin/bash # Check if username is provided if [ -z "$1" ]; then echo "Usage: $0 " exit 1 fi USER="$1" DEST_FOLDER="${2:-./${USER}_images}" USER_AGENT="Mozilla/5.0 (compatible; RedditImageDownloader/1.0)" mkdir -p "$DEST_FOLDER" AFTER="" BASE_URL="https://www.reddit.com/user/$USER/submitted/.json" echo "Fetching all image posts from user $USER..." while true; do # Build URL with pagination if [ -z "$AFTER" ]; then URL="${BASE_URL}?limit=100" else URL="${BASE_URL}?limit=100&after=${AFTER}" fi # Fetch posts RESPONSE=$(curl -s -A "$USER_AGENT" "$URL") # Validate JSON if ! echo "$RESPONSE" | jq empty 2>/dev/null; then echo "Error: Failed to fetch or parse JSON. Exiting." break fi # Extract image URLs IMAGE_URLS=$(echo "$RESPONSE" | jq -r '.data.children[] | select(.data.url | test("\\.(jpg|jpeg|png|gif)$")) | .data.url') # Exit if no more images found if [ -z "$IMAGE_URLS" ]; then echo "No more images found on this page." fi # Download images echo "$IMAGE_URLS" | while read -r image_url; do [ -z "$image_url" ] && continue FILENAME=$(basename "$image_url") if [ ! -f "$DEST_FOLDER/$FILENAME" ]; then echo "Downloading $FILENAME..." curl -s -A "$USER_AGENT" -o "$DEST_FOLDER/$FILENAME" "$image_url" else echo "Skipping existing file $FILENAME" fi done # Get 'after' token for pagination AFTER=$(echo "$RESPONSE" | jq -r '.data.after') if [ "$AFTER" == "null" ] || [ -z "$AFTER" ]; then echo "Reached end of posts." break fi done echo "Download complete. Images saved to $DEST_FOLDER" kind: ConfigMap metadata: creationTimestamp: null name: stash-reddit-dowloader namespace: stash