mx / app.py
Ethscriptions's picture
Update app.py
0329f70
raw
history blame
1.56 kB
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'
)