proof of concept

This commit is contained in:
2025-11-08 23:17:55 +02:00
parent 3b3985df32
commit 1a83112db8
12 changed files with 74 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
venv/

0
deps/__init__.py vendored Normal file
View File

Binary file not shown.

View File

@@ -0,0 +1 @@
pip

View File

@@ -0,0 +1,16 @@
Metadata-Version: 2.2
Name: libtorrent
Version: 2.0.11
Summary: Python bindings for libtorrent-rasterbar
Home-page: http://libtorrent.org
Author: Arvid Norberg
Author-email: arvid@libtorrent.org
License: BSD
Dynamic: author
Dynamic: author-email
Dynamic: description
Dynamic: home-page
Dynamic: license
Dynamic: summary
Python bindings for libtorrent-rasterbar

View File

@@ -0,0 +1,7 @@
libtorrent-2.0.11.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
libtorrent-2.0.11.dist-info/METADATA,sha256=sPtq23Wl5bUYxfIuAo34PrNgCXVR7j5icBJXapZiVX4,362
libtorrent-2.0.11.dist-info/RECORD,,
libtorrent-2.0.11.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
libtorrent-2.0.11.dist-info/WHEEL,sha256=siqMuoWpRueIZ87ijidBxnOwHeSOOcxNwYCs-pC4Yv0,151
libtorrent-2.0.11.dist-info/top_level.txt,sha256=Va3S8jfMOK-hJMDdMSrC7MrqlelkXSU30H5E4QppA3c,11
libtorrent/__init__.cpython-312-x86_64-linux-gnu.so,sha256=A37ASE55Ar1brGnb2Ptb85-TcV7E-vK3T3cE3zsDJxU,26320472

View File

View File

@@ -0,0 +1,6 @@
Wheel-Version: 1.0
Generator: setuptools (75.8.0)
Root-Is-Purelib: false
Tag: cp312-cp312-manylinux_2_17_x86_64
Tag: cp312-cp312-manylinux2014_x86_64

View File

@@ -0,0 +1 @@
libtorrent

Binary file not shown.

0
deps/requirements.txt vendored Normal file
View File

42
mvm.py Normal file
View File

@@ -0,0 +1,42 @@
import libtorrent as lt
import time
import os
ses = lt.session()
ses.listen_on(6881, 6891)
magnet_uri = "magnet:?xt=urn:btih:19223321411e27f51213a2407842d773f0f8ac4e"
params = {'save_path': './downloads/'}
handle = lt.add_magnet_uri(ses, magnet_uri, params)
print("Fetching metadata (torrent info)...")
while not handle.has_metadata():
time.sleep(1)
print(".", end="", flush=True)
print("\nMetadata received!")
torrent_info = handle.get_torrent_info()
print("\nFiles in torrent:")
for idx, f in enumerate(torrent_info.files()):
print(f"[{idx}] {f.path} ({f.size / 1_000_000:.2f} MB)")
selected_indexes = [0, 2]
file_priorities = [0] * torrent_info.num_files()
for i in selected_indexes:
file_priorities[i] = 1
handle.prioritize_files(file_priorities)
print("\nDownloading selected files only...")
while handle.status().state != lt.torrent_status.seeding:
s = handle.status()
print(f"\rProgress: {s.progress * 100:.2f}% | Down: {s.download_rate / 1000:.1f} kB/s | Peers: {s.num_peers}", end=" ")
time.sleep(1)
print("\nDownload complete!")