Files
OD-Downloader/README.md
Keith Solomon 19bcefbec8
Some checks failed
Build and Release / build-release (push) Failing after 6m35s
feature: Release first public version #release
2026-01-04 20:14:40 -06:00

3.7 KiB

Open Directory Downloader

Desktop GUI for browsing and downloading from open directory listings (Apache/Nginx autoindex). It works out of the box with built-in HTTP/HTTPS and can optionally use wget for faster folder pulls when available.

Features

  • Remote directory browser with tree view and list view
  • Local folder browser with drag-and-drop targets
  • Download single files or entire folders
  • Optional wget mode for recursive folder downloads
  • Progress display for individual files and aggregate folder downloads
  • Light/dark themes with persistence

Requirements

  • Node.js (LTS recommended)
  • npm (bundled with Node.js)
  • Optional: wget on your PATH to enable recursive folder downloads via wget

Install

npm install

Run

npm start

Usage

  1. Enter a remote URL that points to an autoindex listing (for example an "Index of" page).
  2. Choose a local destination folder (prompted on first launch or via the Browse button).
  3. Select a file or folder from the remote list:
    • Double-click a folder to enter it.
    • Drag a remote item onto a local folder to download there.
    • Or select an item and use "Download Selected".
  4. Watch progress in the toolbar and logs in the Session Log panel.

Screenshot

Add a screenshot to show the UI. Suggested filename: docs/screenshot.png.

docs/screenshot.png

If you want to embed it:

![Open Directory Downloader UI](docs/screenshot.png)

How it works

Open Directory Downloader is an Electron app with three layers:

  • Main process (src/main.js) handles HTTP/HTTPS, parsing directory listings, and performing downloads.
  • Preload (src/preload.js) exposes safe IPC APIs to the renderer.
  • Renderer (src/renderer.js) drives the UI, local/remote navigation, and progress display.

Remote parsing supports common Apache autoindex layouts (table and <pre> formats). Folder downloads are performed by recursively crawling the listing and downloading files, unless wget mode is enabled.

Development

  • Main process: src/main.js
  • Renderer: src/renderer.js
  • Preload: src/preload.js
  • UI markup: src/index.html
  • Styling: src/styles.css

Recommended workflow:

  1. Run npm start to launch the Electron app.
  2. Make changes to renderer assets (src/index.html, src/renderer.js, src/styles.css).
  3. Restart the app to pick up main/preload changes; renderer changes may require a manual refresh or restart depending on Electron caching.

Optional wget mode

If wget is detected on the system, the "Use wget if available" toggle is enabled.

  • Folder downloads will use wget -r -np -nH -P <destDir> <url>
  • File downloads still use the built-in HTTP/HTTPS client

Project scripts

npm start   # Launch the Electron app
npm run pack
npm run dist

Packaging

This project uses electron-builder for packaging.

  • npm run pack builds unpacked artifacts
  • npm run dist builds platform installers

See package.json for configuration defaults. You may need to add an electron-builder config if you want icons, signing, or platform-specific settings.

Limitations and notes

  • The remote listing parser expects a standard autoindex HTML page.
  • If a server customizes its directory listing heavily, parsing may fail.
  • Aggregate progress for folder downloads requires size metadata from the listing; otherwise progress is indeterminate.
  • Some servers may block recursive downloading or throttle requests.

Troubleshooting

  • "HTTP 403/404": The server may block listing or direct file access.
  • Empty list: Verify the URL ends with a trailing / and is an autoindex page.
  • wget toggle disabled: Install wget and ensure it is on your PATH, then restart the app.

License

MIT