torrent-downloader-react 1.1.3__py3-none-any.whl → 1.1.5__py3-none-any.whl
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.
- torrent_downloader/server.py +18 -2
- torrent_downloader/static/assets/index-A4bJ2BBw.js +49 -0
- torrent_downloader/static/assets/{index-DpeprjRI.css → index-BKZnulWN.css} +1 -1
- torrent_downloader/static/index.html +2 -2
- torrent_downloader_react-1.1.5.dist-info/METADATA +120 -0
- torrent_downloader_react-1.1.5.dist-info/RECORD +11 -0
- torrent_downloader/static/assets/index-BAUKkMK0.js +0 -49
- torrent_downloader_react-1.1.3.dist-info/METADATA +0 -170
- torrent_downloader_react-1.1.3.dist-info/RECORD +0 -11
- {torrent_downloader_react-1.1.3.dist-info → torrent_downloader_react-1.1.5.dist-info}/WHEEL +0 -0
- {torrent_downloader_react-1.1.3.dist-info → torrent_downloader_react-1.1.5.dist-info}/entry_points.txt +0 -0
- {torrent_downloader_react-1.1.3.dist-info → torrent_downloader_react-1.1.5.dist-info}/top_level.txt +0 -0
@@ -1 +1 @@
|
|
1
|
-
:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#213547;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box;margin:0;padding:0}body{margin:0;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: dark){:root{color:#ffffffde;background-color:#242424}.torrent-item{background-color:#2a2a2a!important;border-color:#404040!important}.torrent-info h3{color:#e2e8f0!important}.torrent-info p{color:#94a3b8!important}.progress-bar{background-color:#404040!important}input{background-color:#2a2a2a;color:#fff;border-color:#404040!important}input::placeholder{color:#94a3b8}}:root{--text-primary: #1e293b;--text-secondary: #64748b;--border-color: #e2e8f0;--background-primary: #ffffff;--background-secondary: #f8fafc}@media (prefers-color-scheme: dark){:root{--text-primary: #e2e8f0;--text-secondary: #94a3b8;--border-color: #334155;--background-primary: #0f172a;--background-secondary: #1e293b}}#root{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}.container{max-width:1200px;margin:0 auto;padding:2rem}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}header h1{margin:0;font-size:2rem;color:var(--text-primary)}.error-message{background-color:#fee2e2;border:1px solid #fecaca;color:#dc2626;padding:1rem;border-radius:4px;margin-bottom:1rem}.input-section{display:flex;gap:1rem;margin-bottom:2rem}.input-section input{flex:1;padding:.75rem;border:1px solid #ccc;border-radius:4px;font-size:1rem}button{padding:.75rem 1.5rem;background-color:#2563eb;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:1rem;transition:background-color .2s}button:hover:not(:disabled){background-color:#1d4ed8}button:disabled{background-color:#93c5fd;cursor:not-allowed}.remove-button{background-color:#dc2626;padding:.5rem 1rem;font-size:.875rem}.remove-button:hover:not(:disabled){background-color:#b91c1c}.torrents-list{display:flex;flex-direction:column;gap:1rem}.torrent-item{background-color:var(--background-secondary);border:1px solid var(--border-color);border-radius:8px;padding:1rem}.torrent-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.torrent-info{margin-bottom:1rem}.torrent-info h3{margin:0 0 .5rem;color:var(--text-primary)}.torrent-info p{margin:.25rem 0;color:var(--text-secondary)}.progress-bar{width:100%;height:8px;background-color:#e2e8f0;border-radius:4px;overflow:hidden}.progress{height:100%;background-color:#2563eb;transition:width .3s ease}@media (prefers-color-scheme: dark){.error-message{background-color:#450a0a;border-color:#7f1d1d;color:#fecaca}}.header-buttons{display:flex;gap:1rem}.torrent-actions{display:flex;gap:.5rem}
|
1
|
+
:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#213547;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box;margin:0;padding:0}body{margin:0;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: dark){:root{color:#ffffffde;background-color:#242424}.torrent-item{background-color:#2a2a2a!important;border-color:#404040!important}.torrent-info h3{color:#e2e8f0!important}.torrent-info p{color:#94a3b8!important}.progress-bar{background-color:#404040!important}input{background-color:#2a2a2a;color:#fff;border-color:#404040!important}input::placeholder{color:#94a3b8}}:root{--text-primary: #1e293b;--text-secondary: #64748b;--border-color: #e2e8f0;--background-primary: #ffffff;--background-secondary: #f8fafc}@media (prefers-color-scheme: dark){:root{--text-primary: #e2e8f0;--text-secondary: #94a3b8;--border-color: #334155;--background-primary: #0f172a;--background-secondary: #1e293b}}#root{max-width:1280px;margin:0 auto;padding:2rem;text-align:center}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}.container{max-width:1200px;margin:0 auto;padding:2rem}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}header h1{margin:0;font-size:2rem;color:var(--text-primary)}.error-message{background-color:#fee2e2;border:1px solid #fecaca;color:#dc2626;padding:1rem;border-radius:4px;margin-bottom:1rem}.input-section{display:flex;gap:1rem;margin-bottom:2rem}.input-section input{flex:1;padding:.75rem;border:1px solid #ccc;border-radius:4px;font-size:1rem}button{padding:.75rem 1.5rem;background-color:#2563eb;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:1rem;transition:background-color .2s}button:hover:not(:disabled){background-color:#1d4ed8}button:disabled{background-color:#93c5fd;cursor:not-allowed}.remove-button{background-color:#dc2626;padding:.5rem 1rem;font-size:.875rem}.remove-button:hover:not(:disabled){background-color:#b91c1c}.torrents-list{display:flex;flex-direction:column;gap:1rem}.torrent-item{background-color:var(--background-secondary);border:1px solid var(--border-color);border-radius:8px;padding:1rem}.torrent-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.torrent-info{margin-bottom:1rem}.torrent-info h3{margin:0 0 .5rem;color:var(--text-primary)}.torrent-info p{margin:.25rem 0;color:var(--text-secondary)}.progress-bar{width:100%;height:8px;background-color:#e2e8f0;border-radius:4px;overflow:hidden}.progress{height:100%;background-color:#2563eb;transition:width .3s ease}@media (prefers-color-scheme: dark){.error-message{background-color:#450a0a;border-color:#7f1d1d;color:#fecaca}}.header-buttons{display:flex;gap:1rem}.torrent-actions{display:flex;gap:.5rem}.torrent-status-message{margin:1rem 0;padding:1rem;border-radius:8px;display:flex;align-items:center;justify-content:center;transition:all .3s ease;animation:fadeIn .3s ease-in}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.torrent-status-message.loading{background-color:#2563eb20;border:1px solid #2563eb;color:#2563eb}.torrent-status-message.success{background-color:#16a34a20;border:1px solid #16a34a;color:#16a34a}.torrent-status-message.error{background-color:#dc262620;border:1px solid #dc2626;color:#dc2626}.status-content{display:flex;align-items:center;gap:1rem}.loading-spinner{width:20px;height:20px;border:3px solid #2563eb40;border-top:3px solid #2563eb;border-radius:50%;animation:spin 1s linear infinite}.status-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-weight:700}.success-icon{background-color:#16a34a;color:#fff}.error-icon{background-color:#dc2626;color:#fff}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-color-scheme: dark){.torrent-status-message.loading{background-color:#1e3a8a40;border-color:#3b82f6;color:#93c5fd}.torrent-status-message.success{background-color:#14532d40;border-color:#22c55e;color:#86efac}.torrent-status-message.error{background-color:#7f1d1d40;border-color:#ef4444;color:#fca5a5}.loading-spinner{border-color:#93c5fd40;border-top-color:#3b82f6}}
|
@@ -5,8 +5,8 @@
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
7
7
|
<title>Vite + React + TS</title>
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
8
|
+
<script type="module" crossorigin src="/assets/index-A4bJ2BBw.js"></script>
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BKZnulWN.css">
|
10
10
|
</head>
|
11
11
|
<body>
|
12
12
|
<div id="root"></div>
|
@@ -0,0 +1,120 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: torrent-downloader-react
|
3
|
+
Version: 1.1.5
|
4
|
+
Summary: A modern, user-friendly torrent downloader application
|
5
|
+
Home-page: https://github.com/stevenbtc/torrent-downloader
|
6
|
+
Author: Steven Yan
|
7
|
+
Author-email: yulong.yan@uqconnect.edu.au
|
8
|
+
Project-URL: Bug Tracker, https://github.com/stevenbtc/torrent-downloader/issues
|
9
|
+
Project-URL: Documentation, https://github.com/stevenbtc/torrent-downloader#readme
|
10
|
+
Project-URL: Source Code, https://github.com/stevenbtc/torrent-downloader
|
11
|
+
Keywords: torrent,downloader,p2p,bittorrent,libtorrent
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
13
|
+
Classifier: Environment :: Web Environment
|
14
|
+
Classifier: Framework :: FastAPI
|
15
|
+
Classifier: Intended Audience :: End Users/Desktop
|
16
|
+
Classifier: License :: OSI Approved :: MIT License
|
17
|
+
Classifier: Operating System :: OS Independent
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
19
|
+
Classifier: Programming Language :: Python :: 3.8
|
20
|
+
Classifier: Programming Language :: Python :: 3.9
|
21
|
+
Classifier: Programming Language :: Python :: 3.10
|
22
|
+
Classifier: Programming Language :: Python :: 3.11
|
23
|
+
Classifier: Topic :: Internet :: WWW/HTTP
|
24
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
|
25
|
+
Requires-Python: >=3.8
|
26
|
+
Description-Content-Type: text/markdown
|
27
|
+
Requires-Dist: fastapi>=0.109.0
|
28
|
+
Requires-Dist: uvicorn>=0.27.0
|
29
|
+
Requires-Dist: pydantic>=2.0.0
|
30
|
+
Requires-Dist: libtorrent>=2.0.0
|
31
|
+
Requires-Dist: pytest>=8.0.0
|
32
|
+
Requires-Dist: httpx>=0.27.0
|
33
|
+
|
34
|
+
# Torrent Downloader Web App
|
35
|
+
|
36
|
+
A modern, full-featured torrent downloader with a clean React interface and Python backend.
|
37
|
+
|
38
|
+
## Quick Start
|
39
|
+
|
40
|
+
```bash
|
41
|
+
pip install torrent-downloader-react
|
42
|
+
torrent-downloader-react # Opens in browser at http://127.0.0.1:8000
|
43
|
+
```
|
44
|
+
|
45
|
+
## System Requirements
|
46
|
+
|
47
|
+
- Python 3.8+
|
48
|
+
- Platform-specific dependencies:
|
49
|
+
- **Windows**: Microsoft Visual C++ Redistributable
|
50
|
+
- **macOS**: `brew install libtorrent-rasterbar`
|
51
|
+
- **Ubuntu/Debian**: `sudo apt-get install python3-libtorrent`
|
52
|
+
- **Fedora**: `sudo dnf install rb_libtorrent-python3`
|
53
|
+
|
54
|
+
## Features
|
55
|
+
|
56
|
+
- Modern, responsive UI with dark mode
|
57
|
+
- Real-time download progress monitoring
|
58
|
+
- Download speed and ETA tracking
|
59
|
+
- Easy magnet link handling
|
60
|
+
- Cross-platform support
|
61
|
+
- Concurrent downloads
|
62
|
+
|
63
|
+
## Usage
|
64
|
+
|
65
|
+
1. Start the application:
|
66
|
+
```bash
|
67
|
+
torrent-downloader-react
|
68
|
+
```
|
69
|
+
2. Open your browser at http://127.0.0.1:8000
|
70
|
+
3. Paste a magnet link and click "Add Torrent"
|
71
|
+
4. Monitor progress in the downloads list
|
72
|
+
5. Access completed downloads in your downloads folder
|
73
|
+
|
74
|
+
## Alternative Installation: Using Conda
|
75
|
+
|
76
|
+
```bash
|
77
|
+
conda create -n torrent-env python=3.11
|
78
|
+
conda activate torrent-env
|
79
|
+
conda install -c conda-forge libtorrent
|
80
|
+
pip install torrent-downloader-react
|
81
|
+
```
|
82
|
+
|
83
|
+
## Development
|
84
|
+
|
85
|
+
### Frontend (React)
|
86
|
+
```bash
|
87
|
+
# Install dependencies
|
88
|
+
cd torrent-downloader-react
|
89
|
+
npm install
|
90
|
+
|
91
|
+
# Start development server
|
92
|
+
npm run dev
|
93
|
+
```
|
94
|
+
|
95
|
+
### Backend (Python)
|
96
|
+
```bash
|
97
|
+
# Install dependencies
|
98
|
+
cd torrent-downloader-react/backend
|
99
|
+
pip install -r requirements.txt
|
100
|
+
|
101
|
+
# Start development server
|
102
|
+
python -m torrent_downloader.server
|
103
|
+
```
|
104
|
+
|
105
|
+
## API Documentation
|
106
|
+
|
107
|
+
The backend provides a RESTful API:
|
108
|
+
|
109
|
+
- `GET /api/torrents` - List all torrents
|
110
|
+
- `POST /api/torrents` - Add new torrent
|
111
|
+
- `DELETE /api/torrents/{id}` - Remove torrent
|
112
|
+
- `GET /api/torrents/{id}/status` - Get torrent status
|
113
|
+
|
114
|
+
## License
|
115
|
+
|
116
|
+
MIT License - See LICENSE file for details.
|
117
|
+
|
118
|
+
## Legal Notice
|
119
|
+
|
120
|
+
This software is intended for downloading legal torrents only. Users are responsible for compliance with applicable laws.
|
@@ -0,0 +1,11 @@
|
|
1
|
+
torrent_downloader/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
+
torrent_downloader/server.py,sha256=2eCwzDCkgF2DZMD6LEiDXLBFvbn1271yAIAt6GBQmS0,7358
|
3
|
+
torrent_downloader/static/index.html,sha256=5VSCu1MLXP5xdM1HN7nnmRzVQMDsH3BWegCgErBDGMg,464
|
4
|
+
torrent_downloader/static/vite.svg,sha256=SnSK_UQ5GLsWWRyDTEAdrjPoeGGrXbrQgRw6O0qSFPs,1497
|
5
|
+
torrent_downloader/static/assets/index-A4bJ2BBw.js,sha256=Z0EoN8m8pl1ZygGNqYku5i6QF4BJKXYCBSk-0ltnTwU,190398
|
6
|
+
torrent_downloader/static/assets/index-BKZnulWN.css,sha256=z1S8Zpwm3Jy_RlURoKsyoJs8cwX1kBbfCU7z5meLe3w,5039
|
7
|
+
torrent_downloader_react-1.1.5.dist-info/METADATA,sha256=3GtC52nlNNF9JV7Yz0MJG8It3vhGqKmnO2WQqFXk54Y,3430
|
8
|
+
torrent_downloader_react-1.1.5.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
9
|
+
torrent_downloader_react-1.1.5.dist-info/entry_points.txt,sha256=zkljgTNEM0p9I4xw4FN0N5PVrNmB6KVLUWjBO32n0do,76
|
10
|
+
torrent_downloader_react-1.1.5.dist-info/top_level.txt,sha256=THWnh7qxxVmoQ89QVJ8v6mmSzEQdFdXnryplXTQXuCA,19
|
11
|
+
torrent_downloader_react-1.1.5.dist-info/RECORD,,
|