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)) # 匹配的资源中排序分组选最好的一个下载 # 按站点顺序、资源匹配顺序、做种人数下载数逆序排序