Spaces:
Sleeping
Sleeping
import libtorrent as lt | |
import time | |
import streamlit as st | |
import os | |
import shutil | |
st.title('磁力链接 BT 下载器') | |
magnet_link = st.text_input('请输入磁力链接:') | |
if magnet_link: | |
# 创建一个会话并配置设置 | |
ses = lt.session() | |
settings = { | |
'connections_limit': 500, # 增加连接数限制 | |
'download_rate_limit': 0, # 不限制下载速度 | |
'upload_rate_limit': 0, # 不限制上传速度 | |
# ... 其他设置 | |
} | |
ses.apply_settings(settings) | |
h = lt.add_magnet_uri(ses, magnet_link, {'save_path': './downloads'}) | |
st.write('开始下载...') | |
while not h.is_seed(): | |
s = h.status() | |
state_str = [ | |
"queued", | |
"checking", | |
"downloading metadata", | |
"downloading", | |
"finished", | |
"seeding", | |
"allocating", | |
"checking fastresume", | |
] | |
st.write( | |
f"进度: {s.progress * 100:.2f}%,速度: {s.download_rate / 1000000:.2f} KB/s,状态:{state_str[s.state]}" | |
) | |
time.sleep(1) | |
st.write('下载完成') | |
# 获取下载的文件路径 | |
save_path = './downloads' | |
# 压缩文件夹为 zip 文件 | |
shutil.make_archive('downloads', 'zip', save_path) | |
# 提供一个下载按钮给用户下载 zip 文件 | |
with open('downloads.zip', 'rb') as file: | |
st.download_button( | |
label='下载文件', | |
data=file, | |
file_name='downloads.zip', | |
mime='application/zip' | |
) | |