fix hddolby

This commit is contained in:
jxxghp
2025-03-02 08:06:25 +08:00
parent 8e4b4c3144
commit 4cf5cb06a0
2 changed files with 14 additions and 24 deletions
+4 -3
View File
@@ -55,6 +55,7 @@ class HDDolbySiteUserInfo(SiteParserBase):
self._user_mail_unread_page = None self._user_mail_unread_page = None
self._mail_unread_params = {} self._mail_unread_params = {}
self._torrent_seeding_page = "api/v1/user/peers" self._torrent_seeding_page = "api/v1/user/peers"
self._torrent_seeding_params = {}
self._torrent_seeding_headers = { self._torrent_seeding_headers = {
"Content-Type": "application/json", "Content-Type": "application/json",
"Accept": "application/json, text/plain, */*" "Accept": "application/json, text/plain, */*"
@@ -91,7 +92,8 @@ class HDDolbySiteUserInfo(SiteParserBase):
"uploaded": "852071699418375", "uploaded": "852071699418375",
"downloaded": "1885536536176", "downloaded": "1885536536176",
"seedbonus": "99774808.0", "seedbonus": "99774808.0",
"sebonus": "3739023.7" "sebonus": "3739023.7",
"unread_messages": "0",
} }
""" """
self.userid = user_info.get("id") self.userid = user_info.get("id")
@@ -102,8 +104,7 @@ class HDDolbySiteUserInfo(SiteParserBase):
self.download = int(user_info.get("downloaded") or '0') self.download = int(user_info.get("downloaded") or '0')
self.ratio = round(self.upload / self.download, 2) if self.download else 0 self.ratio = round(self.upload / self.download, 2) if self.download else 0
self.bonus = float(user_info.get("seedbonus") or "0") self.bonus = float(user_info.get("seedbonus") or "0")
self.message_read_force = True self.message_unread = int(user_info.get("unread_messages") or '0')
self._torrent_seeding_params = {}
def _parse_user_traffic_info(self, html_text: str): def _parse_user_traffic_info(self, html_text: str):
""" """
+10 -21
View File
@@ -7,6 +7,7 @@ from app.db.systemconfig_oper import SystemConfigOper
from app.log import logger from app.log import logger
from app.schemas import MediaType from app.schemas import MediaType
from app.utils.http import RequestUtils from app.utils.http import RequestUtils
from app.utils.string import StringUtils
class HddolbySpider: class HddolbySpider:
@@ -15,16 +16,17 @@ class HddolbySpider:
""" """
_indexerid = None _indexerid = None
_domain = None _domain = None
_domain_host = None
_name = "" _name = ""
_proxy = None _proxy = None
_cookie = None _cookie = None
_ua = None _ua = None
_apikey = None _apikey = None
_size = 40 _size = 40
_searchurl = "https://api.hddolby.com/api/v1/torrent/search"
_downloadurl = "https://api.hddolby.com/api/v1/torrent/download?id=%s"
_pageurl = "%sdetails.php?id=%s&hit=1" _pageurl = "%sdetails.php?id=%s&hit=1"
_timeout = 15 _timeout = 15
_searchurl = None
_downloadurl = None
# 分类 # 分类
_movie_category = [401, 405] _movie_category = [401, 405]
@@ -63,6 +65,7 @@ class HddolbySpider:
if indexer: if indexer:
self._indexerid = indexer.get('id') self._indexerid = indexer.get('id')
self._domain = indexer.get('domain') self._domain = indexer.get('domain')
self._domain_host = StringUtils.get_url_domain(self._domain)
self._name = indexer.get('name') self._name = indexer.get('name')
if indexer.get('proxy'): if indexer.get('proxy'):
self._proxy = settings.PROXY self._proxy = settings.PROXY
@@ -70,6 +73,8 @@ class HddolbySpider:
self._ua = indexer.get('ua') self._ua = indexer.get('ua')
self._apikey = indexer.get('apikey') self._apikey = indexer.get('apikey')
self._timeout = indexer.get('timeout') or 15 self._timeout = indexer.get('timeout') or 15
self._searchurl = f"https://api.{self._domain_host}/api/v1/torrent/search"
self._downloadurl = f"https://api.{self._domain_host}/api/v1/torrent/download?id=%s"
def search(self, keyword: str, mtype: MediaType = None, page: int = 0) -> Tuple[bool, List[dict]]: def search(self, keyword: str, mtype: MediaType = None, page: int = 0) -> Tuple[bool, List[dict]]:
""" """
@@ -151,7 +156,7 @@ class HddolbySpider:
torrent = { torrent = {
'title': result.get('name'), 'title': result.get('name'),
'description': result.get('small_descr'), 'description': result.get('small_descr'),
'enclosure': self.__get_download_url(result.get('id')), 'enclosure': self.__get_download_url(result.get('id'), result.get('downhash')),
'pubdate': result.get('added'), 'pubdate': result.get('added'),
'size': result.get('size'), 'size': result.get('size'),
'seeders': result.get('seeders'), 'seeders': result.get('seeders'),
@@ -202,25 +207,9 @@ class HddolbySpider:
return discount_dict.get(discount, 1) return discount_dict.get(discount, 1)
return 1 return 1
def __get_download_url(self, torrent_id: str) -> str: def __get_download_url(self, torrent_id: int, downhash: str) -> str:
""" """
获取下载链接,返回base64编码的json字符串及URL 获取下载链接,返回base64编码的json字符串及URL
""" """
url = self._downloadurl % torrent_id return f"{self._domain}download.php?id={torrent_id}&downhash={downhash}"
params = {
'method': 'post',
'cookie': False,
'params': {
'id': torrent_id
},
'header': {
'Content-Type': 'application/json',
'Accept': 'application/json, text/plain, */*',
'x-api-key': self._apikey
},
'result': 'data'
}
# base64编码
base64_str = base64.b64encode(json.dumps(params).encode('utf-8')).decode('utf-8')
return f"[{base64_str}]{url}"