Compare commits
3
Commits
4351a7c0a4
...
1c8391d87e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1c8391d87e | ||
|
|
731865a102 | ||
|
|
f71062147f |
@@ -1,2 +1,7 @@
|
|||||||
# Stash
|
# Stash
|
||||||
|
|
||||||
|
usage :
|
||||||
|
|
||||||
|
./reddit_downloader.sh USERNAME LOCATION
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Executable
+65
@@ -0,0 +1,65 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Check if username is provided
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
echo "Usage: $0 <reddit_username> <destination_folder>"
|
||||||
|
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"
|
||||||
Reference in New Issue
Block a user