Metadata-Version: 2.4
Name: jackthesolo
Version: 0.2.0
Summary: jackthesolo - downloader semua platform (video, musik, file, cloud-drive)
License: MIT
Project-URL: Homepage, https://github.com/Araryarch67/jackthesolo
Project-URL: Repository, https://github.com/Araryarch67/jackthesolo
Keywords: downloader,youtube,tiktok,tor,cli
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Multimedia :: Video
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: yt-dlp>=2024.1.1
Requires-Dist: requests>=2.31
Requires-Dist: PySocks>=1.7
Requires-Dist: playwright>=1.40
Requires-Dist: curl-cffi>=0.11
Requires-Dist: pypdf>=4
Dynamic: license-file

<div align="center">

# jackthesolo

![Python](https://img.shields.io/badge/python-%3E%3D3.9-blue)
![Platform](https://img.shields.io/badge/platform-linux-lightgrey)
[![PyPI](https://img.shields.io/pypi/v/jackthesolo)](https://pypi.org/project/jackthesolo)

**One command to download almost anything. Paste a URL, done.**

</div>

Video, audio, direct files, and private cloud documents. The URL source is
auto-detected, so you never pick a mode yourself. Anonymous over Tor by
default, results land in `~/Downloads`.

| What | Example |
|---|---|
| Video/audio (YouTube, TikTok) | `tiktok.com/@u/video/…` |
| Scribd documents to PDF (no login) | `scribd.com/document/…` |
| Other sites via yt-dlp (not individually tested) | any URL |
| Direct files (PDF, ZIP, ISO, MP4) | `example.com/report.pdf` |
| Private cloud docs (preview/share links) | `…/shared?…` + your cookies |

## Quick start

```bash
pip install jackthesolo

jackthesolo "URL"
```

Or from source (for development):

```bash
git clone https://github.com/Araryarch67/jackthesolo && cd jackthesolo
make install    # via pipx (needs python>=3.9, ffmpeg)
make browsers   # chromium for cloud mode, one time only
sudo systemctl enable --now tor   # mandatory anonymity route, one time only

jackthesolo "URL"
```

## Examples

```bash
jackthesolo "URL"                                            # anything, auto-detected
jackthesolo "https://www.tiktok.com/@u/video/123" --cookies cookies.txt  # incl. subs-only + photos
jackthesolo "https://www.youtube.com/watch?v=..." --cookies yt_cookies.txt  # required for age-restricted videos
jackthesolo "https://www.scribd.com/document/123/Title"          # to PDF, no login
jackthesolo "https://…/shared?..." --cookies cookies.txt --output-file Document.pdf
jackthesolo "URL" -a                                         # audio MP3 only
jackthesolo "URL" --info                                     # inspect first, free
jackthesolo --check                                          # diagnostics (incl. Tor egress proof)
```

## Cookies

Login-gated content needs **your own** cookies (the program ships none):

```bash
# 1. Open the site in Chrome, logged in
# 2. Export with the "Get cookies.txt LOCALLY" extension (pick the site domain)
jackthesolo "URL" --cookies cookies.txt
chmod 600 cookies.txt
```

Never commit or share cookie files. Age-restricted YouTube always needs
cookies from an age-verified account (the server issues no stream URLs
before login, verified across web, android, ios, TV, and embed clients).

## Anonymity

Public downloads without Tor/proxy are **refused**. Every download uses a
fresh isolated Tor circuit, a randomized user agent, redacted tokens in logs
(including `-v`), and cookie files auto-locked to `600`. `--paranoid`
fails closed on IP leaks; `--url-file URL.txt` keeps tokens out of shell
history.

Honest limits: logging in identifies your account to the server; exit nodes
see plaintext HTTP traffic.

## Help

```bash
man jackthesolo            # full docs (via `make man`)
jackthesolo --check
```

| Symptom | Fix |
|---|---|
| `Link ini butuh login` (login required) | add `--cookies` |
| YouTube asks for age verification | use `--cookies` from an age-verified account |
| `HTTP 401/403` | re-export cookies |
| Tor has no effect | `sudo systemctl start tor`, then `--check` |

## Options

| Flag | Purpose |
|---|---|
| `-o` | output folder (default: `~/Downloads`) |
| `-a` / `-q` | audio-only MP3 / quality (`best`, `720`, …) |
| `--cookies` | path to your cookies.txt |
| `--proxy` / `--tor` / `--no-proxy` | connection route (default: Tor, mandatory) |
| `--paranoid` / `--url-file` | egress proof + refuse login / URL from file |
| `--cloud` / `--direct` | force mode when auto-detect is wrong |
| `--output-file` / `--info` | output name / inspect metadata |
| `--no-banner` / `-v` / `--check` | no banner / verbose / diagnostics |

Found a link that fails? Open an issue with the link type (no tokens/cookies)
plus the `-v` error output. MIT licensed (see `LICENSE`). Use it for content
you own or are entitled to access, and respect each site's terms.

## Credits

Techniques in this tool build on other people's work:

* Scribd engine (embed + per-page print + pypdf merge) adapted from
  [themrsami/scribd-downloader](https://github.com/themrsami/scribd-downloader)
  (MIT licensed).
* Media mode uses [yt-dlp](https://github.com/yt-dlp/yt-dlp) (Unlicense).
