televault 0.1.0__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.
@@ -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,209 @@
1
+ # TeleVault
2
+
3
+ Unlimited cloud storage using Telegram MTProto. No local database — everything lives on Telegram.
4
+
5
+ ## Features
6
+
7
+ - **MTProto Direct** — No bot API limits, 2GB file support
8
+ - **Zero Local DB** — Metadata stored on Telegram itself
9
+ - **Client-Side Encryption** — AES-256-GCM before upload
10
+ - **Smart Chunking** — Large files split automatically
11
+ - **Parallel Processing** — Faster uploads/downloads
12
+ - **Folder Support** — Preserve directory structure
13
+ - **Resume Capability** - Continue interrupted transfers
14
+ - **TUI + CLI** - Beautiful terminal interface
15
+
16
+ ## Install
17
+
18
+ ```bash
19
+ pip install televault
20
+ ```
21
+
22
+ Or from source:
23
+
24
+ ```bash
25
+ git clone https://github.com/YahyaToubali/televault
26
+ cd televault
27
+ pip install -e .".
28
+ ```
29
+
30
+ ## Quick Start
31
+
32
+ ```bash
33
+ # First time: authenticate with Telegram
34
+ televault login
35
+
36
+ # Upload a file
37
+ televault push backup.tar.gz
38
+
39
+ # Upload a directory
40
+ televault push ~/Documents/ -r --no-encrypt
41
+
42
+ # List files
43
+ televault ls
44
+
45
+ # Download
46
+ televault pull backup.tar.gz
47
+
48
+ # Interactive TUI
49
+ televault
50
+ ```
51
+
52
+ ## How It Works
53
+
54
+ ```
55
+ Your File
56
+
57
+ [Compress] → zstd (optional, skips media)
58
+
59
+ [Encrypt] → AES-256-GCM with Scrypt key derivation
60
+
61
+ [Chunk] → Split into ≤2GB pieces
62
+
63
+ [Upload] → MTProto to your private channel
64
+
65
+ [Index] → Metadata stored as pinned message
66
+ ```
67
+
68
+ ### Channel Structure
69
+
70
+ ```
71
+ 📌 INDEX (pinned)
72
+ │ └── {"files": {"id1": msg_id, "id2": msg_id, ...}}
73
+
74
+ ├── 📄 Metadata Message (JSON)
75
+ │ └── {"name": "file.zip", "size": 5GB, "chunks": [...]}
76
+
77
+ └── 📦 Chunk Messages (reply to metadata)
78
+ └── file_id_001.chunk, file_id_002.chunk, ...
79
+ ```
80
+
81
+ ## Commands
82
+
83
+ | Command | Description |
84
+ |---------|-------------|
85
+ | `televault login` | Authenticate with Telegram |
86
+ | `televault logout` | Clear session |
87
+ | `televault push <file>` | Upload file (or directory with -r) |
88
+ | `televault pull <file>` | Download file |
89
+ | `televault ls` | List all files |
90
+ | `televault search <query>` | Search files by name |
91
+ | `televault rm <file>` | Delete file |
92
+ | `televault info <file>` | Show file details |
93
+ | `televault status` | Show vault status |
94
+ | `televault whoami` | Show current Telegram account |
95
+ | `televault` | Launch TUI |
96
+
97
+ ## Configuration
98
+
99
+ Config stored at `~/.config/televault/config.json`:
100
+
101
+ ```json
102
+ {
103
+ "channel_id": -1003652003243,
104
+ "chunk_size": 104857600,
105
+ "compression": true,
106
+ "encryption": true,
107
+ "parallel_uploads": 3,
108
+ "parallel_downloads": 5,
109
+ "max_retries": 3,
110
+ "retry_delay": 1.0
111
+ }
112
+ ```
113
+
114
+ ## Security
115
+
116
+ - **Encryption**: AES-256-GCM (authenticated encryption)
117
+ - **Key Derivation**: Scrypt (memory-hard, GPU-resistant)
118
+ - **Session**: Telegram MTProto session stored encrypted
119
+ - **Zero Knowledge**: Server never sees unencrypted data
120
+ - **MTProto**: Direct Telegram protocol (no bot API limits)
121
+
122
+ ## Prerequisites
123
+
124
+ - Telegram API credentials (get at [my.telegram.org](https://my.telegram.org))
125
+ - Telegram account
126
+ - Python 3.11+
127
+
128
+ ## Installation
129
+
130
+ ### From PyPI
131
+
132
+ ```bash
133
+ pip install televault
134
+ ```
135
+
136
+ ### From Source
137
+
138
+ ```bash
139
+ git clone https://github.com/YahyaToubali/televault
140
+ cd televault
141
+ pip install -e .".
142
+ ```
143
+
144
+ ## Setup
145
+
146
+ ```bash
147
+ # Authenticate with Telegram
148
+ televault login
149
+
150
+ # Set up storage channel
151
+ televault setup
152
+
153
+ # Upload your first file
154
+ televault push hello.txt
155
+ ```
156
+
157
+ ## Usage Examples
158
+
159
+ ### Upload a file
160
+ ```bash
161
+ televault push backup.tar.gz --password mysecret
162
+ ```
163
+
164
+ ### Upload a directory
165
+ ```bash
166
+ televault push ~/Documents/ -r --no-encrypt
167
+ ```
168
+
169
+ ### Download a file
170
+ ```bash
171
+ televault pull backup.tar.gz --password mysecret
172
+ ```
173
+
174
+ ### List files
175
+ ```bash
176
+ televault ls --sort=size
177
+ ```
178
+
179
+ ### Search files
180
+ ```bash
181
+ televault search "*.sql"
182
+ ```
183
+
184
+ ## TUI
185
+
186
+ Launch the interactive terminal interface:
187
+
188
+ ```bash
189
+ televault
190
+ ```
191
+
192
+ Controls:
193
+ - `r` = Refresh
194
+ - `u` = Upload
195
+ - `d` = Download selected
196
+ - `q` = Quit
197
+ - Arrow keys to navigate
198
+
199
+ ## License
200
+
201
+ MIT
202
+
203
+ ## Author
204
+
205
+ Yahya Toubali - [@yahyatoubali](https://github.com/YahyaToubali)
206
+
207
+ ---
208
+
209
+ Built with ❤️ using Python, Telethon, and Textual
File without changes
@@ -0,0 +1,68 @@
1
+ [project]
2
+ name = "televault"
3
+ version = "0.1.0"
4
+ description = "Unlimited cloud storage using Telegram MTProto. No local DB - everything on Telegram."
5
+ readme = "README.md"
6
+ requires-python = ">=3.11"
7
+ license = { text = "MIT" }
8
+ authors = [{ name = "Yahya Toubali", email = "contact@yahyatoubali.me" }]
9
+ keywords = ["telegram", "storage", "cloud", "mtproto", "backup"]
10
+ classifiers = [
11
+ "Development Status :: 3 - Alpha",
12
+ "Environment :: Console",
13
+ "Intended Audience :: End Users/Desktop",
14
+ "License :: OSI Approved :: MIT License",
15
+ "Operating System :: OS Independent",
16
+ "Programming Language :: Python :: 3.11",
17
+ "Programming Language :: Python :: 3.12",
18
+ "Topic :: System :: Archiving :: Backup",
19
+ ]
20
+
21
+ dependencies = [
22
+ "telethon>=1.36.0",
23
+ "cryptography>=42.0.0",
24
+ "zstandard>=0.22.0",
25
+ "blake3>=0.4.0",
26
+ "textual>=0.47.0",
27
+ "click>=8.1.0",
28
+ "rich>=13.7.0",
29
+ "aiofiles>=23.2.0",
30
+ ]
31
+
32
+ [project.optional-dependencies]
33
+ dev = [
34
+ "pytest>=8.0.0",
35
+ "pytest-asyncio>=0.23.0",
36
+ "ruff>=0.2.0",
37
+ "mypy>=1.8.0",
38
+ ]
39
+
40
+ [project.scripts]
41
+ televault = "televault.cli:main"
42
+ tv = "televault.cli:main"
43
+
44
+ [project.urls]
45
+ Homepage = "https://github.com/YahyaToubali/televault"
46
+ Repository = "https://github.com/YahyaToubali/televault"
47
+
48
+ [build-system]
49
+ requires = ["hatchling"]
50
+ build-backend = "hatchling.build"
51
+
52
+ [tool.hatch.build.targets.wheel]
53
+ packages = ["src/televault"]
54
+
55
+ [tool.ruff]
56
+ line-length = 100
57
+ target-version = "py311"
58
+
59
+ [tool.ruff.lint]
60
+ select = ["E", "F", "I", "N", "W", "UP", "B", "C4", "SIM"]
61
+
62
+ [tool.mypy]
63
+ python_version = "3.11"
64
+ strict = true
65
+
66
+ [tool.pytest.ini_options]
67
+ asyncio_mode = "auto"
68
+ testpaths = ["tests"]
@@ -0,0 +1,16 @@
1
+ """
2
+ TeleVault - Unlimited cloud storage using Telegram MTProto.
3
+
4
+ Features:
5
+ - MTProto Direct (no bot API limits)
6
+ - Zero Local DB (metadata on Telegram)
7
+ - Client-side Encryption (AES-256-GCM)
8
+ - Parallel Processing
9
+ - Folder Support
10
+ - TUI + CLI
11
+ """
12
+ __version__ = "1.0.0"
13
+ __author__ = "Yahya Toubali"
14
+ __email__ = "yahya@yahyatoubali.me"
15
+ __license__ = "MIT"
16
+ __url__ = "https://github.com/yahyatoubali/televault"