tor-dl 1.0.1 → 1.0.3
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.
- package/AGENTS.md +6 -6
- package/README.md +22 -180
- package/dist/bin/{tordl.js → tor-dl.js} +2 -3
- package/dist/cli/display.d.ts.map +1 -1
- package/dist/cli/display.js +13 -9
- package/dist/cli/display.js.map +1 -1
- package/dist/cli/parser.d.ts.map +1 -1
- package/dist/cli/parser.js +21 -27
- package/dist/cli/parser.js.map +1 -1
- package/dist/commands/download.d.ts +1 -1
- package/dist/commands/download.d.ts.map +1 -1
- package/dist/commands/download.js +55 -49
- package/dist/commands/download.js.map +1 -1
- package/dist/download/engine.d.ts +1 -3
- package/dist/download/engine.d.ts.map +1 -1
- package/dist/download/engine.js +0 -129
- package/dist/download/engine.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/sources/nyaa.d.ts.map +1 -1
- package/dist/sources/nyaa.js +3 -0
- package/dist/sources/nyaa.js.map +1 -1
- package/dist/sources/thepiratebay.d.ts.map +1 -1
- package/dist/sources/thepiratebay.js +1 -0
- package/dist/sources/thepiratebay.js.map +1 -1
- package/dist/sources/yts.d.ts.map +1 -1
- package/dist/sources/yts.js +1 -0
- package/dist/sources/yts.js.map +1 -1
- package/dist/src/cli/display.d.ts +7 -0
- package/dist/src/cli/display.d.ts.map +1 -0
- package/dist/src/cli/display.js +59 -0
- package/dist/src/cli/display.js.map +1 -0
- package/dist/src/cli/parser.d.ts +5 -0
- package/dist/src/cli/parser.d.ts.map +1 -0
- package/dist/src/cli/parser.js +122 -0
- package/dist/src/cli/parser.js.map +1 -0
- package/dist/src/cli/progress.d.ts +15 -0
- package/dist/src/cli/progress.d.ts.map +1 -0
- package/dist/src/cli/progress.js +76 -0
- package/dist/src/cli/progress.js.map +1 -0
- package/dist/src/commands/download.d.ts +2 -0
- package/dist/src/commands/download.d.ts.map +1 -0
- package/dist/src/commands/download.js +70 -0
- package/dist/src/commands/download.js.map +1 -0
- package/dist/src/commands/search.d.ts +3 -0
- package/dist/src/commands/search.d.ts.map +1 -0
- package/dist/src/commands/search.js +46 -0
- package/dist/src/commands/search.js.map +1 -0
- package/dist/src/commands/update.d.ts +2 -0
- package/dist/src/commands/update.d.ts.map +1 -0
- package/dist/src/commands/update.js +32 -0
- package/dist/src/commands/update.js.map +1 -0
- package/dist/src/download/engine.d.ts +6 -0
- package/dist/src/download/engine.d.ts.map +1 -0
- package/dist/src/download/engine.js +163 -0
- package/dist/src/download/engine.js.map +1 -0
- package/dist/src/filters/category.d.ts +3 -0
- package/dist/src/filters/category.d.ts.map +1 -0
- package/dist/src/filters/category.js +24 -0
- package/dist/src/filters/category.js.map +1 -0
- package/dist/src/filters/index.d.ts +5 -0
- package/dist/src/filters/index.d.ts.map +1 -0
- package/dist/src/filters/index.js +13 -0
- package/dist/src/filters/index.js.map +1 -0
- package/dist/src/filters/seeds.d.ts +3 -0
- package/dist/src/filters/seeds.d.ts.map +1 -0
- package/dist/src/filters/seeds.js +7 -0
- package/dist/src/filters/seeds.js.map +1 -0
- package/dist/src/filters/size.d.ts +4 -0
- package/dist/src/filters/size.d.ts.map +1 -0
- package/dist/src/filters/size.js +36 -0
- package/dist/src/filters/size.js.map +1 -0
- package/dist/src/filters/sort.d.ts +5 -0
- package/dist/src/filters/sort.d.ts.map +1 -0
- package/dist/src/filters/sort.js +25 -0
- package/dist/src/filters/sort.js.map +1 -0
- package/dist/src/index.d.ts +11 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +30 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/sources/1337x.d.ts +11 -0
- package/dist/src/sources/1337x.d.ts.map +1 -0
- package/dist/src/sources/1337x.js +121 -0
- package/dist/src/sources/1337x.js.map +1 -0
- package/dist/src/sources/eztv.d.ts +11 -0
- package/dist/src/sources/eztv.d.ts.map +1 -0
- package/dist/src/sources/eztv.js +104 -0
- package/dist/src/sources/eztv.js.map +1 -0
- package/dist/src/sources/httpClient.d.ts +24 -0
- package/dist/src/sources/httpClient.d.ts.map +1 -0
- package/dist/src/sources/httpClient.js +42 -0
- package/dist/src/sources/httpClient.js.map +1 -0
- package/dist/src/sources/limetorrent.d.ts +11 -0
- package/dist/src/sources/limetorrent.d.ts.map +1 -0
- package/dist/src/sources/limetorrent.js +113 -0
- package/dist/src/sources/limetorrent.js.map +1 -0
- package/dist/src/sources/nyaa.d.ts +11 -0
- package/dist/src/sources/nyaa.d.ts.map +1 -0
- package/dist/src/sources/nyaa.js +119 -0
- package/dist/src/sources/nyaa.js.map +1 -0
- package/dist/src/sources/rarbg.d.ts +11 -0
- package/dist/src/sources/rarbg.d.ts.map +1 -0
- package/dist/src/sources/rarbg.js +122 -0
- package/dist/src/sources/rarbg.js.map +1 -0
- package/dist/src/sources/registry.d.ts +9 -0
- package/dist/src/sources/registry.d.ts.map +1 -0
- package/dist/src/sources/registry.js +70 -0
- package/dist/src/sources/registry.js.map +1 -0
- package/dist/src/sources/solidtorrents.d.ts +11 -0
- package/dist/src/sources/solidtorrents.d.ts.map +1 -0
- package/dist/src/sources/solidtorrents.js +105 -0
- package/dist/src/sources/solidtorrents.js.map +1 -0
- package/dist/src/sources/thepiratebay.d.ts +11 -0
- package/dist/src/sources/thepiratebay.d.ts.map +1 -0
- package/dist/src/sources/thepiratebay.js +67 -0
- package/dist/src/sources/thepiratebay.js.map +1 -0
- package/dist/src/sources/torlock.d.ts +11 -0
- package/dist/src/sources/torlock.d.ts.map +1 -0
- package/dist/src/sources/torlock.js +116 -0
- package/dist/src/sources/torlock.js.map +1 -0
- package/dist/src/sources/torrentproject.d.ts +11 -0
- package/dist/src/sources/torrentproject.d.ts.map +1 -0
- package/dist/src/sources/torrentproject.js +105 -0
- package/dist/src/sources/torrentproject.js.map +1 -0
- package/dist/src/sources/torrentscsv.d.ts +11 -0
- package/dist/src/sources/torrentscsv.d.ts.map +1 -0
- package/dist/src/sources/torrentscsv.js +62 -0
- package/dist/src/sources/torrentscsv.js.map +1 -0
- package/dist/src/sources/yts.d.ts +12 -0
- package/dist/src/sources/yts.d.ts.map +1 -0
- package/dist/src/sources/yts.js +88 -0
- package/dist/src/sources/yts.js.map +1 -0
- package/dist/src/types.d.ts +60 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +3 -0
- package/dist/src/types.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/output.txt +0 -0
- package/package.json +8 -11
- package/scripts/build.js +9 -0
- package/src/cli/display.ts +63 -57
- package/src/cli/parser.ts +23 -30
- package/src/commands/download.ts +48 -15
- package/src/commands/search.ts +52 -52
- package/src/download/engine.ts +1 -144
- package/src/index.ts +0 -1
- package/src/sources/nyaa.ts +3 -0
- package/src/sources/thepiratebay.ts +1 -0
- package/src/sources/yts.ts +1 -0
- package/src/types.ts +1 -0
- package/bin/tordl.js +0 -5
- package/dist/bin/torrent-cli.js +0 -5
- package/src/cli/progress.ts +0 -78
package/AGENTS.md
CHANGED
|
@@ -7,19 +7,19 @@ Node.js CLI tool for torrent search and download using TypeScript.
|
|
|
7
7
|
```bash
|
|
8
8
|
npm install
|
|
9
9
|
npm run build
|
|
10
|
-
node dist/bin/
|
|
10
|
+
node dist/bin/tor-dl.js --help
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
## Build Commands
|
|
14
14
|
- `npm run build` - Compile TypeScript to `dist/`
|
|
15
|
-
- `npm run start` or `node dist/bin/
|
|
15
|
+
- `npm run start` or `node dist/bin/tor-dl.js` - Run CLI
|
|
16
16
|
|
|
17
17
|
## Common Commands
|
|
18
18
|
```bash
|
|
19
|
-
node dist/bin/
|
|
20
|
-
node dist/bin/
|
|
21
|
-
node dist/bin/
|
|
22
|
-
node dist/bin/
|
|
19
|
+
node dist/bin/tor-dl.js search "movie title"
|
|
20
|
+
node dist/bin/tor-dl.js 1 # Download result #1
|
|
21
|
+
node dist/bin/tor-dl.js -u # Update sources
|
|
22
|
+
node dist/bin/tor-dl.js -v # Version
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
## Critical Fixes (Do Not Remove)
|
package/README.md
CHANGED
|
@@ -6,33 +6,22 @@
|
|
|
6
6
|
<img src="https://img.shields.io/github/license/tor-dl" alt="license">
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
|
-
> A
|
|
9
|
+
> A CLI torrent search tool. Search across multiple sources, open .torrent in browser, or copy magnet links to your clipboard.
|
|
10
10
|
|
|
11
11
|
## Features
|
|
12
12
|
|
|
13
|
-
- 🔍 **Multi-Source Search** - Search across
|
|
14
|
-
- 🎯 **Smart Filters** - Filter by category, seeders, size
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
- 📈 **Rich Progress** - Beautiful CLI progress bar with speed and ETA
|
|
18
|
-
- 🔄 **Easy Updates** - Update source configurations via `-u` flag
|
|
19
|
-
- ⚙️ **JSON Config** - Fully configurable via `filters.json` and `sources.json`
|
|
13
|
+
- 🔍 **Multi-Source Search** - Search across multiple torrent sources simultaneously
|
|
14
|
+
- 🎯 **Smart Filters** - Filter by category, seeders, size
|
|
15
|
+
- ⬇️ **Open in Browser** - Open .torrent files directly in your browser
|
|
16
|
+
- 📋 **Copy Magnet** - Copy magnet links to clipboard for use with your torrent client
|
|
20
17
|
|
|
21
18
|
## Installation
|
|
22
19
|
|
|
23
20
|
```bash
|
|
24
|
-
# Clone the repository
|
|
25
21
|
git clone https://github.com/eaeoz/tor-dl.git
|
|
26
22
|
cd tor-dl
|
|
27
|
-
|
|
28
|
-
# Install dependencies
|
|
29
23
|
npm install
|
|
30
|
-
|
|
31
|
-
# Build the project
|
|
32
24
|
npm run build
|
|
33
|
-
|
|
34
|
-
# Link for global use (optional)
|
|
35
|
-
npm link
|
|
36
25
|
```
|
|
37
26
|
|
|
38
27
|
## Quick Start
|
|
@@ -41,27 +30,10 @@ npm link
|
|
|
41
30
|
# Search for torrents
|
|
42
31
|
tor-dl search "movie title"
|
|
43
32
|
|
|
44
|
-
#
|
|
45
|
-
tor-dl 3
|
|
46
|
-
|
|
47
|
-
# Update sources
|
|
48
|
-
tor-dl -u
|
|
33
|
+
# Open .torrent in browser or copy magnet link
|
|
34
|
+
tor-dl o 3
|
|
49
35
|
```
|
|
50
36
|
|
|
51
|
-
## Supported Sources
|
|
52
|
-
|
|
53
|
-
| Source | Categories | Status |
|
|
54
|
-
|--------|------------|--------|
|
|
55
|
-
| 1337x | All | ✅ Enabled |
|
|
56
|
-
| EZTV | TV | ✅ Enabled |
|
|
57
|
-
| The Pirate Bay | All | ✅ Enabled |
|
|
58
|
-
| RarBG | Movie, TV | ✅ Enabled |
|
|
59
|
-
| Limetorrents | All | ✅ Enabled |
|
|
60
|
-
| TorLock | All | ✅ Enabled |
|
|
61
|
-
| TorrentProject | All | ✅ Enabled |
|
|
62
|
-
| SolidTorrents | All | ✅ Enabled |
|
|
63
|
-
| torrents-csv | All | ✅ Enabled |
|
|
64
|
-
|
|
65
37
|
## Usage
|
|
66
38
|
|
|
67
39
|
### Search Command
|
|
@@ -81,166 +53,40 @@ tor-dl search <query> [options]
|
|
|
81
53
|
| `-o, --sort <field>` | Sort by: seeds, size, date | seeds |
|
|
82
54
|
| `--order <order>` | Order: asc, desc | desc |
|
|
83
55
|
| `-l, --limit <number>` | Result limit | 50 |
|
|
56
|
+
| `--sources <sources>` | Sources: yts, thepiratebay, nyaa, etc. | all enabled |
|
|
84
57
|
|
|
85
58
|
**Examples:**
|
|
86
59
|
|
|
87
60
|
```bash
|
|
88
|
-
# Basic search
|
|
61
|
+
# Basic search
|
|
89
62
|
tor-dl search "Blade Runner 2049"
|
|
90
63
|
|
|
91
|
-
#
|
|
64
|
+
# Filter by seeds and size
|
|
92
65
|
tor-dl search "game of thrones" --cat tv --min-seeds 100 --min-size 500MB
|
|
93
66
|
|
|
94
|
-
#
|
|
95
|
-
tor-dl search "movie" --
|
|
96
|
-
|
|
97
|
-
# Limit results to top 10
|
|
98
|
-
tor-dl search "linux" -l 10
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### Download Command
|
|
102
|
-
|
|
103
|
-
```bash
|
|
104
|
-
# Download by number (from previous search)
|
|
105
|
-
tor-dl <number>
|
|
106
|
-
|
|
107
|
-
# Or use explicit download command
|
|
108
|
-
tor-dl download <number> [options]
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
**Options:**
|
|
112
|
-
|
|
113
|
-
| Flag | Description |
|
|
114
|
-
|------|-------------|
|
|
115
|
-
| `-p, --path <path>` | Custom download path |
|
|
116
|
-
|
|
117
|
-
**Example:**
|
|
118
|
-
|
|
119
|
-
```bash
|
|
120
|
-
# Download result #3 from previous search
|
|
121
|
-
tor-dl 3
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
### Update Command
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
tor-dl update
|
|
128
|
-
# or
|
|
129
|
-
tor-dl -u
|
|
67
|
+
# Search specific source
|
|
68
|
+
tor-dl search "movie" --sources yts,thepiratebay
|
|
130
69
|
```
|
|
131
70
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
### Version
|
|
71
|
+
### Open Command
|
|
135
72
|
|
|
136
73
|
```bash
|
|
137
|
-
tor-dl
|
|
138
|
-
# or
|
|
139
|
-
tor-dl -v
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
## Configuration
|
|
143
|
-
|
|
144
|
-
### filters.json
|
|
145
|
-
|
|
146
|
-
Default search filters (can be overridden via CLI):
|
|
147
|
-
|
|
148
|
-
```json
|
|
149
|
-
{
|
|
150
|
-
"category": "all",
|
|
151
|
-
"minSeeds": 0,
|
|
152
|
-
"minSize": "0",
|
|
153
|
-
"maxSize": "50GB",
|
|
154
|
-
"sortBy": "seeds",
|
|
155
|
-
"order": "desc",
|
|
156
|
-
"limit": 50
|
|
157
|
-
}
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
### sources.json
|
|
161
|
-
|
|
162
|
-
Source configurations with remote update URL:
|
|
163
|
-
|
|
164
|
-
```json
|
|
165
|
-
{
|
|
166
|
-
"updateUrl": "https://raw.githubusercontent.com/eaeoz/tor-dl/main/sources.json",
|
|
167
|
-
"version": "1.0.0",
|
|
168
|
-
"sources": {
|
|
169
|
-
"1337x": {
|
|
170
|
-
"enabled": true,
|
|
171
|
-
"name": "1337x",
|
|
172
|
-
"baseUrl": "https://1337x.to",
|
|
173
|
-
"searchUrl": "https://1337x.to/category-search",
|
|
174
|
-
"categories": ["all", "movie", "tv", "music", "games", "apps"],
|
|
175
|
-
"searchParam": "search",
|
|
176
|
-
"hasMagnet": true
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
74
|
+
tor-dl o <number>
|
|
180
75
|
```
|
|
181
76
|
|
|
182
|
-
|
|
77
|
+
Opens .torrent file in browser, or copies magnet link to clipboard.
|
|
183
78
|
|
|
184
|
-
|
|
185
|
-
┌─────┬─────────────────────────────────────────┬───────────┬────────┬──────────┐
|
|
186
|
-
│ Num │ Name │ Size │ Seeds │ Source │
|
|
187
|
-
├─────┼─────────────────────────────────────────┼───────────┼────────┼──────────┤
|
|
188
|
-
│ 1 │ Blade.Runner.2049.2017.720p.BluRay │ 1.2GB │ 5,000 │ 1337x │
|
|
189
|
-
│ 2 │ Blade.Runner.2049.2017.1080p.BluRay │ 2.1GB │ 3,200 │ limetorrent │
|
|
190
|
-
│ 3 │ Blade.Runner.2049.2017.4K.BluRay │ 4.5GB │ 1,800 │ rarbg │
|
|
191
|
-
└─────┴─────────────────────────────────────────┴───────────┴────────┴──────────┘
|
|
192
|
-
|
|
193
|
-
To download: tor-dl <number>
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
## Project Structure
|
|
79
|
+
## Supported Sources
|
|
197
80
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
│ ├── cli/
|
|
204
|
-
│ │ ├── parser.ts # Commander.js CLI parser
|
|
205
|
-
│ │ ├── display.ts # Terminal output formatting
|
|
206
|
-
│ │ └── progress.ts # Download progress bar
|
|
207
|
-
│ ├── commands/
|
|
208
|
-
│ │ ├── search.ts # Search command
|
|
209
|
-
│ │ ├── download.ts # Download command
|
|
210
|
-
│ │ └── update.ts # Update sources command
|
|
211
|
-
│ ├── sources/
|
|
212
|
-
│ │ ├── _1337x.ts # 1337x scraper
|
|
213
|
-
│ │ ├── eztv.ts # EZTV scraper
|
|
214
|
-
│ │ ├── limetorrent.ts # Limetorrents scraper
|
|
215
|
-
│ │ ├── rarbg.ts # RarBG scraper
|
|
216
|
-
│ │ └── ... # More source scrapers
|
|
217
|
-
│ ├── filters/
|
|
218
|
-
│ │ ├── category.ts # Category filter
|
|
219
|
-
│ │ ├── size.ts # Size filter
|
|
220
|
-
│ │ ├── seeds.ts # Seeds filter
|
|
221
|
-
│ │ └── sort.ts # Sort functionality
|
|
222
|
-
│ ├── download/
|
|
223
|
-
│ │ └── engine.ts # WebTorrent download engine
|
|
224
|
-
│ └── types.ts # TypeScript interfaces
|
|
225
|
-
├── sources.json # Source configurations
|
|
226
|
-
├── filters.json # Default filters
|
|
227
|
-
└── package.json
|
|
228
|
-
```
|
|
81
|
+
- YTS (Movies)
|
|
82
|
+
- The Pirate Bay
|
|
83
|
+
- Nyaa (Anime)
|
|
84
|
+
- EZTV (TV)
|
|
85
|
+
- And more...
|
|
229
86
|
|
|
230
87
|
## Requirements
|
|
231
88
|
|
|
232
89
|
- Node.js >= 18.0.0
|
|
233
|
-
- npm or yarn
|
|
234
|
-
|
|
235
|
-
## Tech Stack
|
|
236
|
-
|
|
237
|
-
- **TypeScript** - Type-safe code
|
|
238
|
-
- **Commander.js** - CLI argument parsing
|
|
239
|
-
- **Axios + Cheerio** - HTTP requests and HTML parsing
|
|
240
|
-
- **WebTorrent** - Torrent downloading
|
|
241
|
-
- **cli-progress** - Rich progress bars
|
|
242
|
-
- **Chalk** - Terminal colors
|
|
243
|
-
- **Ora** - Loading spinners
|
|
244
90
|
|
|
245
91
|
## License
|
|
246
92
|
|
|
@@ -248,8 +94,4 @@ MIT License - See [LICENSE](LICENSE) for details.
|
|
|
248
94
|
|
|
249
95
|
## Disclaimer
|
|
250
96
|
|
|
251
|
-
This tool is for educational purposes. Always respect copyright laws and the terms of service of torrent sites.
|
|
252
|
-
|
|
253
|
-
---
|
|
254
|
-
|
|
255
|
-
<p align="center">Made with ❤️ for the CLI community</p>
|
|
97
|
+
This tool is for educational purposes. Always respect copyright laws and the terms of service of torrent sites.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/cli/display.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/cli/display.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,IAAI,CAgC7D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAYhE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEjD"}
|
package/dist/cli/display.js
CHANGED
|
@@ -9,29 +9,33 @@ exports.displayError = displayError;
|
|
|
9
9
|
exports.displaySuccess = displaySuccess;
|
|
10
10
|
exports.displayInfo = displayInfo;
|
|
11
11
|
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
+
chalk_1.default.level = 1;
|
|
12
13
|
function displayResults(results) {
|
|
13
14
|
if (results.length === 0) {
|
|
14
15
|
console.log(chalk_1.default.yellow('No results found.'));
|
|
15
16
|
return;
|
|
16
17
|
}
|
|
18
|
+
console.log(chalk_1.default.gray('\nTip: "tor-dl o <number>" to open .torrent or copy magnet link\n'));
|
|
17
19
|
const out = (s) => process.stdout.write(s + '\n');
|
|
18
20
|
out('\n' + [
|
|
19
|
-
'
|
|
20
|
-
'│ Num │ Name
|
|
21
|
-
'
|
|
21
|
+
'┌─────┬───┬────────────────────────────────────────┬────────┬───────┬───────┬────────┐',
|
|
22
|
+
'│ Num │ L │ Name │ Size │ Seeds │ Leech │ Source │',
|
|
23
|
+
'├─────┼───┼────────────────────────────────────────┼────────┼───────┼───────┼────────┤'
|
|
22
24
|
].join('\n'));
|
|
23
25
|
for (const r of results) {
|
|
24
26
|
const name = r.name.length > 38 ? r.name.substring(0, 35) + '...' : r.name;
|
|
25
27
|
const size = r.size ? r.size.slice(0, 6).padEnd(6) : 'N/A ';
|
|
26
|
-
const seeds = r.seeds.toString().padStart(5);
|
|
27
|
-
const peers = r.peers.toString().padStart(5);
|
|
28
|
+
const seeds = r.seeds > 100 ? chalk_1.default.green(r.seeds.toString().padStart(5)) : r.seeds > 50 ? chalk_1.default.yellow(r.seeds.toString().padStart(5)) : r.seeds.toString().padStart(5);
|
|
29
|
+
const peers = r.peers > 50 ? chalk_1.default.cyan(r.peers.toString().padStart(5)) : r.peers.toString().padStart(5);
|
|
28
30
|
const source = (r.source || 'unknown').slice(0, 6).padEnd(6);
|
|
29
|
-
const num = r.num.toString().padStart(3);
|
|
30
|
-
|
|
31
|
+
const num = chalk_1.default.cyan(r.num.toString().padStart(3));
|
|
32
|
+
const link = r.torrentUrl || r.magnet ? chalk_1.default.green('✓') : ' ';
|
|
33
|
+
out(`│ ${num} │ ${link} │ ${name.padEnd(38)} │ ${size} │ ${seeds} │ ${peers} │ ${source} │`);
|
|
31
34
|
}
|
|
32
|
-
out('
|
|
35
|
+
out('├─────┼───┼────────────────────────────────────────┼────────┼───────┼───────┼────────┤');
|
|
36
|
+
out('└─────┴───┴────────────────────────────────────────┴────────┴───────┴───────┴────────┘');
|
|
33
37
|
out('');
|
|
34
|
-
out('
|
|
38
|
+
out(chalk_1.default.gray('Use: tor-dl o <number> to open in browser or copy magnet link'));
|
|
35
39
|
}
|
|
36
40
|
function displayResultDetails(result) {
|
|
37
41
|
console.log(chalk_1.default.bold('\n--- Torrent Details ---'));
|
package/dist/cli/display.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/cli/display.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/cli/display.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/cli/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAiB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/cli/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAiB,MAAM,UAAU,CAAC;AAWvD,wBAAgB,WAAW,IAAI,YAAY,CAc1C;AAED,wBAAgB,YAAY,IAAI,OAAO,CA0DtC"}
|
package/dist/cli/parser.js
CHANGED
|
@@ -38,6 +38,15 @@ exports.createParser = createParser;
|
|
|
38
38
|
const commander_1 = require("commander");
|
|
39
39
|
const fs_1 = require("fs");
|
|
40
40
|
const path_1 = require("path");
|
|
41
|
+
function getVersion() {
|
|
42
|
+
try {
|
|
43
|
+
const pkg = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(__dirname, '../../package.json'), 'utf-8'));
|
|
44
|
+
return pkg.version || '1.0.0';
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return '1.0.0';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
41
50
|
function loadFilters() {
|
|
42
51
|
const filtersPath = (0, path_1.join)(process.cwd(), 'filters.json');
|
|
43
52
|
if ((0, fs_1.existsSync)(filtersPath)) {
|
|
@@ -57,13 +66,8 @@ function createParser() {
|
|
|
57
66
|
const program = new commander_1.Command();
|
|
58
67
|
program
|
|
59
68
|
.name('tor-dl')
|
|
60
|
-
.description('CLI torrent search
|
|
61
|
-
.version('
|
|
62
|
-
.hook('preAction', (thisCommand) => {
|
|
63
|
-
if (thisCommand.name() === 'update') {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
});
|
|
69
|
+
.description('CLI torrent search tool - search, open in browser, copy magnet links')
|
|
70
|
+
.version(getVersion(), '-v, --version');
|
|
67
71
|
program
|
|
68
72
|
.command('search <query>')
|
|
69
73
|
.description('Search for torrents')
|
|
@@ -91,27 +95,17 @@ function createParser() {
|
|
|
91
95
|
const { searchCommand } = await Promise.resolve().then(() => __importStar(require('../commands/search')));
|
|
92
96
|
await searchCommand(searchOptions);
|
|
93
97
|
});
|
|
94
|
-
program
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
.
|
|
98
|
-
|
|
99
|
-
const { downloadCommand } = await Promise.resolve().then(() => __importStar(require('../commands/download')));
|
|
100
|
-
await downloadCommand(parseInt(number), options.path);
|
|
101
|
-
});
|
|
102
|
-
program
|
|
103
|
-
.command('update')
|
|
104
|
-
.description('Update sources from remote config')
|
|
105
|
-
.alias('u')
|
|
106
|
-
.action(async () => {
|
|
107
|
-
const { updateCommand } = await Promise.resolve().then(() => __importStar(require('../commands/update')));
|
|
108
|
-
await updateCommand();
|
|
98
|
+
const openCmd = program.command('open <number>', { hidden: true });
|
|
99
|
+
openCmd.description('Open .torrent in browser or copy magnet to clipboard');
|
|
100
|
+
openCmd.action(async (number) => {
|
|
101
|
+
const { openInBrowser } = await Promise.resolve().then(() => __importStar(require('../commands/download')));
|
|
102
|
+
await openInBrowser(parseInt(number));
|
|
109
103
|
});
|
|
110
|
-
program
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
const {
|
|
114
|
-
await
|
|
104
|
+
const oCmd = program.command('o <number>');
|
|
105
|
+
oCmd.description('Open .torrent in browser or copy magnet to clipboard');
|
|
106
|
+
oCmd.action(async (number) => {
|
|
107
|
+
const { openInBrowser } = await Promise.resolve().then(() => __importStar(require('../commands/download')));
|
|
108
|
+
await openInBrowser(parseInt(number));
|
|
115
109
|
});
|
|
116
110
|
program.on('command:*', () => {
|
|
117
111
|
console.error('Invalid command: %s\nSee --help for a list of available commands.', program.args[0]);
|
package/dist/cli/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/cli/parser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/cli/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function
|
|
1
|
+
export declare function openInBrowser(number: number): Promise<void>;
|
|
2
2
|
//# sourceMappingURL=download.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/commands/download.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/commands/download.ts"],"names":[],"mappings":"AAKA,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DjE"}
|
|
@@ -1,46 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
4
|
};
|
|
38
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.
|
|
6
|
+
exports.openInBrowser = openInBrowser;
|
|
40
7
|
const display_1 = require("../cli/display");
|
|
41
8
|
const engine_1 = require("../download/engine");
|
|
42
|
-
const
|
|
43
|
-
|
|
9
|
+
const child_process_1 = require("child_process");
|
|
10
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
async function openInBrowser(number) {
|
|
44
12
|
const results = (0, engine_1.getCachedResults)();
|
|
45
13
|
if (results.length === 0) {
|
|
46
14
|
(0, display_1.displayError)('No search results found. Run "tor-dl search <query>" first.');
|
|
@@ -51,20 +19,58 @@ async function downloadCommand(number, savePath) {
|
|
|
51
19
|
process.exit(1);
|
|
52
20
|
}
|
|
53
21
|
const result = results[number - 1];
|
|
54
|
-
(
|
|
55
|
-
|
|
56
|
-
(0, display_1.displayInfo)(`Size: ${result.size}`);
|
|
57
|
-
(0, display_1.displayInfo)(`Seeds: ${result.seeds}\n`);
|
|
58
|
-
const spinner = (0, ora_1.default)('Starting download...').start();
|
|
59
|
-
try {
|
|
60
|
-
const { downloadTorrent } = await Promise.resolve().then(() => __importStar(require('../download/engine')));
|
|
61
|
-
await downloadTorrent(result, { savePath });
|
|
62
|
-
spinner.succeed('Download complete!');
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
spinner.fail(`Download failed: ${error.message}`);
|
|
66
|
-
(0, display_1.displayError)('Make sure you have a stable internet connection and sufficient disk space.');
|
|
22
|
+
if (!result.torrentUrl && !result.magnet) {
|
|
23
|
+
(0, display_1.displayError)('No .torrent URL or magnet available for this result.');
|
|
67
24
|
process.exit(1);
|
|
68
25
|
}
|
|
26
|
+
const url = result.torrentUrl || result.magnet || '';
|
|
27
|
+
if (url.startsWith('magnet:')) {
|
|
28
|
+
try {
|
|
29
|
+
if (process.platform === 'win32') {
|
|
30
|
+
(0, child_process_1.execSync)(`echo ${url} | clip`, { stdio: 'ignore' });
|
|
31
|
+
}
|
|
32
|
+
else if (process.platform === 'darwin') {
|
|
33
|
+
(0, child_process_1.execSync)(`echo "${url}" | pbcopy`, { stdio: 'ignore' });
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
(0, child_process_1.execSync)(`echo "${url}" | xclip -selection clipboard`, { stdio: 'ignore' });
|
|
37
|
+
}
|
|
38
|
+
(0, display_1.displaySuccess)('Magnet link copied to clipboard!');
|
|
39
|
+
console.log(chalk_1.default.gray(url));
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
(0, display_1.displayInfo)('Magnet link:');
|
|
43
|
+
console.log(chalk_1.default.cyan(url));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
(0, display_1.displayInfo)('Opening: ' + url);
|
|
48
|
+
const cmd = process.platform === 'win32' ? `start "" "${url}"` :
|
|
49
|
+
process.platform === 'darwin' ? `open "${url}"` :
|
|
50
|
+
`xdg-open "${url}"`;
|
|
51
|
+
(0, child_process_1.exec)(cmd, (err) => {
|
|
52
|
+
if (err) {
|
|
53
|
+
try {
|
|
54
|
+
if (process.platform === 'win32') {
|
|
55
|
+
(0, child_process_1.execSync)(`echo ${url} | clip`, { stdio: 'ignore' });
|
|
56
|
+
}
|
|
57
|
+
else if (process.platform === 'darwin') {
|
|
58
|
+
(0, child_process_1.execSync)(`echo "${url}" | pbcopy`, { stdio: 'ignore' });
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
(0, child_process_1.execSync)(`echo "${url}" | xclip -selection clipboard`, { stdio: 'ignore' });
|
|
62
|
+
}
|
|
63
|
+
(0, display_1.displaySuccess)('URL copied to clipboard!');
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
(0, display_1.displayError)('Failed to open. Copy this URL manually:');
|
|
67
|
+
console.log(chalk_1.default.cyan(url));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
(0, display_1.displaySuccess)('Opened in browser');
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
69
75
|
}
|
|
70
76
|
//# sourceMappingURL=download.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/commands/download.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/commands/download.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { TorrentResult
|
|
1
|
+
import { TorrentResult } from '../types';
|
|
2
2
|
export declare function cacheResults(results: TorrentResult[]): void;
|
|
3
3
|
export declare function getCachedResults(): TorrentResult[];
|
|
4
|
-
export declare function downloadTorrent(result: TorrentResult, options?: DownloadOptions): Promise<void>;
|
|
5
|
-
export declare function downloadByNumber(number: number, savePath?: string): Promise<void>;
|
|
6
4
|
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/download/engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/download/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAuBzC,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,IAAI,CAG3D;AAED,wBAAgB,gBAAgB,IAAI,aAAa,EAAE,CAKlD"}
|