From 42dd6784ead0c7658d0747d39043b8f8df6403c4 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Mon, 19 Jun 2023 21:39:50 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E6=8B=A9=E7=A7=8D=E4=BC=98=E5=85=88?= =?UTF-8?q?=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/core/config.py | 2 ++ app/helper/torrent.py | 31 +++++++++++++++++++++++-------- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/app/core/config.py b/app/core/config.py index 5dfda803..54a01a4b 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -111,6 +111,8 @@ class Settings(BaseSettings): TORRENT_TAG: str = "MOVIEPILOT" # 下载保存目录,容器内映射路径需要一致 DOWNLOAD_PATH: str = "/downloads" + # 择种优先级:site/seeder + TORRENT_PRI: str = "seeder" # 媒体服务器 emby/jellyfin/plex MEDIASERVER: str = "emby" # EMBY服务器地址 diff --git a/app/helper/torrent.py b/app/helper/torrent.py index 16e7e2d0..76d28524 100644 --- a/app/helper/torrent.py +++ b/app/helper/torrent.py @@ -19,6 +19,7 @@ class TorrentHelper: """ 种子帮助类 """ + def download_torrent(self, url: str, cookie: str = None, ua: str = None, @@ -172,17 +173,31 @@ class TorrentHelper: if not torrent_list: return [] - # 排序函数,标题、站点、资源类型、做种数量 def get_sort_str(_context): + """ + 排序函数,值越大越优先 + """ _meta = _context.meta_info _torrent = _context.torrent_info - season_len = str(len(_meta.season_list)).rjust(2, '0') - episode_len = str(9999 - len(_meta.episode_list)).rjust(4, '0') - # 排序:标题、资源类型、站点、做种、季集 - return "%s%s%s%s" % (str(_torrent.title).ljust(100, ' '), - str(_torrent.pri_order).rjust(3, '0'), - str(_torrent.seeders).rjust(10, '0'), - "%s%s" % (season_len, episode_len)) + # 站点优先级 + _site_order = 999 - _torrent.site_order + # 季数 + _season_len = str(len(_meta.season_list)).rjust(2, '0') + # 集数 + _episode_len = str(9999 - len(_meta.episode_list)).rjust(4, '0') + if settings.TORRENT_PRI == "seeder": + # 排序:标题、资源类型、站点、做种、季集 + return "%s%s%s%s" % (str(_torrent.title).ljust(100, ' '), + str(_torrent.pri_order).rjust(3, '0'), + str(_torrent.seeders).rjust(10, '0'), + "%s%s" % (_season_len, _episode_len)) + else: + # 排序:标题、资源类型、站点、季集、做种 + return "%s%s%s%s%s" % (str(_torrent.title).ljust(100, ' '), + str(_torrent.pri_order).rjust(3, '0'), + str(_site_order).rjust(3, '0'), + str(_torrent.seeders).rjust(10, '0'), + "%s%s" % (_season_len, _episode_len)) # 匹配的资源中排序分组选最好的一个下载 # 按站点顺序、资源匹配顺序、做种人数下载数逆序排序