https://github.com/simonneutert/reddit-api-image-getter
Gets images from a subreddit and optionally saves them.
https://github.com/simonneutert/reddit-api-image-getter
axios javascript node node-js node-module nodejs npm-package reddit subreddit xhr
Last synced: 6 days ago
JSON representation
Gets images from a subreddit and optionally saves them.
- Host: GitHub
- URL: https://github.com/simonneutert/reddit-api-image-getter
- Owner: simonneutert
- License: mit
- Created: 2020-01-12T11:53:13.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2025-09-13T12:40:11.000Z (23 days ago)
- Last Synced: 2025-09-13T14:51:24.847Z (22 days ago)
- Topics: axios, javascript, node, node-js, node-module, nodejs, npm-package, reddit, subreddit, xhr
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/reddit-api-image-getter
- Size: 37.1 KB
- Stars: 5
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: Readme.md
- License: LICENSE
Awesome Lists containing this project
README
# Reddit API Image Getter
CLI tool and Node.js library to fetch and download images from Reddit subreddits. Zero dependencies, uses modern Node.js built-in modules.
## Install
**As a CLI tool (global):**
```bash
npm install -g reddit-api-image-getter
```**As a Node.js library:**
```bash
npm install reddit-api-image-getter --save
```## CLI Usage
After global installation, use the `reddit-images` command:
```bash
# Download hot images from a subreddit
reddit-images ProgrammerHumor# Download top images instead of hot
reddit-images typescript --top# Specify custom output directory
reddit-images javascript --output ./my-images# Short flags
reddit-images memes -t -o ~/Downloads/reddit-images# Show help
reddit-images --help# Show version
reddit-images --version
```### CLI Options
- `` - The subreddit name (without r/)
- `-t, --top` - Get top images instead of hot (default: hot)
- `-o, --output DIR` - Output directory (default: ./images)
- `-h, --help` - Show help message
- `-v, --version` - Show version numberImages are automatically organized into subdirectories by subreddit name.
## Library Usage (Node.js)
Use as a Node.js library in your projects:
## Example
```javascript
const path = require('path');
const RedditApiImageGetter = require('reddit-api-image-getter');const getter = new RedditApiImageGetter();
// `getHotImagesOfSubReddit('subreddit')`
// returns a Promise, that, when successful returns
// an Array containing RedditImageEntry object instances.
//
// Each RedditImageEntry object is then passed to
// `saveRedditImageEntryToDisk(imageEntry, path)`
// to be saved to disk.
//
// See what each RedditImageEntry does in
// lib/classes/RedditImageEntry.js and lib/classes/RedditEntry.js
//
// get the top images of a subreddit: using
// getTopImagesOfSubReddit(subreddit = 'ProgrammerHumor')
//
getter.getHotImagesOfSubReddit('ProgrammerHumor').then(function (result) {
for (imageEntry of result) {
const targetDirectory = path.resolve(__dirname, 'images', 'hot');
getter.saveRedditImageEntryToDisk(imageEntry, targetDirectory);
}
}).catch(function (error) {
console.log(error)
})getter.getTopImagesOfSubReddit('ProgrammerHumor').then(function (result) {
for (imageEntry of result) {
// do begin with a starting '/' if you need to:
// https://nodejs.org/api/path.html#path_path_resolve_paths
const targetDirectory = path.resolve(__dirname, 'images', 'top');
getter.saveRedditImageEntryToDisk(imageEntry, targetDirectory);
}
}).catch(function (error) {
console.log(error);
});
```### Modern async/await syntax:
```javascript
const RedditApiImageGetter = require('reddit-api-image-getter');
const path = require('path');async function downloadImages() {
const getter = new RedditApiImageGetter();try {
// Get hot images
const hotImages = await getter.getHotImagesOfSubReddit('ProgrammerHumor');
const targetDirectory = path.resolve(__dirname, 'images', 'hot');for (const imageEntry of hotImages) {
if (imageEntry.imageUrl) {
getter.saveRedditImageEntryToDisk(imageEntry, targetDirectory);
}
}console.log(`Downloaded ${hotImages.length} images`);
} catch (error) {
console.error('Error:', error);
}
}downloadImages();
```## Requirements
- Node.js >=21.0.0 (for built-in `fetch` support)
- Zero dependencies!## Features
- ✅ **Zero dependencies** - Uses only Node.js built-in modules
- ✅ **CLI tool** - Use from command line globally
- ✅ **Node.js library** - Integrate into your projects
- ✅ **TypeScript support** - Full type definitions included
- ✅ **Modern async/await** - Clean, modern JavaScript
- ✅ **Automatic file organization** - Images sorted by subreddit
- ✅ **Duplicate prevention** - Won't overwrite existing files## Example with Telegram Bot
https://www.simon-neutert.de/2020/telegraf-bot-nodejs/
## Contributing
Check out the source code on GitHub and feel free to contribute!