{"id":46449846,"url":"https://github.com/rupertgermann/image-crawler","last_synced_at":"2026-03-06T00:07:00.787Z","repository":{"id":293887964,"uuid":"985409675","full_name":"rupertgermann/image-crawler","owner":"rupertgermann","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-25T15:59:46.000Z","size":1810,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-25T16:39:11.788Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rupertgermann.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-17T17:48:21.000Z","updated_at":"2025-05-25T15:59:49.000Z","dependencies_parsed_at":"2025-05-17T19:34:33.155Z","dependency_job_id":null,"html_url":"https://github.com/rupertgermann/image-crawler","commit_stats":null,"previous_names":["rupertgermann/image-crawler"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rupertgermann/image-crawler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rupertgermann%2Fimage-crawler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rupertgermann%2Fimage-crawler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rupertgermann%2Fimage-crawler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rupertgermann%2Fimage-crawler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rupertgermann","download_url":"https://codeload.github.com/rupertgermann/image-crawler/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rupertgermann%2Fimage-crawler/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30156253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T22:39:40.138Z","status":"ssl_error","status_checked_at":"2026-03-05T22:39:24.771Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-03-06T00:07:00.324Z","updated_at":"2026-03-06T00:07:00.778Z","avatar_url":"https://github.com/rupertgermann.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Image Crawler\n[![MIT License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![GitHub](https://img.shields.io/badge/GitHub-rupertgermann/image--crawler-blue)](https://github.com/rupertgermann/image-crawler)\n[![npm version](https://badge.fury.io/js/image-crawler.svg)](https://badge.fury.io/js/image-crawler) [![npm downloads](https://img.shields.io/npm/dm/image-crawler.svg)](https://www.npmjs.com/package/image-crawler) [![Build Status](https://travis-ci.org/rupertgermann/image-crawler.svg?branch=master)](https://travis-ci.org/rupertgermann/image-crawler)\n\nA cross-platform tool for collecting images from local drives or the web.\n\n## A Note on Authorship\n\nThis application was proudly developed 100% by AI, leveraging the capabilities of advanced coding models and the Windsurf AI engineering platform. This project showcases the power of AI in modern software development.\n\n## Why Image Crawler?\n\nImage Crawler was created to provide a simple, yet powerful and unified interface for downloading high-quality images from various sources or organizing local image collections efficiently. It offers both a Command Line Interface (CLI) for automation and scripting, and a user-friendly Graphical User Interface (GUI) for interactive use.\n\n## Showcase / Demo\n\nHere's a glimpse of the Image Crawler Electron application in action:\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cb\u003eLight Mode\u003c/b\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cb\u003eDark Mode\u003c/b\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"./docs/readme_images/image_crawler_light.png\" alt=\"Image Crawler Light Mode\" width=\"400\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"./docs/readme_images/image_crawler_dark.png\" alt=\"Image Crawler Dark Mode\" width=\"400\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\n## Features\n\n- **Electron GUI Mode**:\n  - User-friendly interface for both Local and Web modes.\n  - Dark and Light theme support with automatic system preference detection and manual toggle.\n  - Integrated log display area with real-time updates.\n  - \"Save UI Logs\" and \"Clear Logs\" functionality for easy log management.\n  - Ability to start and stop crawling operations directly from the UI.\n  - Interactive folder selection dialogs for input and output directories.\n  - Persistent configuration: remembers your last used settings (output directories, UI theme, etc.).\n\n- **Local Mode**: Scan local directories for images\n  - Filter by file type, size, and dimensions\n  - Preserve directory structure\n  - Interactive folder selection\n  - Deduplicate images by content hash (skips existing files)\n\n- **Web Mode**: Download images from multiple sources\n  - Supports a wide range of providers: Google Images, Pixabay, Unsplash, Pexels, Bing, Flickr, DuckDuckGo, FreeImages, Wikimedia, StockSnap.io, FreeRangeStock, PublicDomainPictures.net, Reshot, and Shutterstock (fetches watermarked previews).\n  - Search by keyword with advanced filters (some providers)\n  - Safe search (enabled by default where applicable)\n  - Headless browser mode option for web crawling (configurable in CLI, default in GUI for some operations)\n\n## Installation\n\n### Prerequisites\n\n1. **Windows 10 or later, macOS, or Linux** - The application is cross-platform.\n2. **Node.js 18+** (v18.17.0 or later recommended for full ES modules support)\n\n### For CLI Usage (Global Install)\n\nRun the following command to install the application and all required dependencies, including Playwright browsers:\n\n```bash\n# Install globally\nnpm install -g image-crawler\n\n# Install Playwright browsers (this may take a few minutes)\nnpx playwright install --with-deps\n\n# Verify installation\nnpx playwright test --browser=chromium\n```\n\nOr use with npx without global installation:\n\n```bash\nnpx image-crawler\n# The first run will prompt to install Playwright browsers if needed\n```\n\n### For Electron GUI Usage (Running from Source/Development)\n\nIf you want to run the Electron GUI application directly from the source code (e.g., for development or to use the latest unreleased features):\n\n1.  **Clone the repository:**\n    ```bash\n    git clone https://github.com/rupertgermann/image-crawler.git\n    cd image-crawler\n    ```\n\n2.  **Install dependencies:**\n    ```bash\n    npm install\n    ```\n    This will install Electron, Playwright, and other necessary packages.\n\n3.  **Install Playwright browsers (if not already installed or if you want to ensure they are up-to-date for this project):**\n    ```bash\n    npx playwright install --with-deps\n    ```\n\n4.  **Run the Electron application:**\n    ```bash\n    npm run electron:start\n    ```\n\n### Manual Installation (if automatic fails)\n\nIf you encounter issues with the automatic installation, follow these steps:\n\n1. Install Visual C++ Redistributable (required for Playwright):\n   - Download from: https://aka.ms/vs/17/release/vc_redist.x64.exe\n   - Run the installer and follow the prompts\n\n2. Install Windows 10+ SDK (required for WebKit):\n   - Download from: https://go.microsoft.com/fwlink/?linkid=2196241\n   - Run the installer and select \"Windows 10 SDK\"\n\n3. Install the application:\n   ```bash\n   # Install globally\n   npm install -g image-crawler\n   \n   # Install Playwright without browsers\n   npx playwright install-deps\n   \n   # Install browsers one by one (if needed)\n   npx playwright install chromium\n   npx playwright install firefox\n   npx playwright install webkit\n   ```\n\n### Troubleshooting\n\nIf you encounter issues during installation:\n\n1. **Proxy Issues**: If behind a corporate proxy, set the proxy environment variables:\n   ```cmd\n   set HTTP_PROXY=http://your-proxy:port\n   set HTTPS_PROXY=http://your-proxy:port\n   ```\n\n2. **Permission Issues**: Run the command prompt as Administrator\n\n3. **Long Paths**: If you see path length errors, enable long paths in Windows:\n   - Open Group Policy Editor (gpedit.msc)\n   - Navigate to: Computer Configuration \u003e Administrative Templates \u003e System \u003e Filesystem\n   - Enable \"Enable Win32 long paths\"\n\n## Usage\n\nThe application can be used via its Command Line Interface (CLI) or through the Electron-based Graphical User Interface (GUI).\n\n### Electron GUI Mode\n\nIf you've followed the steps for \"For Electron GUI Usage (Running from Source/Development)\", you can launch the application with:\n\n```bash\nnpm run electron:start\n```\n\nOnce launched, the GUI provides an intuitive way to:\n- Select the desired mode (Local Scan or Web Download).\n- Configure options specific to the chosen mode (e.g., source/output directories, search queries, filters).\n- Start and stop the crawling process using dedicated buttons.\n- Monitor progress and view logs in the integrated log area.\n- Save or clear logs as needed.\n- Toggle between light and dark themes.\n\n### CLI Mode\n\nRun without any commands to start in interactive CLI mode:\n\n```bash\nnpx image-crawler\n```\n\n### Local Mode\n\nScan a local directory for images. If no source is provided, you'll be prompted to select a folder. By default, Local Mode skips files already present in the output directory by comparing their content hashes.\n\n#### Basic Examples:\n\n```bash\n# Scan your Pictures folder and save to ./downloads\nnpx image-crawler local --source ~/Pictures --output ./downloads\n\n# Find only high-resolution images (min 1920x1080)\nnpx image-crawler local --min-width 1920 --min-height 1080 --output ./wallpapers\n\n# Find and organize by file type\nnpx image-crawler local --source ~/Downloads --file-types jpg,png --output ./organized\n\n# Find large image files (minimum 1MB)\nnpx image-crawler local --min-size 1MB --output ./large-images\n```\n\n#### Advanced Examples:\n\n```bash\n# Preserve the original directory structure\nnpx image-crawler local --source ~/Projects --output ./backup --preserve-structure\n\n# Find images modified in the last 7 days (macOS/Linux)\nfind ~/Pictures -type f -mtime -7 -name \"*.jpg\" -o -name \"*.png\" | xargs -I {} npx image-crawler local --source \"{}\" --output ./recent\n\n# Windows: Find and process images on multiple drives\nnpx image-crawler local --select-drives --output ./all-drives-backup\n```\n\n```bash\n\nnpx image-crawler web \"hamster\" --provider all\n\n# Basic usage with interactive folder selection\nnpx image-crawler local --output ./downloads\n\n# Specify source directory\nnpx image-crawler local --source ~/Pictures --output ./downloads\n\n# With filters and max files\nnpx image-crawler local --min-width 800 --min-height 600 --max-files 100\n```\n\n#### Options:\n- `-s, --source \u003cpath\u003e`: Source directory to scan (optional, will prompt if not provided)\n- `-o, --output \u003cpath\u003e`: Output directory for images (default: `./downloads`)\n- `--min-width \u003cpixels\u003e`: Minimum image width in pixels (default: `640`)\n- `--min-height \u003cpixels\u003e`: Minimum image height in pixels (default: `480`)\n- `--min-size \u003csize\u003e`: Minimum file size (supports human-readable formats like `100KB`, `1.5MB`)\n- `--max-files \u003ccount\u003e`: Maximum number of files to process (default: `100`)\n- `--max-downloads \u003ccount\u003e`: Alias for `--max-files`\n- `--preserve-structure`: Preserve directory structure in output (default: `false`)\n- `--select-drives`: Interactively select drives (Windows only)\n- `--file-types \u003ctypes\u003e`: Comma-separated list of file extensions (default: `jpg,jpeg,png,gif,webp`)\n\n### Web Mode\n\nDownload images from the web. A search query is required. The tool will automatically handle pagination and scroll through search results to find the best matches.\n\n#### Basic Search Examples:\n\n```bash\n# Simple search across all providers\nnpx image-crawler web \"mountain sunset\" --max-downloads 20\n\n# Search specific providers\nnpx image-crawler web \"abstract art\" --provider unsplash,pexels --max-downloads 30\n\n# High-resolution wallpapers\nnpx image-crawler web \"4k nature\" --min-width 3840 --min-height 2160 --output ./wallpapers\n```\n\n#### Advanced Usage Examples:\n\n```bash\n# Download images for machine learning dataset\nnpx image-crawler web \"cat\" --provider flickr,bing --max-downloads 500 --output ./dataset/cats\n\n# Create a mood board (mix of different styles)\nnpx image-crawler web \"minimalist interior design\" --provider unsplash,pexels --max-downloads 50 --output ./mood-board\n\n# Download public domain images for a project\nnpx image-crawler web \"vintage patterns\" --provider wikimedia --output ./public-domain\n```\n\n#### Provider-Specific Examples:\n\n```bash\n# Get trending photos from Unsplash\nnpx image-crawler web \"\" --provider unsplash --output ./unsplash-trending\n\n# Search for Creative Commons images on Flickr\nnpx image-crawler web \"street photography\" --provider flickr --output ./flickr-cc\n\n# Get high-quality nature wallpapers from Pexels\nnpx image-crawler web \"nature\" --provider pexels --min-width 1920 --min-height 1080\n\n# Basic usage (tries all enabled sources by default)\nnpx image-crawler web \"nature landscape\" --max-downloads 50\n\n# Specify a single provider\nnpx image-crawler web \"mountain lake\" --provider unsplash\n\n# Specify multiple providers (comma-separated)\nnpx image-crawler web \"city lights\" --provider bing,pexels --max-downloads 20\n```\n\n### Windows-Specific Examples\n\n```bash\n# Basic usage with Windows path\nnpx image-crawler local --source \"C:\\Users\\Public\\Pictures\" --output \"D:\\Downloads\\Images\"\n\n# Using environment variables for paths\nset SOURCE_DIR=%USERPROFILE%\\Pictures\\Screenshots\nset OUTPUT_DIR=%USERPROFILE%\\Downloads\\Processed\nnpx image-crawler local --source \"%SOURCE_DIR%\" --output \"%OUTPUT_DIR%\"\n\n# Using Windows network paths (UNC paths)\nnpx image-crawler local --source \"\\\\server\\shared\\photos\" --output \"D:\\Backup\\Photos\"\n\n# Using Windows drive letters with specific file types\nnpx image-crawler local --source \"D:\" --file-types \"jpg,png\" --min-size 1MB\n\n# Running as a scheduled task (save as .bat file)\n@echo off\nsetlocal\ncd /d \"%~dp0\"\nnpx image-crawler web \"windows 11 wallpaper\" --output \"%USERPROFILE%\\Pictures\\Wallpapers\" --max-downloads 10\nendlocal\n\n# Using PowerShell variables\n$query = \"4k wallpaper\"\n$output = \"$env:USERPROFILE\\Pictures\\Wallpapers\\$(Get-Date -Format 'yyyy-MM')\"\nnpx image-crawler web $query --output $output --max-downloads 20\n```\n\n### Windows Troubleshooting Commands\n\n```bash\n# Check if Playwright browsers are installed correctly\nnpx playwright install --dry-run\n\n# Clear Playwright cache if you encounter issues\nnpx playwright install --force\n\n# Run with debug logging (PowerShell)\n$env:DEBUG=\"image-crawler:*\"\nnpx image-crawler web \"test\" --output \"$env:TEMP\\test-download\"\n\n# Check system requirements\nnpx playwright check\n\n# Install missing Windows dependencies (run as Administrator)\nnpx playwright install-deps\n\n\n# With size and type filters\nnpx image-crawler web \"sunset\" --min-width 1920 --min-height 1080 --file-types jpg,png\n```\n\n#### Options:\n- `-o, --output \u003cpath\u003e`: Output directory for images (default: `./downloads`)\n- `--max-downloads \u003ccount\u003e`: Maximum number of images to download (default: `100`)\n- `--min-width \u003cpixels\u003e`: Minimum image width in pixels (default: `640`)\n- `--min-height \u003cpixels\u003e`: Minimum image height in pixels (default: `480`)\n- `--min-size \u003csize\u003e`: Minimum file size (supports human-readable formats like `100KB`, `1.5MB`)\n- `--no-safe-search`: Disable safe search (default: `true`)\n- `--file-types \u003ctypes\u003e`: Comma-separated list of file extensions (default: `jpg,jpeg,png,gif,webp`)\n- `--headless`: Run browser in headless mode (default: `true`)\n- `--timeout \u003cms\u003e`: Browser operation timeout in milliseconds (default: `30000`)\n- `--provider \u003cname\u003e`: Comma-separated list of image providers to use (e.g., `google`, `unsplash`, `bing,pexels`). Supported: `google`, `pixabay`, `unsplash`, `pexels`, `bing`, `flickr`, `duckduckgo`, `freeimages`, `wikimedia`, `stocksnap`, `shutterstock`. Default is 'all' configured providers.\n\n\n\n## Configuration\n\nConfiguration is stored in `config.json` in the current working directory. The file is automatically created on first run with default values. You can also create a custom config file and specify it with the `--config` option.\n\n### Example Configurations\n\n#### Basic Configuration\n```json\n{\n  \"logLevel\": \"info\",\n  \"providers\": {\n    \"order\": [\"google\", \"unsplash\", \"pixabay\"],\n    \"google\": {\n      \"enabled\": false,\n      \"safeSearch\": true\n    },\n    \"unsplash\": {\n      \"enabled\": true,\n      \"apiKey\": \"your_unsplash_api_key_here\"\n    },\n    \"stocksnap\": {\n      \"enabled\": true,\n      \"maxResults\": 25\n    },\n    \"shutterstock\": {\n      \"enabled\": true,\n      \"maxResults\": 20,\n      \"apiKey\": \"YOUR_SHUTTERSTOCK_API_KEY_OR_LEAVE_EMPTY_FOR_PREVIEWS\"\n    }\n  },\n  \"defaults\": {\n    \"outputDir\": \"./downloads\",\n    \"maxDownloads\": 100,\n    \"minWidth\": 800,\n    \"minHeight\": 600\n  }\n}\n```\n\n#### Advanced Configuration\n\nYou can customize the application behavior by creating a `config.json` file in the root of your project or in the global config directory (`~/.config/image-crawler/config.json` or platform equivalent).\n\nA comprehensive template, `config.json.example`, is available in the root of the repository. You can copy this file to `config.json` and modify it according to your needs. This file documents all available options.\n\n```json\n{\n  \"logLevel\": \"debug\",\n  \"providers\": {\n    \"order\": [\"google\", \"bing\", \"unsplash\", \"pixabay\", \"flickr\", \"stocksnap\", \"shutterstock\"],\n    \"google\": {\n      \"enabled\": false,\n      \"maxResults\": 100\n    },\n    \"bing\": {\n      \"enabled\": true,\n      \"maxResults\": 30\n      // Add other Bing-specific settings if any\n    },\n    \"unsplash\": {\n      \"enabled\": true,\n      \"maxResults\": 30,\n      \"apiKey\": \"YOUR_UNSPLASH_API_KEY_HERE\" // If Unsplash has an API key option\n    },\n    \"pixabay\": {\n      \"enabled\": true,\n      \"maxResults\": 30,\n      \"apiKey\": \"YOUR_PIXABAY_API_KEY_HERE\" // If Pixabay has an API key option\n    },\n    \"flickr\": {\n      \"enabled\": true,\n      \"maxResults\": 50,\n      \"apiKey\": \"YOUR_FLICKR_API_KEY\"\n    },\n    \"stocksnap\": {\n      \"enabled\": true,\n      \"maxResults\": 25\n    },\n    \"shutterstock\": {\n      \"enabled\": true,\n      \"maxResults\": 20,\n      \"apiKey\": \"YOUR_SHUTTERSTOCK_API_KEY_OR_LEAVE_EMPTY_FOR_PREVIEWS\"\n    }\n    // ... other providers can be added here\n  }\n  // You can also include other top-level settings like \"minWidth\", \"minHeight\", etc.\n  // \"minWidth\": 1024,\n  // \"minHeight\": 768\n}\n```\n\nUse the config file:\n```bash\n# Use a specific config file\nnpx image-crawler web \"landscape\" --config ./my-config.json\n```\n\n### Environment Variables\n\nThe application supports the following environment variables:\n\n- `DEBUG=image-crawler:*`: Enable debug logging\n- `NODE_ENV=development`: Run in development mode (enables additional logging)\n\nExample usage:\n\n```bash\n# Enable debug logging\nDEBUG=image-crawler:* npx image-crawler local\n```\n\n## Development\n\nThis project uses ES modules (import/export) instead of CommonJS (require/module.exports).\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/rupertgermann/image-crawler.git\n   cd image-crawler\n   ```\n\n2. Install dependencies:\n   ```bash\n   npm install\n   ```\n\n3. Run in development mode:\n   ```bash\n   npm run dev\n   ```\n\n4. Build for production:\n   ```bash\n   npm run build\n   ```\n\n## Testing\n\nRun tests:\n\n```bash\nnpm test\n```\n\n## Troubleshooting\n\n- **ES Modules related errors**: Ensure you're using Node.js 18.17.0 or later. If you encounter `ERR_REQUIRE_ESM`, make sure all files use ES module syntax.\n- **No images found**: Try adjusting the search query or filters\n- **Browser timeout errors**: Increase the timeout with `--timeout 60000`\n- **Permission issues**: Ensure the output directory is writable\n- **Headless mode issues**: Try running with `--no-headless` if you experience browser-related problems\n\n## Tech Stack\n\n- Node.js (ES Modules)\n- Playwright (for Web Mode)\n- Various CLI helper libraries (e.g., yargs, chalk, inquirer)\n- Modern JavaScript (ES2022+ features)\n\n## Requirements\n\n- Node.js 18.17.0 or later\n- npm 9.0.0 or later\n- Playwright browsers (installed automatically)\n\n## Contributing\n\nContributions are welcome! Whether it's reporting a bug, suggesting a feature, or submitting a pull request, your help is appreciated.\n\n### Development Documentation\n\nFor developers working on the codebase, please review the following documentation:\n\n- **[Technical Debt Improvement Plan](docs/technical-debt-improvement-plan.md)**: Comprehensive analysis of current technical debt and improvement strategies\n- **[Technical Debt Task List](docs/technical-debt-tasklist.md)**: Detailed, actionable task breakdown for addressing technical debt (17 main tasks, 55 subtasks)\n- **Memory Bank**: Project context and patterns documentation in `memory-bank/` directory\n\nThe technical debt documentation identifies critical issues and provides a roadmap for:\n- **Phase 1**: Critical fixes (provider registry, browser cleanup, configuration naming)\n- **Phase 2**: Performance optimizations (hash caching for 70-90% startup time reduction, memory optimization)\n- **Phase 3**: Code quality improvements (error handling, validation, maintainability)\n\nAll improvements maintain 100% backward compatibility and preserve existing functionality.\n\n### Reporting Bugs\n\nIf you find a bug, please open an issue on GitHub and provide detailed steps to reproduce it. Include information about your OS, Node.js version, and the command you ran.\n\n### Suggesting Enhancements\n\nHave an idea to make Image Crawler better? Open an issue to discuss it. We're always looking for ways to improve.\n\n### Pull Requests\n\n1.  Fork the repository.\n2.  Create a new branch (`git checkout -b feature/YourFeature` or `bugfix/YourBugfix`).\n3.  Make your changes.\n4.  Ensure your code adheres to the existing style and any linting configurations (if present).\n5.  Write clear and concise commit messages.\n6.  Push to your branch (`git push origin feature/YourFeature`).\n7.  Open a pull request.\n\n**Note for Contributors**: Before making significant changes, please review the technical debt documentation to understand current improvement priorities and ensure your changes align with the project's technical roadmap.\n\n## Repository\n\nhttps://github.com/rupertgermann/image-crawler\n\n## License\n\nThis project is licensed under the [MIT License](https://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frupertgermann%2Fimage-crawler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frupertgermann%2Fimage-crawler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frupertgermann%2Fimage-crawler/lists"}