lansonsam
(谁说我爱你呢)
1
兄弟们,我们都知道磁力要本地下载,才能观看,但是如果速度限制了发展,导致我们很久才能看到或者想要的东西,而且磁力的管理页面,基本只有一个人使用权。
但是
,如果我写一个前端+后端+qb的api实现一个在线磁力解析平台,用户只要上传磁力,然后交给服务器,服务器会实时返回进度条,然后等下载好了,用户就可以直接看或者下载。
但是会有几个问题
1.如何解决本地硬盘不足-----------云盘+映射本地硬盘
2.如何解决上下带宽的问题----------用大厂
3.如何鉴权------------------------------用linux do的oa权限,哈哈
我至少提出一个想法,至于大佬,可以试试,如果我有空的话,我也尝试写一写,(挖坑)
39 Likes
PikPak好用,至于网盘,冷门资源网盘也是下载不动的
3 Likes
lansonsam
(谁说我爱你呢)
5
qBittorrent 配置
QB_URL = “http://localhost:8080”
QB_USERNAME = “admin”
QB_PASSWORD = “adminpass”
登录到 qBittorrent
def qb_login():
session = requests.Session()
session.post(f"{QB_URL}/api/v2/auth/login", data={“username”: QB_USERNAME, “password”: QB_PASSWORD})
return session
上传磁力链接
class MagnetLink(BaseModel):
magnet: str
@app.post(“/upload”)
def upload_magnet(magnet_link: MagnetLink, user: str = Depends(lambda: “user1”)):
session = qb_login()
response = session.post(f"{QB_URL}/api/v2/torrents/add", data={“urls”: magnet_link.magnet})
if response.ok:
current_downloads[user] = magnet_link.magnet
return {“message”: “Download started”}
else:
return {“error”: “Failed to start download”}
查询任务状态
@app.get(“/status”)
def get_status(user: str = Depends(lambda: “user1”)):
session = qb_login()
response = session.get(f"{QB_URL}/api/v2/torrents/info")
downloads = response.json()
user_tasks = [task for task in downloads if task[“hash”] in current_downloads.get(user, “”)]
return {“tasks”: user_tasks}
WebSocket 实时推送进度
@app.websocket(“/ws”)
async def websocket_endpoint(websocket: WebSocket, user: str = “user1”):
await websocket.accept()
session = qb_login()
while True:
response = session.get(f"{QB_URL}/api/v2/torrents/info")
downloads = response.json()
user_tasks = [task for task in downloads if task[“hash”] in current_downloads.get(user, “”)]
await websocket.send_json({“tasks”: user_tasks})
6 Likes
lansonsam
(谁说我爱你呢)
7
其实也不算是在线磁力了吧,我记忆中是将磁力分成片,然后看多少下载多少,但是我这个可能是中转那种吧,可能吧
NBXX
(NBXX)
9
5 Likes
最近想折腾一下工控机,我想着用docker跑跑bt/pt,反正就挂着,自己也没需求,再就内网穿透一下?能满足要求不(纯小白想法)
bracy
15
所谓的离线下载功能嘛,不少网盘都有,有服务器的话可以拿alist搭现成的