Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yggverse/gemini-dl
CLI downloader for Gemini protocol
https://github.com/yggverse/gemini-dl
batch-download cli downloader gemini gemini-dl gemini-download gemini-protocol gemtext gmi
Last synced: 14 days ago
JSON representation
CLI downloader for Gemini protocol
- Host: GitHub
- URL: https://github.com/yggverse/gemini-dl
- Owner: YGGverse
- License: mit
- Created: 2024-06-24T19:11:37.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-06-24T20:06:27.000Z (5 months ago)
- Last Synced: 2024-06-24T20:15:09.324Z (5 months ago)
- Topics: batch-download, cli, downloader, gemini, gemini-dl, gemini-download, gemini-protocol, gemtext, gmi
- Language: PHP
- Homepage:
- Size: 14.6 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# gemini-dl
CLI batch downloader for [Gemini protocol](https://geminiprotocol.net), inspired by `wget` and `yt-dlp` tools
At this moment, project under development, some [features](#features) already implemented and testing ([feedback](https://github.com/YGGverse/gemini-dl/issues) | [PR](https://github.com/YGGverse/gemini-dl/pull))
## Interface
![gemini-dl](https://github.com/YGGverse/gemini-dl/assets/108541346/94a494de-62fd-4ba6-85f9-a3a238cc9cb9)
## Components
* [gemini-php](https://github.com/YGGverse/gemini-php) - Client for Gemini protocol
* [gemtext-php](https://github.com/YGGverse/gemtext-php) - Parser for Gemtext
* [net-php](https://github.com/YGGverse/net-php) - Network toolkit for URL operations
* [php-cli-colors](https://github.com/mikeerickson/php-cli-colors) - CLI colors## Features
* [x] Grab single URL or `--crawl` entire capsule
* [x] Multiple MIME types download (e.g. inline images and other media)
* [x] Detailed crawler log for every request + totals
* [ ] Flexible options
* [x] Custom `--delay` between requests
* [x] Custom `--index` filename for directories
* [x] Custom storage location
* [x] Filesystem
* [ ] FTP
* [x] Optional links replacement for local navigation
* [x] Relative (default)
* [x] Absolute (`--absolute`)
* [x] Original (`--keep`)
* [x] `--match` regex URL
* [x] `--unique` snap version or sync with existing copy
* [ ] Configurable redirect levels to `--follow`
* [ ] Crawl depth `--level` limit
* [ ] Document size limit to download
* [ ] Follow `--external` links on crawl## Environment
``` bash
apt install git composer php-fpm php-mbstring
```## Install
* `git clone https://github.com/YGGverse/gemini-dl.git`
* `cd gemini-dl`
* `composer update`
* `chmod +x src/gemini-dl.php` _(for direct execution only)_## Usage
``` bash
src/gemini-dl.php --source gemini://.. --target /path/to/download
```* alternatively, launch with specified php version `/path/to/php src/gemini-dl.php`
### Options
``` bash
# Required-s, --source - string, gemini protocol address
-t, --target - string, absolute path to destination folder# Optional
-a, --absolute - no value, links to absolute filepath (ignored on --keep), disabled by default
-c, --crawl - no value, crawl document links (entire capsule download), disabled by default
-d, --delay - integer, pause between requests to prevent abuse (seconds), 1 by default
-i, --index - string, index filename of directory listing, index.gmi by default
-h, --help - no value, show available commands
-k, --keep - no value, keep original links (--crawl mode only), disabled by default
-m, --match - string, collect links match regex rule, /.*/ by default
-r, --raw - no value, include meta headers (--keep option ignored), disabled by default
-u, --unique - no value, append snap version as folder timestamp, disabled by default# Experimental (in development)
-e, --external - no value, follow external hosts, disabled by default
-f, --follow - integer, follow redirects on --crawl, 0 by default
-l, --level - integer, depth to --crawl, 0 by default
```* show in CLI: `gemini-dl.php --help`