televault 0.1.0__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.
@@ -0,0 +1,242 @@
1
+ Metadata-Version: 2.4
2
+ Name: televault
3
+ Version: 0.1.0
4
+ Summary: Unlimited cloud storage using Telegram MTProto. No local DB - everything on Telegram.
5
+ Project-URL: Homepage, https://github.com/YahyaToubali/televault
6
+ Project-URL: Repository, https://github.com/YahyaToubali/televault
7
+ Author-email: Yahya Toubali <contact@yahyatoubali.me>
8
+ License: MIT
9
+ Keywords: backup,cloud,mtproto,storage,telegram
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Environment :: Console
12
+ Classifier: Intended Audience :: End Users/Desktop
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Topic :: System :: Archiving :: Backup
18
+ Requires-Python: >=3.11
19
+ Requires-Dist: aiofiles>=23.2.0
20
+ Requires-Dist: blake3>=0.4.0
21
+ Requires-Dist: click>=8.1.0
22
+ Requires-Dist: cryptography>=42.0.0
23
+ Requires-Dist: rich>=13.7.0
24
+ Requires-Dist: telethon>=1.36.0
25
+ Requires-Dist: textual>=0.47.0
26
+ Requires-Dist: zstandard>=0.22.0
27
+ Provides-Extra: dev
28
+ Requires-Dist: mypy>=1.8.0; extra == 'dev'
29
+ Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
30
+ Requires-Dist: pytest>=8.0.0; extra == 'dev'
31
+ Requires-Dist: ruff>=0.2.0; extra == 'dev'
32
+ Description-Content-Type: text/markdown
33
+
34
+ # TeleVault
35
+
36
+ Unlimited cloud storage using Telegram MTProto. No local database — everything lives on Telegram.
37
+
38
+ ## Features
39
+
40
+ - **MTProto Direct** — No bot API limits, 2GB file support
41
+ - **Zero Local DB** — Metadata stored on Telegram itself
42
+ - **Client-Side Encryption** — AES-256-GCM before upload
43
+ - **Smart Chunking** — Large files split automatically
44
+ - **Parallel Processing** — Faster uploads/downloads
45
+ - **Folder Support** — Preserve directory structure
46
+ - **Resume Capability** - Continue interrupted transfers
47
+ - **TUI + CLI** - Beautiful terminal interface
48
+
49
+ ## Install
50
+
51
+ ```bash
52
+ pip install televault
53
+ ```
54
+
55
+ Or from source:
56
+
57
+ ```bash
58
+ git clone https://github.com/YahyaToubali/televault
59
+ cd televault
60
+ pip install -e .".
61
+ ```
62
+
63
+ ## Quick Start
64
+
65
+ ```bash
66
+ # First time: authenticate with Telegram
67
+ televault login
68
+
69
+ # Upload a file
70
+ televault push backup.tar.gz
71
+
72
+ # Upload a directory
73
+ televault push ~/Documents/ -r --no-encrypt
74
+
75
+ # List files
76
+ televault ls
77
+
78
+ # Download
79
+ televault pull backup.tar.gz
80
+
81
+ # Interactive TUI
82
+ televault
83
+ ```
84
+
85
+ ## How It Works
86
+
87
+ ```
88
+ Your File
89
+
90
+ [Compress] → zstd (optional, skips media)
91
+
92
+ [Encrypt] → AES-256-GCM with Scrypt key derivation
93
+
94
+ [Chunk] → Split into ≤2GB pieces
95
+
96
+ [Upload] → MTProto to your private channel
97
+
98
+ [Index] → Metadata stored as pinned message
99
+ ```
100
+
101
+ ### Channel Structure
102
+
103
+ ```
104
+ 📌 INDEX (pinned)
105
+ │ └── {"files": {"id1": msg_id, "id2": msg_id, ...}}
106
+
107
+ ├── 📄 Metadata Message (JSON)
108
+ │ └── {"name": "file.zip", "size": 5GB, "chunks": [...]}
109
+
110
+ └── 📦 Chunk Messages (reply to metadata)
111
+ └── file_id_001.chunk, file_id_002.chunk, ...
112
+ ```
113
+
114
+ ## Commands
115
+
116
+ | Command | Description |
117
+ |---------|-------------|
118
+ | `televault login` | Authenticate with Telegram |
119
+ | `televault logout` | Clear session |
120
+ | `televault push <file>` | Upload file (or directory with -r) |
121
+ | `televault pull <file>` | Download file |
122
+ | `televault ls` | List all files |
123
+ | `televault search <query>` | Search files by name |
124
+ | `televault rm <file>` | Delete file |
125
+ | `televault info <file>` | Show file details |
126
+ | `televault status` | Show vault status |
127
+ | `televault whoami` | Show current Telegram account |
128
+ | `televault` | Launch TUI |
129
+
130
+ ## Configuration
131
+
132
+ Config stored at `~/.config/televault/config.json`:
133
+
134
+ ```json
135
+ {
136
+ "channel_id": -1003652003243,
137
+ "chunk_size": 104857600,
138
+ "compression": true,
139
+ "encryption": true,
140
+ "parallel_uploads": 3,
141
+ "parallel_downloads": 5,
142
+ "max_retries": 3,
143
+ "retry_delay": 1.0
144
+ }
145
+ ```
146
+
147
+ ## Security
148
+
149
+ - **Encryption**: AES-256-GCM (authenticated encryption)
150
+ - **Key Derivation**: Scrypt (memory-hard, GPU-resistant)
151
+ - **Session**: Telegram MTProto session stored encrypted
152
+ - **Zero Knowledge**: Server never sees unencrypted data
153
+ - **MTProto**: Direct Telegram protocol (no bot API limits)
154
+
155
+ ## Prerequisites
156
+
157
+ - Telegram API credentials (get at [my.telegram.org](https://my.telegram.org))
158
+ - Telegram account
159
+ - Python 3.11+
160
+
161
+ ## Installation
162
+
163
+ ### From PyPI
164
+
165
+ ```bash
166
+ pip install televault
167
+ ```
168
+
169
+ ### From Source
170
+
171
+ ```bash
172
+ git clone https://github.com/YahyaToubali/televault
173
+ cd televault
174
+ pip install -e .".
175
+ ```
176
+
177
+ ## Setup
178
+
179
+ ```bash
180
+ # Authenticate with Telegram
181
+ televault login
182
+
183
+ # Set up storage channel
184
+ televault setup
185
+
186
+ # Upload your first file
187
+ televault push hello.txt
188
+ ```
189
+
190
+ ## Usage Examples
191
+
192
+ ### Upload a file
193
+ ```bash
194
+ televault push backup.tar.gz --password mysecret
195
+ ```
196
+
197
+ ### Upload a directory
198
+ ```bash
199
+ televault push ~/Documents/ -r --no-encrypt
200
+ ```
201
+
202
+ ### Download a file
203
+ ```bash
204
+ televault pull backup.tar.gz --password mysecret
205
+ ```
206
+
207
+ ### List files
208
+ ```bash
209
+ televault ls --sort=size
210
+ ```
211
+
212
+ ### Search files
213
+ ```bash
214
+ televault search "*.sql"
215
+ ```
216
+
217
+ ## TUI
218
+
219
+ Launch the interactive terminal interface:
220
+
221
+ ```bash
222
+ televault
223
+ ```
224
+
225
+ Controls:
226
+ - `r` = Refresh
227
+ - `u` = Upload
228
+ - `d` = Download selected
229
+ - `q` = Quit
230
+ - Arrow keys to navigate
231
+
232
+ ## License
233
+
234
+ MIT
235
+
236
+ ## Author
237
+
238
+ Yahya Toubali - [@yahyatoubali](https://github.com/YahyaToubali)
239
+
240
+ ---
241
+
242
+ Built with ❤️ using Python, Telethon, and Textual
@@ -0,0 +1,13 @@
1
+ televault/__init__.py,sha256=rMVzSux5x0gb1u6Vede5MgTgNu-nBOgOtIat5Q_gGRU,405
2
+ televault/chunker.py,sha256=Hqh8dptBRlO8DdwEOgS0mXF0NJhZMYG9alF6oCrHkg4,5387
3
+ televault/cli.py,sha256=jBldMotU27yiP21GlkGxUUXjib8JbL0ixPS3rsU3-Vw,15815
4
+ televault/compress.py,sha256=WNuR7in1sWIK7vtJ3fciJr7YLQlymcRd_hySzl_28aI,4578
5
+ televault/config.py,sha256=-w-VQ7tyJ1LB6RHjmgvllnaWh4anORE1ukSRA9gVIv4,2157
6
+ televault/core.py,sha256=siDoxvN8ftnXhmbLGpO3J94pBhtXSqUiCD8dDddWCQ8,16723
7
+ televault/crypto.py,sha256=cYygPj4X_Tq3jTSDJM1KzVyL69KW8r18pUvyq7JInL0,5267
8
+ televault/models.py,sha256=NduoXIyY-n7nqQ4VLorxC9IuoNVPWZhoDuccJM_epxE,4717
9
+ televault/telegram.py,sha256=ShAGx8xBK2tcGGl9-eXuerYlgPfE8JFSecGJLQHoVLk,12023
10
+ televault-0.1.0.dist-info/METADATA,sha256=Djst_CPh0rbCzkUASu3D47SbKT0uFignCLATaIZA1D8,5299
11
+ televault-0.1.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
12
+ televault-0.1.0.dist-info/entry_points.txt,sha256=9bmq5Yu2HkyF9XVs-O4ydox-Skug2xI-aWeN9o52k8I,73
13
+ televault-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.28.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ televault = televault.cli:main
3
+ tv = televault.cli:main