socdl 0.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- socdl-0.1.1/.gitignore +53 -0
- socdl-0.1.1/CHANGELOG.md +31 -0
- socdl-0.1.1/LICENSE +21 -0
- socdl-0.1.1/PKG-INFO +404 -0
- socdl-0.1.1/README.md +358 -0
- socdl-0.1.1/pyproject.toml +88 -0
- socdl-0.1.1/src/socdl/__init__.py +14 -0
- socdl-0.1.1/src/socdl/__main__.py +5 -0
- socdl-0.1.1/src/socdl/cli.py +443 -0
- socdl-0.1.1/src/socdl/config.py +111 -0
- socdl-0.1.1/src/socdl/engines/__init__.py +13 -0
- socdl-0.1.1/src/socdl/engines/base.py +117 -0
- socdl-0.1.1/src/socdl/engines/ffmpeg.py +71 -0
- socdl-0.1.1/src/socdl/engines/gallerydl.py +81 -0
- socdl-0.1.1/src/socdl/engines/instaloader_engine.py +115 -0
- socdl-0.1.1/src/socdl/engines/ytdlp.py +135 -0
- socdl-0.1.1/src/socdl/history.py +99 -0
- socdl-0.1.1/src/socdl/i18n/__init__.py +39 -0
- socdl-0.1.1/src/socdl/i18n/en.py +66 -0
- socdl-0.1.1/src/socdl/i18n/id.py +66 -0
- socdl-0.1.1/src/socdl/platforms.py +104 -0
- socdl-0.1.1/src/socdl/router.py +65 -0
- socdl-0.1.1/src/socdl/ui.py +106 -0
- socdl-0.1.1/src/socdl/updater.py +46 -0
- socdl-0.1.1/src/socdl/watcher.py +57 -0
socdl-0.1.1/.gitignore
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.so
|
|
6
|
+
.Python
|
|
7
|
+
build/
|
|
8
|
+
develop-eggs/
|
|
9
|
+
dist/
|
|
10
|
+
downloads/
|
|
11
|
+
eggs/
|
|
12
|
+
.eggs/
|
|
13
|
+
lib/
|
|
14
|
+
lib64/
|
|
15
|
+
parts/
|
|
16
|
+
sdist/
|
|
17
|
+
var/
|
|
18
|
+
wheels/
|
|
19
|
+
*.egg-info/
|
|
20
|
+
.installed.cfg
|
|
21
|
+
*.egg
|
|
22
|
+
MANIFEST
|
|
23
|
+
|
|
24
|
+
# Virtual envs
|
|
25
|
+
.env
|
|
26
|
+
.venv
|
|
27
|
+
env/
|
|
28
|
+
venv/
|
|
29
|
+
ENV/
|
|
30
|
+
|
|
31
|
+
# IDE
|
|
32
|
+
.vscode/
|
|
33
|
+
.idea/
|
|
34
|
+
*.swp
|
|
35
|
+
*.swo
|
|
36
|
+
.DS_Store
|
|
37
|
+
|
|
38
|
+
# Testing
|
|
39
|
+
.pytest_cache/
|
|
40
|
+
.coverage
|
|
41
|
+
htmlcov/
|
|
42
|
+
.tox/
|
|
43
|
+
.mypy_cache/
|
|
44
|
+
.ruff_cache/
|
|
45
|
+
|
|
46
|
+
# socdl runtime data
|
|
47
|
+
*.session
|
|
48
|
+
*.session-*
|
|
49
|
+
history.db
|
|
50
|
+
config.local.toml
|
|
51
|
+
|
|
52
|
+
# OS
|
|
53
|
+
Thumbs.db
|
socdl-0.1.1/CHANGELOG.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to **socdl** will be documented here.
|
|
4
|
+
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
5
|
+
|
|
6
|
+
## [0.1.1] — 2026-01-XX
|
|
7
|
+
|
|
8
|
+
### Changed
|
|
9
|
+
- Enabled PyPI Trusted Publishing so tagged releases are automatically
|
|
10
|
+
uploaded to <https://pypi.org/project/socdl/>.
|
|
11
|
+
|
|
12
|
+
## [0.1.0] — 2026-01-XX
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
- First public release.
|
|
16
|
+
- **Standalone binaries** for Windows (x64) and Linux (x64) built with PyInstaller — no Python required.
|
|
17
|
+
- **One-liner installers**: `install.ps1` (Windows) and `install.sh` (Linux/macOS), with automatic fallback to `pip`.
|
|
18
|
+
- Engines can now run **in-process** (calling the yt-dlp / gallery-dl / instaloader APIs directly) when no external executable is available, so frozen binaries are fully self-contained.
|
|
19
|
+
- Automatic ffmpeg discovery, including well-known install locations (winget, scoop, choco, homebrew).
|
|
20
|
+
- Interactive Rich TUI with slash commands (`/help`, `/history`, `/watch`, `/paste`, `/open`, `/config`, `/lang`).
|
|
21
|
+
- Multi-engine router: **instaloader** for Instagram, **yt-dlp** for YouTube / TikTok video / Facebook, **gallery-dl** for Instagram carousel photos, TikTok photo slides, Twitter/X, Reddit.
|
|
22
|
+
- Platform detection with content-kind awareness (post, reel, story, profile, video, photo, playlist).
|
|
23
|
+
- Config file at platform-appropriate user config dir (`~/.config/socdl/config.toml` etc.).
|
|
24
|
+
- SQLite download history + `socdl history` subcommand.
|
|
25
|
+
- Clipboard watcher (`socdl watch`).
|
|
26
|
+
- Batch download from text file (`socdl -f links.txt`).
|
|
27
|
+
- Auto-update notifier (checks PyPI once per run).
|
|
28
|
+
- Bilingual UI: English + Bahasa Indonesia (`--lang en|id`).
|
|
29
|
+
- Quality presets: `best | 1080p | 720p | 480p | 360p | audio` (MP3 extract).
|
|
30
|
+
- `socdl detect <url>` for debugging.
|
|
31
|
+
- `socdl update` to upgrade underlying downloaders.
|
socdl-0.1.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Erzam Bayu
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
socdl-0.1.1/PKG-INFO
ADDED
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: socdl
|
|
3
|
+
Version: 0.1.1
|
|
4
|
+
Summary: A fast, friendly CLI to download photos & videos from Instagram, TikTok, YouTube, Twitter/X, Reddit, Facebook and more.
|
|
5
|
+
Project-URL: Homepage, https://github.com/Erzambayu/socdl
|
|
6
|
+
Project-URL: Repository, https://github.com/Erzambayu/socdl
|
|
7
|
+
Project-URL: Issues, https://github.com/Erzambayu/socdl/issues
|
|
8
|
+
Project-URL: Documentation, https://github.com/Erzambayu/socdl#readme
|
|
9
|
+
Project-URL: Changelog, https://github.com/Erzambayu/socdl/blob/main/CHANGELOG.md
|
|
10
|
+
Author-email: Erzam Bayu <erzambayu@users.noreply.github.com>
|
|
11
|
+
License: MIT
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Keywords: cli,downloader,facebook,gallery-dl,instagram,instaloader,reddit,tiktok,tui,twitter,youtube,yt-dlp
|
|
14
|
+
Classifier: Development Status :: 4 - Beta
|
|
15
|
+
Classifier: Environment :: Console
|
|
16
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
17
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
18
|
+
Classifier: Operating System :: OS Independent
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
25
|
+
Classifier: Topic :: Internet :: WWW/HTTP
|
|
26
|
+
Classifier: Topic :: Multimedia :: Video
|
|
27
|
+
Requires-Python: >=3.9
|
|
28
|
+
Requires-Dist: click>=8.1
|
|
29
|
+
Requires-Dist: gallery-dl>=1.26
|
|
30
|
+
Requires-Dist: instaloader>=4.11
|
|
31
|
+
Requires-Dist: platformdirs>=4.0
|
|
32
|
+
Requires-Dist: pyperclip>=1.8
|
|
33
|
+
Requires-Dist: requests>=2.31
|
|
34
|
+
Requires-Dist: rich>=13.7
|
|
35
|
+
Requires-Dist: tomli-w>=1.0
|
|
36
|
+
Requires-Dist: tomli>=2.0; python_version < '3.11'
|
|
37
|
+
Requires-Dist: yt-dlp>=2024.1.0
|
|
38
|
+
Provides-Extra: build
|
|
39
|
+
Requires-Dist: pyinstaller>=6.6; extra == 'build'
|
|
40
|
+
Provides-Extra: dev
|
|
41
|
+
Requires-Dist: mypy>=1.8; extra == 'dev'
|
|
42
|
+
Requires-Dist: pytest-cov>=4.0; extra == 'dev'
|
|
43
|
+
Requires-Dist: pytest>=7.0; extra == 'dev'
|
|
44
|
+
Requires-Dist: ruff>=0.5; extra == 'dev'
|
|
45
|
+
Description-Content-Type: text/markdown
|
|
46
|
+
|
|
47
|
+
<div align="center">
|
|
48
|
+
|
|
49
|
+
# socdl
|
|
50
|
+
|
|
51
|
+
**Social media downloader for humans.**
|
|
52
|
+
_Instagram · TikTok · YouTube · Twitter/X · Reddit · Facebook_
|
|
53
|
+
|
|
54
|
+
[](https://pypi.org/project/socdl/)
|
|
55
|
+
[](https://pypi.org/project/socdl/)
|
|
56
|
+
[](LICENSE)
|
|
57
|
+
[](https://github.com/Erzambayu/socdl/actions)
|
|
58
|
+
|
|
59
|
+
_Read this in another language: [🇮🇩 Bahasa Indonesia](#-bahasa-indonesia)_
|
|
60
|
+
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## ✨ Highlights
|
|
66
|
+
|
|
67
|
+
- **One command for every platform.** Paste any link — socdl picks the best engine automatically.
|
|
68
|
+
- **Handles carousels properly.** Instagram photo + video posts? All items downloaded, not just the video.
|
|
69
|
+
- **Clean folders.** Organized by platform → uploader → dated filename. No mess.
|
|
70
|
+
- **Beautiful TUI.** Rich progress bars, colored tables, banners. Feels good to use.
|
|
71
|
+
- **Interactive or one-shot.** Run `socdl` for a REPL, or `socdl <url>` and go.
|
|
72
|
+
- **Clipboard watcher.** `socdl watch` — copy a link, it downloads. That's it.
|
|
73
|
+
- **Batch mode.** `socdl -f links.txt` — download hundreds of links at once.
|
|
74
|
+
- **History log.** `socdl history` — see everything you've grabbed.
|
|
75
|
+
- **Bilingual.** English + Bahasa Indonesia (`--lang en|id`).
|
|
76
|
+
|
|
77
|
+
## 📦 Install
|
|
78
|
+
|
|
79
|
+
### ⚡ One-liner (no Python required)
|
|
80
|
+
|
|
81
|
+
**Windows** (PowerShell):
|
|
82
|
+
|
|
83
|
+
```powershell
|
|
84
|
+
irm https://raw.githubusercontent.com/Erzambayu/socdl/main/install.ps1 | iex
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Linux / macOS** (bash):
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
curl -fsSL https://raw.githubusercontent.com/Erzambayu/socdl/main/install.sh | bash
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
The installers download the standalone binary from the latest
|
|
94
|
+
[release](https://github.com/Erzambayu/socdl/releases), put it on your `PATH`,
|
|
95
|
+
and fall back to `pip` automatically if a binary isn't available.
|
|
96
|
+
|
|
97
|
+
### 🐍 Via Python package managers
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
pip install socdl
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Or with [pipx](https://pipx.pypa.io/) (recommended, isolated env):
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
pipx install socdl
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### 📥 Manual download (standalone binary)
|
|
110
|
+
|
|
111
|
+
Grab the binary for your platform from the
|
|
112
|
+
[latest release](https://github.com/Erzambayu/socdl/releases/latest):
|
|
113
|
+
|
|
114
|
+
| Platform | Asset |
|
|
115
|
+
|---------------|--------------------------|
|
|
116
|
+
| Windows x64 | `socdl-windows-x64.exe` |
|
|
117
|
+
| Linux x64 | `socdl-linux-x64` |
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Linux — make it executable and run
|
|
121
|
+
chmod +x socdl-linux-x64
|
|
122
|
+
./socdl-linux-x64 --help
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**Requirements:** _none_ for the standalone binary. For `pip` install you need
|
|
126
|
+
Python 3.9+. Either way, [ffmpeg](https://ffmpeg.org/) is **optional but
|
|
127
|
+
recommended** for best YouTube quality.
|
|
128
|
+
|
|
129
|
+
<details>
|
|
130
|
+
<summary><b>Installing ffmpeg</b></summary>
|
|
131
|
+
|
|
132
|
+
| OS | Command |
|
|
133
|
+
|---------|--------------------------------------------|
|
|
134
|
+
| Windows | `winget install Gyan.FFmpeg` |
|
|
135
|
+
| macOS | `brew install ffmpeg` |
|
|
136
|
+
| Linux | `sudo apt install ffmpeg` / your distro |
|
|
137
|
+
|
|
138
|
+
</details>
|
|
139
|
+
|
|
140
|
+
## 🚀 Quick start
|
|
141
|
+
|
|
142
|
+
**Interactive mode** — just run:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
socdl
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Paste any link, press Enter — done.
|
|
149
|
+
|
|
150
|
+
**One-shot mode:**
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
socdl https://www.instagram.com/p/XXXX/
|
|
154
|
+
socdl https://youtu.be/XXXX https://vt.tiktok.com/XXXX
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Batch from file:**
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
socdl -f my-links.txt
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**Clipboard watcher** (auto-download on copy):
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
socdl watch
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## 🎛️ Commands
|
|
170
|
+
|
|
171
|
+
| Command | Description |
|
|
172
|
+
|-------------------------|------------------------------------------------------------|
|
|
173
|
+
| `socdl` | Launch interactive TUI |
|
|
174
|
+
| `socdl <url> [<url>…]` | Download URLs directly |
|
|
175
|
+
| `socdl -f links.txt` | Batch download from file |
|
|
176
|
+
| `socdl watch` | Clipboard watcher |
|
|
177
|
+
| `socdl history` | Show recent downloads |
|
|
178
|
+
| `socdl config` | Show config; use `--set key=value` to edit |
|
|
179
|
+
| `socdl update` | Upgrade yt-dlp / instaloader / gallery-dl |
|
|
180
|
+
| `socdl detect <url>` | Debug: print detected platform / kind |
|
|
181
|
+
|
|
182
|
+
**Options** (available on the main command):
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
-o, --output PATH Override output directory
|
|
186
|
+
-q, --quality LEVEL best | 1080p | 720p | 480p | 360p | audio
|
|
187
|
+
--lang {en,id} Force UI language
|
|
188
|
+
-f, --file PATH Batch mode from text file
|
|
189
|
+
-V, --version Show version
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**Interactive slash commands** (inside `socdl`):
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
/help Show help
|
|
196
|
+
/config Open config file
|
|
197
|
+
/history Show recent downloads
|
|
198
|
+
/watch Start clipboard watcher
|
|
199
|
+
/paste Download URL from clipboard
|
|
200
|
+
/open Open downloads folder
|
|
201
|
+
/lang en|id Switch UI language
|
|
202
|
+
/quit Exit
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## ⚙️ Configuration
|
|
206
|
+
|
|
207
|
+
Config lives at:
|
|
208
|
+
|
|
209
|
+
- **Linux/macOS:** `~/.config/socdl/config.toml`
|
|
210
|
+
- **Windows:** `%APPDATA%\socdl\config.toml`
|
|
211
|
+
|
|
212
|
+
Sample:
|
|
213
|
+
|
|
214
|
+
```toml
|
|
215
|
+
output_dir = "" # empty = ~/Downloads/socdl-downloads
|
|
216
|
+
subfolder_per_platform = true
|
|
217
|
+
subfolder_per_uploader = true
|
|
218
|
+
|
|
219
|
+
language = "en" # "en" | "id"
|
|
220
|
+
quality = "best" # best|1080p|720p|480p|360p|audio
|
|
221
|
+
embed_metadata = true
|
|
222
|
+
embed_thumbnail = true
|
|
223
|
+
concurrent_fragments = 4
|
|
224
|
+
restrict_filenames = true
|
|
225
|
+
|
|
226
|
+
check_updates = true
|
|
227
|
+
log_history = true
|
|
228
|
+
|
|
229
|
+
instagram_login = "" # your IG username (for private/story)
|
|
230
|
+
cookies_from_browser = "" # "" | chrome | firefox | edge | brave
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Edit inline:
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
socdl config --set quality=1080p
|
|
237
|
+
socdl config --set language=id
|
|
238
|
+
socdl config --set output_dir=D:/media
|
|
239
|
+
socdl config --show
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## 🔐 Private / login-required content
|
|
243
|
+
|
|
244
|
+
For Instagram stories, private accounts, age-restricted YouTube, etc.:
|
|
245
|
+
|
|
246
|
+
**Instagram** — one-time login via instaloader:
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
socdl config --set instagram_login=your_username
|
|
250
|
+
instaloader -l your_username # asks password, saves session
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
**YouTube / X / Reddit** — reuse your browser cookies:
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
socdl config --set cookies_from_browser=chrome
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
Supported browsers: `chrome`, `firefox`, `edge`, `brave`, `opera`, `vivaldi`.
|
|
260
|
+
|
|
261
|
+
## 🗂️ Folder structure
|
|
262
|
+
|
|
263
|
+
```
|
|
264
|
+
~/Downloads/socdl-downloads/
|
|
265
|
+
├── Instagram/<username>/2024-01-15_ABCDEF_1.jpg
|
|
266
|
+
├── TikTok/<username>/2024-01-15_video-title.mp4
|
|
267
|
+
├── YouTube/<uploader>/Video Title [XXXX].mp4
|
|
268
|
+
├── Twitter/<username>/2024-01-15_tweetid_1.jpg
|
|
269
|
+
└── Reddit/<subreddit>/postid_01.jpg
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
## 🌍 Supported sites
|
|
273
|
+
|
|
274
|
+
Core:
|
|
275
|
+
|
|
276
|
+
- **Instagram** — posts, reels, carousels (photo+video), profile scrape, stories\*
|
|
277
|
+
- **TikTok** — videos, photo slides, profiles
|
|
278
|
+
- **YouTube** — videos, shorts, playlists
|
|
279
|
+
- **Twitter/X** — tweets with images/video, threads
|
|
280
|
+
- **Reddit** — posts (image, video, galleries)
|
|
281
|
+
- **Facebook** — public videos and posts\*
|
|
282
|
+
|
|
283
|
+
\* May require login/cookies. See [Private content](#-private--login-required-content).
|
|
284
|
+
|
|
285
|
+
Plus **1000+ other sites** via yt-dlp fallback (Twitch clips, Vimeo, SoundCloud, …).
|
|
286
|
+
|
|
287
|
+
## 🧑💻 Development
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
git clone https://github.com/Erzambayu/socdl.git
|
|
291
|
+
cd socdl
|
|
292
|
+
python -m venv .venv
|
|
293
|
+
source .venv/bin/activate # Windows: .venv\Scripts\activate
|
|
294
|
+
pip install -e ".[dev]"
|
|
295
|
+
socdl --help
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
Run tests / lint:
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
pytest
|
|
302
|
+
ruff check .
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
## 🤝 Contributing
|
|
306
|
+
|
|
307
|
+
PRs welcome! See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
308
|
+
|
|
309
|
+
## 📄 License
|
|
310
|
+
|
|
311
|
+
MIT © [Erzam Bayu](https://github.com/Erzambayu)
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## 🇮🇩 Bahasa Indonesia
|
|
316
|
+
|
|
317
|
+
**socdl** — downloader sosmed yang ramah manusia. Instagram, TikTok, YouTube, Twitter/X, Reddit, Facebook — semua dari satu command.
|
|
318
|
+
|
|
319
|
+
### Kenapa socdl?
|
|
320
|
+
|
|
321
|
+
- Paste link apa aja, socdl otomatis pilih engine yang paling cocok.
|
|
322
|
+
- **Instagram carousel foto+video?** Semua item ke-download, bukan cuma video-nya.
|
|
323
|
+
- Folder rapi otomatis: platform → uploader → tanggal.
|
|
324
|
+
- TUI cakep pake Rich (progress bar, tabel warna).
|
|
325
|
+
- Bisa interactive (`socdl`) atau one-shot (`socdl <link>`).
|
|
326
|
+
- **Clipboard watcher** — copy link, langsung download. Ga usah bolak-balik terminal.
|
|
327
|
+
- Batch dari file `.txt`, history log SQLite, auto-update checker.
|
|
328
|
+
- **Bilingual** — bisa English atau Indonesia (`--lang id`).
|
|
329
|
+
|
|
330
|
+
### Install
|
|
331
|
+
|
|
332
|
+
**One-liner (tanpa Python):**
|
|
333
|
+
|
|
334
|
+
```powershell
|
|
335
|
+
# Windows (PowerShell):
|
|
336
|
+
irm https://raw.githubusercontent.com/Erzambayu/socdl/main/install.ps1 | iex
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
# Linux / macOS:
|
|
341
|
+
curl -fsSL https://raw.githubusercontent.com/Erzambayu/socdl/main/install.sh | bash
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
Atau download manual binary dari [Releases](https://github.com/Erzambayu/socdl/releases/latest).
|
|
345
|
+
|
|
346
|
+
**Via pip:**
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
pip install socdl
|
|
350
|
+
# atau (lebih rapi):
|
|
351
|
+
pipx install socdl
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
Butuh ffmpeg (opsional tapi disaranin). Binary standalone ga butuh Python.
|
|
355
|
+
|
|
356
|
+
### Pake
|
|
357
|
+
|
|
358
|
+
```bash
|
|
359
|
+
# Mode interactive (paling enak):
|
|
360
|
+
socdl --lang id
|
|
361
|
+
|
|
362
|
+
# One-shot:
|
|
363
|
+
socdl https://www.instagram.com/p/XXXX/
|
|
364
|
+
|
|
365
|
+
# Batch dari file:
|
|
366
|
+
socdl -f links.txt
|
|
367
|
+
|
|
368
|
+
# Auto-download apapun yang lo copy:
|
|
369
|
+
socdl watch
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
### Config
|
|
373
|
+
|
|
374
|
+
Edit gampang:
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
socdl config --set language=id
|
|
378
|
+
socdl config --set quality=1080p
|
|
379
|
+
socdl config --set output_dir=D:/downloads
|
|
380
|
+
socdl config --show
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
### Konten private (story IG, dll)
|
|
384
|
+
|
|
385
|
+
```bash
|
|
386
|
+
# Instagram
|
|
387
|
+
socdl config --set instagram_login=username_lo
|
|
388
|
+
instaloader -l username_lo # login sekali, sesi tersimpan
|
|
389
|
+
|
|
390
|
+
# YouTube/X/Reddit — pake cookies browser:
|
|
391
|
+
socdl config --set cookies_from_browser=chrome
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
### Support
|
|
395
|
+
|
|
396
|
+
Ada bug atau request? Buka [issue di GitHub](https://github.com/Erzambayu/socdl/issues).
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
<div align="center">
|
|
401
|
+
|
|
402
|
+
Made with ❤️ by [Erzam Bayu](https://github.com/Erzambayu)
|
|
403
|
+
|
|
404
|
+
</div>
|