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_rat:.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' )