https://github.com/al00x/jdsh
Awesome CLI and TUI for JDownloader2
https://github.com/al00x/jdsh
cli jd jdl jdl2 jdownloader jdownloader-2 python remote tui utility
Last synced: 5 months ago
JSON representation
Awesome CLI and TUI for JDownloader2
- Host: GitHub
- URL: https://github.com/al00x/jdsh
- Owner: Al00X
- License: mit
- Created: 2025-12-29T16:29:11.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-12-29T21:51:51.000Z (6 months ago)
- Last Synced: 2026-01-01T21:45:56.455Z (6 months ago)
- Topics: cli, jd, jdl, jdl2, jdownloader, jdownloader-2, python, remote, tui, utility
- Language: Python
- Homepage:
- Size: 83 KB
- Stars: 85
- Watchers: 0
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🟠JDSH - JDownloader Shell 🔵

Control and Manage your JDownloader within your terminal with _ease_.
Designed for Linux servers/headless environments where you need full control without a GUI; or if you just love using CLI!
Packed with various **Commands** & **Interactive Mode (TUI)**.
This tool will use your JDownloader local API, which you will need to enable manually. It uses [myjadpi](https://github.com/mmarquezs/My.Jdownloader-API-Python-Library/) package under the hood to work (kudos to the author of this package).
## Installation
```bash
pip install jdsh
```
## Setup
0. Obviously have **JDownloader 2** installed.
1. Enable JDownloader's Local API:
* Edit `/cfg/org.jdownloader.api.RemoteAPIConfig.json`.
* Set `"deprecatedapienabled": true`
* _(Optional)_ you may also need to set `deprecatedapilocalhostonly` to `false` if you want to access it from remote.
* Restart JDownloader.
## Usage
You can now use the `jd` command globally from anywhere in your terminal.
### Interactive Mode
Simply run `jd` without arguments to enter the interactive mode.
```bash
jd
```
* **Tips:**
* Press `s` to Start/Stop downloads.
* Press `Ctrl+C` to quit.
### Commands Overview
```bash
â•─ JDSH ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ │
│ Dashboard │
│ jd Launch the Interactive TUI │
│ status Show a static snapshot of the queue │
│ │
│ Queue Management │
│ list (ls) [-d] List active downloads │
│ grabber [-d] List pending links inside LinkGrabber │
│ add ... Add links to LinkGrabber │
│ confirm Move all pending links to Queue │
│ remove (rm) ... Remove items by ID │
│ │
│ Controls │
│ start Start/Resume downloads │
│ stop Pause/Stop downloads │
│ clear Remove finished items from list │
│ replace Replace a dead link URL │
│ │
│ Utils │
│ version Show shell and core versions │
│ help Show this help message │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Usage: jd [COMMAND] [ARGS]...
# Run the interactive mode:
jd
# Add links, check them, then start:
jd add "http://site.com/file.exe"
jd add "http://site.com/archive1.zip" "http://site.com/archive2.zip"
jd grabber
jd confirm
# detailed list view:
jd ls -d
```
## Config
By default, the application runs with standard settings (`Host: 127.0.0.1, Port: 3128`). You can override these defaults by creating a configuration file.
Create file at `~/.config/jdsh/jdsh.config`, with the contents below.
You may uncomment any line and change when you need.
```ini
[settings]
# HOST = 127.0.0.1
# PORT = 3128
# update interval of interactive mode, in seconds
# REFRESH_RATE = 1.0
```
---
#### Enjoying the tool? Your supports would keep me at it! 💖
[](https://blockchain.com/btc/address/bc1qvmv8cnfd0hfc82rm3r9zzq6uheejgw5hfzn426)
[](https://etherscan.io/address/0xA25c8eF121ba010d09c6A7E1228be7da523933f8)
[-blue.svg?logo=tether)](https://bscscan.com/address/0x283857017efb4B1F9fAe57F4599C20FD5bCE1871)