feat:免费剩余时间 && HR
This commit is contained in:
parent
b53dbbc38e
commit
61281cca02
@ -55,6 +55,8 @@ class DownloadChain(ChainBase):
|
|||||||
msg_text = f"{msg_text}\n种子:{torrent.title}"
|
msg_text = f"{msg_text}\n种子:{torrent.title}"
|
||||||
if torrent.pubdate:
|
if torrent.pubdate:
|
||||||
msg_text = f"{msg_text}\n发布时间:{torrent.pubdate}"
|
msg_text = f"{msg_text}\n发布时间:{torrent.pubdate}"
|
||||||
|
if torrent.freedate:
|
||||||
|
msg_text = f"{msg_text}\n免费时间:{StringUtils.diff_time_str(torrent.freedate)}"
|
||||||
if torrent.seeders:
|
if torrent.seeders:
|
||||||
msg_text = f"{msg_text}\n做种数:{torrent.seeders}"
|
msg_text = f"{msg_text}\n做种数:{torrent.seeders}"
|
||||||
if torrent.uploadvolumefactor and torrent.downloadvolumefactor:
|
if torrent.uploadvolumefactor and torrent.downloadvolumefactor:
|
||||||
|
@ -44,6 +44,8 @@ class TorrentInfo:
|
|||||||
pubdate: str = None
|
pubdate: str = None
|
||||||
# 已过时间
|
# 已过时间
|
||||||
date_elapsed: str = None
|
date_elapsed: str = None
|
||||||
|
# 免费截止时间
|
||||||
|
freedate: str = None
|
||||||
# 上传因子
|
# 上传因子
|
||||||
uploadvolumefactor: float = None
|
uploadvolumefactor: float = None
|
||||||
# 下载因子
|
# 下载因子
|
||||||
|
@ -12,9 +12,9 @@ from ruamel.yaml import CommentedMap
|
|||||||
from app.core.config import settings
|
from app.core.config import settings
|
||||||
from app.helper.browser import PlaywrightHelper
|
from app.helper.browser import PlaywrightHelper
|
||||||
from app.log import logger
|
from app.log import logger
|
||||||
|
from app.schemas.types import MediaType
|
||||||
from app.utils.http import RequestUtils
|
from app.utils.http import RequestUtils
|
||||||
from app.utils.string import StringUtils
|
from app.utils.string import StringUtils
|
||||||
from app.schemas.types import MediaType
|
|
||||||
|
|
||||||
|
|
||||||
class TorrentSpider:
|
class TorrentSpider:
|
||||||
@ -547,6 +547,29 @@ class TorrentSpider:
|
|||||||
else:
|
else:
|
||||||
self.torrents_info['labels'] = []
|
self.torrents_info['labels'] = []
|
||||||
|
|
||||||
|
def __get_free_date(self, torrent):
|
||||||
|
# free date
|
||||||
|
if 'free_date' not in self.fields:
|
||||||
|
return
|
||||||
|
selector = self.fields.get('free_date', {})
|
||||||
|
free_date = torrent(selector.get('selector', '')).clone()
|
||||||
|
self.__remove(free_date, selector)
|
||||||
|
items = self.__attribute_or_text(free_date, selector)
|
||||||
|
self.torrents_info['freedate'] = self.__index(items, selector)
|
||||||
|
self.torrents_info['freedate'] = self.__filter_text(self.torrents_info.get('freedate'),
|
||||||
|
selector.get('filters'))
|
||||||
|
|
||||||
|
def __get_hit_and_run(self, torrent):
|
||||||
|
# hitandrun
|
||||||
|
if 'hr' not in self.fields:
|
||||||
|
return
|
||||||
|
selector = self.fields.get('hr', {})
|
||||||
|
hit_and_run = torrent(selector.get('selector', ''))
|
||||||
|
if hit_and_run:
|
||||||
|
self.torrents_info['hit_and_run'] = True
|
||||||
|
else:
|
||||||
|
self.torrents_info['hit_and_run'] = False
|
||||||
|
|
||||||
def get_info(self, torrent) -> dict:
|
def get_info(self, torrent) -> dict:
|
||||||
"""
|
"""
|
||||||
解析单条种子数据
|
解析单条种子数据
|
||||||
@ -566,13 +589,15 @@ class TorrentSpider:
|
|||||||
self.__get_uploadvolumefactor(torrent)
|
self.__get_uploadvolumefactor(torrent)
|
||||||
self.__get_pubdate(torrent)
|
self.__get_pubdate(torrent)
|
||||||
self.__get_date_elapsed(torrent)
|
self.__get_date_elapsed(torrent)
|
||||||
|
self.__get_free_date(torrent)
|
||||||
self.__get_labels(torrent)
|
self.__get_labels(torrent)
|
||||||
|
self.__get_hit_and_run(torrent)
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
logger.error("%s 搜索出现错误:%s" % (self.indexername, str(err)))
|
logger.error("%s 搜索出现错误:%s" % (self.indexername, str(err)))
|
||||||
return self.torrents_info
|
return self.torrents_info
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def __filter_text(text, filters):
|
def __filter_text(text: str, filters: list):
|
||||||
"""
|
"""
|
||||||
对文件进行处理
|
对文件进行处理
|
||||||
"""
|
"""
|
||||||
@ -613,7 +638,7 @@ class TorrentSpider:
|
|||||||
item.remove(v)
|
item.remove(v)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def __attribute_or_text(item, selector):
|
def __attribute_or_text(item, selector: dict):
|
||||||
if not selector:
|
if not selector:
|
||||||
return item
|
return item
|
||||||
if not item:
|
if not item:
|
||||||
@ -625,7 +650,7 @@ class TorrentSpider:
|
|||||||
return items
|
return items
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def __index(items, selector):
|
def __index(items: list, selector: dict):
|
||||||
if not items:
|
if not items:
|
||||||
return None
|
return None
|
||||||
if selector:
|
if selector:
|
||||||
|
@ -196,6 +196,8 @@ class TorrentInfo(BaseModel):
|
|||||||
pubdate: Optional[str] = None
|
pubdate: Optional[str] = None
|
||||||
# 已过时间
|
# 已过时间
|
||||||
date_elapsed: Optional[str] = None
|
date_elapsed: Optional[str] = None
|
||||||
|
# 免费截止时间
|
||||||
|
freedate: Optional[str] = None
|
||||||
# 上传因子
|
# 上传因子
|
||||||
uploadvolumefactor: Optional[float] = None
|
uploadvolumefactor: Optional[float] = None
|
||||||
# 下载因子
|
# 下载因子
|
||||||
|
@ -711,3 +711,27 @@ class StringUtils:
|
|||||||
return -1
|
return -1
|
||||||
else:
|
else:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def diff_time_str(time_str: str):
|
||||||
|
"""
|
||||||
|
输入YYYY-MM-DD HH24:MI:SS 格式的时间字符串,返回距离现在的剩余时间:xx天xx小时xx分钟
|
||||||
|
"""
|
||||||
|
if not time_str:
|
||||||
|
return ''
|
||||||
|
try:
|
||||||
|
time_obj = datetime.datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')
|
||||||
|
except ValueError:
|
||||||
|
return ''
|
||||||
|
now = datetime.datetime.now()
|
||||||
|
diff = time_obj - now
|
||||||
|
diff_seconds = diff.seconds
|
||||||
|
diff_days = diff.days
|
||||||
|
diff_hours = diff_seconds // 3600
|
||||||
|
diff_minutes = (diff_seconds % 3600) // 60
|
||||||
|
if diff_days > 0:
|
||||||
|
return f'{diff_days}天{diff_hours}小时{diff_minutes}分钟'
|
||||||
|
elif diff_hours > 0:
|
||||||
|
return f'{diff_hours}小时{diff_minutes}分钟'
|
||||||
|
else:
|
||||||
|
return f'{diff_minutes}分钟'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user