fix #1141 修复错误种子链接一直偿试下载的问题
This commit is contained in:
parent
f8edf79c59
commit
ef2cfe1c1d
@ -12,6 +12,7 @@ from app.db.site_oper import SiteOper
|
|||||||
from app.db.systemconfig_oper import SystemConfigOper
|
from app.db.systemconfig_oper import SystemConfigOper
|
||||||
from app.helper.rss import RssHelper
|
from app.helper.rss import RssHelper
|
||||||
from app.helper.sites import SitesHelper
|
from app.helper.sites import SitesHelper
|
||||||
|
from app.helper.torrent import TorrentHelper
|
||||||
from app.log import logger
|
from app.log import logger
|
||||||
from app.schemas import Notification
|
from app.schemas import Notification
|
||||||
from app.schemas.types import SystemConfigKey, MessageChannel, NotificationType
|
from app.schemas.types import SystemConfigKey, MessageChannel, NotificationType
|
||||||
@ -34,6 +35,7 @@ class TorrentsChain(ChainBase, metaclass=Singleton):
|
|||||||
self.rsshelper = RssHelper()
|
self.rsshelper = RssHelper()
|
||||||
self.systemconfig = SystemConfigOper()
|
self.systemconfig = SystemConfigOper()
|
||||||
self.mediachain = MediaChain()
|
self.mediachain = MediaChain()
|
||||||
|
self.torrenthelper = TorrentHelper()
|
||||||
|
|
||||||
def remote_refresh(self, channel: MessageChannel, userid: Union[str, int] = None):
|
def remote_refresh(self, channel: MessageChannel, userid: Union[str, int] = None):
|
||||||
"""
|
"""
|
||||||
@ -143,6 +145,11 @@ class TorrentsChain(ChainBase, metaclass=Singleton):
|
|||||||
# 读取缓存
|
# 读取缓存
|
||||||
torrents_cache = self.get_torrents()
|
torrents_cache = self.get_torrents()
|
||||||
|
|
||||||
|
# 缓存过滤掉无效种子
|
||||||
|
for _domain, _torrents in torrents_cache.items():
|
||||||
|
torrents_cache[_domain] = [_torrent for _torrent in _torrents
|
||||||
|
if not self.torrenthelper.is_invalid(_torrent.torrent_info.enclosure)]
|
||||||
|
|
||||||
# 所有站点索引
|
# 所有站点索引
|
||||||
indexers = self.siteshelper.get_indexers()
|
indexers = self.siteshelper.get_indexers()
|
||||||
# 遍历站点缓存资源
|
# 遍历站点缓存资源
|
||||||
|
@ -14,13 +14,17 @@ from app.db.systemconfig_oper import SystemConfigOper
|
|||||||
from app.log import logger
|
from app.log import logger
|
||||||
from app.utils.http import RequestUtils
|
from app.utils.http import RequestUtils
|
||||||
from app.schemas.types import MediaType, SystemConfigKey
|
from app.schemas.types import MediaType, SystemConfigKey
|
||||||
|
from app.utils.singleton import Singleton
|
||||||
|
|
||||||
|
|
||||||
class TorrentHelper:
|
class TorrentHelper(metaclass=Singleton):
|
||||||
"""
|
"""
|
||||||
种子帮助类
|
种子帮助类
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# 失败的种子:站点链接
|
||||||
|
_invalid_torrents = []
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.system_config = SystemConfigOper()
|
self.system_config = SystemConfigOper()
|
||||||
|
|
||||||
@ -123,6 +127,8 @@ class TorrentHelper:
|
|||||||
elif req.status_code == 429:
|
elif req.status_code == 429:
|
||||||
return None, None, "", [], "触发站点流控,请稍后重试"
|
return None, None, "", [], "触发站点流控,请稍后重试"
|
||||||
else:
|
else:
|
||||||
|
# 把错误的种子记下来,避免重复使用
|
||||||
|
self.add_invalid(url)
|
||||||
return None, None, "", [], f"下载种子出错,状态码:{req.status_code}"
|
return None, None, "", [], f"下载种子出错,状态码:{req.status_code}"
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -276,3 +282,16 @@ class TorrentHelper:
|
|||||||
continue
|
continue
|
||||||
episodes = list(set(episodes).union(set(meta.episode_list)))
|
episodes = list(set(episodes).union(set(meta.episode_list)))
|
||||||
return episodes
|
return episodes
|
||||||
|
|
||||||
|
def is_invalid(self, url: str) -> bool:
|
||||||
|
"""
|
||||||
|
判断种子是否是无效种子
|
||||||
|
"""
|
||||||
|
return url in self._invalid_torrents
|
||||||
|
|
||||||
|
def add_invalid(self, url: str):
|
||||||
|
"""
|
||||||
|
添加无效种子
|
||||||
|
"""
|
||||||
|
if url not in self._invalid_torrents:
|
||||||
|
self._invalid_torrents.append(url)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user