This commit is contained in:
jxxghp 2023-06-11 09:25:30 +08:00
parent 8b8142ab60
commit 699fa3fa19
6 changed files with 37 additions and 10 deletions

View File

@ -171,7 +171,7 @@ class DownloadChain(ChainBase):
return 0
# 分组排序
contexts = TorrentHelper.sort_group_torrents(contexts)
contexts = TorrentHelper().sort_group_torrents(contexts)
# 如果是电影,直接下载
for context in contexts:

View File

@ -97,6 +97,7 @@ class UserMessageChain(ChainBase):
logger.info(f"{mediainfo.get_title_string()} 媒体库中不存在,开始搜索 ...")
self.post_message(
title=f"开始搜索 {mediainfo.type.value} {mediainfo.get_title_string()} ...", userid=userid)
# 开始搜索
contexts = self.searchchain.process(meta=self._current_meta,
mediainfo=mediainfo,
no_exists=no_exists)
@ -104,6 +105,8 @@ class UserMessageChain(ChainBase):
# 没有数据
self.post_message(title=f"{mediainfo.title} 未搜索到资源!", userid=userid)
return
# 搜索结果排序
# 更新缓存
self._user_cache[userid] = {
"type": "Torrent",

View File

@ -149,9 +149,9 @@ class TorrentHelper:
return file_name
@staticmethod
def sort_group_torrents(torrent_list: List[Context]) -> List[Context]:
def sort_torrents(torrent_list: List[Context]) -> List[Context]:
"""
媒体信息进行排序去重
种子对行排序
"""
if not torrent_list:
return []
@ -171,6 +171,19 @@ class TorrentHelper:
# 匹配的资源中排序分组选最好的一个下载
# 按站点顺序、资源匹配顺序、做种人数下载数逆序排序
torrent_list = sorted(torrent_list, key=lambda x: get_sort_str(x), reverse=True)
return torrent_list
def sort_group_torrents(self, torrent_list: List[Context]) -> List[Context]:
"""
对媒体信息进行排序去重
"""
if not torrent_list:
return []
# 排序
torrent_list = self.sort_torrents(torrent_list)
# 控重
result = []
_added = []

View File

@ -116,11 +116,13 @@ class FilterModule(_ModuleBase):
if not torrent_episodes:
# 整季按匹配处理
return True
if len(torrent_episodes) == 1 \
and not set(torrent_seasons).intersection(set(season_episodes.get(torrent_seasons[0]))):
# 单季集没有交集的不要
logger.info(f"种子 {torrent.title}{torrent_episodes} 没有需要的集")
return False
if len(torrent_seasons) == 1:
need_episodes = season_episodes.get(torrent_seasons[0])
if need_episodes \
and not set(torrent_seasons).intersection(set(need_episodes)):
# 单季集没有交集的不要
logger.info(f"种子 {torrent.title}{torrent_episodes} 没有需要的集")
return False
return True
def __get_order(self, torrent: TorrentInfo, rule_str: str) -> Optional[TorrentInfo]:

View File

@ -1,3 +1,4 @@
import re
import threading
from pathlib import Path
from threading import Event
@ -9,6 +10,7 @@ from telebot.types import InputFile
from app.core.config import settings
from app.core.context import MediaInfo, Context
from app.core.metainfo import MetaInfo
from app.log import logger
from app.utils.http import RequestUtils
from app.utils.singleton import Singleton
@ -140,8 +142,12 @@ class Telegram(metaclass=Singleton):
for context in torrents:
torrent = context.torrent_info
site_name = torrent.site_name
meta = MetaInfo(torrent.title, torrent.description)
link = torrent.page_url
title = torrent.title
title = f"{meta.get_season_episode_string()} " \
f"{meta.get_resource_type_string()} " \
f"{meta.get_resource_team_string()}"
title = re.sub(r"\s+", " ", title).strip()
free = torrent.get_volume_factor_string()
seeder = f"{torrent.seeders}"
description = torrent.description

View File

@ -1,4 +1,5 @@
import json
import re
import threading
from datetime import datetime
from typing import Optional, List
@ -211,11 +212,13 @@ class WeChat(metaclass=Singleton):
for context in torrents:
torrent = context.torrent_info
meta = MetaInfo(title=torrent.title, subtitle=torrent.description)
torrent_title = f"{torrent.site_name}" \
torrent_title = f"{index}.{torrent.site_name}" \
f"{meta.get_season_episode_string()} " \
f"{meta.get_resource_type_string()} " \
f"{meta.get_resource_team_string()}" \
f"{torrent.get_volume_factor_string()} " \
f"{torrent.seeders}"
title = re.sub(r"\s+", " ", title).strip()
articles.append({
"title": torrent_title,
"description": torrent.description if index == 1 else '',