fix #579 修改转种使用的模块
This commit is contained in:
parent
6fb0c92183
commit
9a60121914
@ -7,7 +7,7 @@ from typing import Any, List, Dict, Tuple, Optional
|
|||||||
import pytz
|
import pytz
|
||||||
from apscheduler.schedulers.background import BackgroundScheduler
|
from apscheduler.schedulers.background import BackgroundScheduler
|
||||||
from apscheduler.triggers.cron import CronTrigger
|
from apscheduler.triggers.cron import CronTrigger
|
||||||
from torrentool.torrent import Torrent
|
from bencode import bdecode, bencode
|
||||||
|
|
||||||
from app.core.config import settings
|
from app.core.config import settings
|
||||||
from app.helper.torrent import TorrentHelper
|
from app.helper.torrent import TorrentHelper
|
||||||
@ -582,26 +582,50 @@ class TorrentTransfer(_PluginBase):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
# 如果源下载器是QB检查是否有Tracker,没有的话额外获取
|
# 如果源下载器是QB检查是否有Tracker,没有的话额外获取
|
||||||
trackers = None
|
|
||||||
if downloader == "qbittorrent":
|
if downloader == "qbittorrent":
|
||||||
|
# 读取种子内容、解析种子文件
|
||||||
|
content = torrent_file.read_bytes()
|
||||||
|
if not content:
|
||||||
|
logger.warn(f"读取种子文件失败:{torrent_file}")
|
||||||
|
fail += 1
|
||||||
|
continue
|
||||||
# 读取trackers
|
# 读取trackers
|
||||||
try:
|
try:
|
||||||
torrent_main = Torrent.from_file(torrent_file)
|
torrent_main = bdecode(content)
|
||||||
main_announce = torrent_main.announce_urls
|
main_announce = torrent_main.get('announce')
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
logger.error(f"解析种子文件 {torrent_file} 失败:{err}")
|
logger.warn(f"解析种子文件 {torrent_file} 失败:{err}")
|
||||||
# 失败计数
|
|
||||||
fail += 1
|
fail += 1
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if not main_announce:
|
if not main_announce:
|
||||||
logger.info(f"{torrent_item.get('hash')} 未发现tracker信息,尝试补充tracker ...")
|
logger.info(f"{torrent_item.get('hash')} 未发现tracker信息,尝试补充tracker信息...")
|
||||||
# 从源下载任务信息中获取Tracker
|
# 读取fastresume文件
|
||||||
torrent = torrent_item.get('torrent')
|
fastresume_file = Path(self._fromtorrentpath) / f"{torrent_item.get('hash')}.fastresume"
|
||||||
# 源trackers
|
if not fastresume_file.exists():
|
||||||
trackers = [tracker.get("url") for tracker in torrent.trackers
|
logger.warn(f"fastresume文件不存在:{fastresume_file}")
|
||||||
if str(tracker.get("url")).startswith('http')]
|
fail += 1
|
||||||
logger.info(f"获取到源tracker:{trackers}")
|
continue
|
||||||
|
# 尝试补充trackers
|
||||||
|
try:
|
||||||
|
# 解析fastresume文件
|
||||||
|
fastresume = fastresume_file.read_bytes()
|
||||||
|
torrent_fastresume = bdecode(fastresume)
|
||||||
|
# 读取trackers
|
||||||
|
fastresume_trackers = torrent_fastresume.get('trackers')
|
||||||
|
if isinstance(fastresume_trackers, list) \
|
||||||
|
and len(fastresume_trackers) > 0 \
|
||||||
|
and fastresume_trackers[0]:
|
||||||
|
# 重新赋值
|
||||||
|
torrent_main['announce'] = fastresume_trackers[0][0]
|
||||||
|
# 替换种子文件路径
|
||||||
|
torrent_file = settings.TEMP_PATH / f"{torrent_item.get('hash')}.torrent"
|
||||||
|
# 编码并保存到临时文件
|
||||||
|
torrent_file.write_bytes(bencode(torrent_main))
|
||||||
|
except Exception as err:
|
||||||
|
logger.error(f"解析fastresume文件 {fastresume_file} 出错:{err}")
|
||||||
|
fail += 1
|
||||||
|
continue
|
||||||
|
|
||||||
# 发送到另一个下载器中下载:默认暂停、传输下载路径、关闭自动管理模式
|
# 发送到另一个下载器中下载:默认暂停、传输下载路径、关闭自动管理模式
|
||||||
logger.info(f"添加转移做种任务到下载器 {todownloader}:{torrent_file}")
|
logger.info(f"添加转移做种任务到下载器 {todownloader}:{torrent_file}")
|
||||||
@ -617,11 +641,6 @@ class TorrentTransfer(_PluginBase):
|
|||||||
# 下载成功
|
# 下载成功
|
||||||
logger.info(f"成功添加转移做种任务,种子文件:{torrent_file}")
|
logger.info(f"成功添加转移做种任务,种子文件:{torrent_file}")
|
||||||
|
|
||||||
# 补充Tracker
|
|
||||||
if trackers:
|
|
||||||
logger.info(f"开始补充 {download_id} 的tracker:{trackers}")
|
|
||||||
todownloader_obj.add_trackers(ids=[download_id], trackers=trackers)
|
|
||||||
|
|
||||||
# TR会自动校验,QB需要手动校验
|
# TR会自动校验,QB需要手动校验
|
||||||
if todownloader == "qbittorrent":
|
if todownloader == "qbittorrent":
|
||||||
logger.info(f"qbittorrent 开始校验 {download_id} ...")
|
logger.info(f"qbittorrent 开始校验 {download_id} ...")
|
||||||
|
@ -51,4 +51,5 @@ click~=8.1.6
|
|||||||
requests_cache~=0.5.2
|
requests_cache~=0.5.2
|
||||||
parse~=1.19.0
|
parse~=1.19.0
|
||||||
docker~=6.1.3
|
docker~=6.1.3
|
||||||
cachetools~=5.3.1
|
cachetools~=5.3.1
|
||||||
|
fast-bencode==1.1.3
|
Loading…
x
Reference in New Issue
Block a user