From 28a4c81aff3c1f3e482a9c80d489ad65f0a521f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=AF=E5=A4=A7=E4=BE=A0?= Date: Thu, 1 Jan 2026 12:56:17 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=86=E5=88=AB=E9=A6=92=E5=A4=B4=E7=AB=99?= =?UTF-8?q?=E7=82=B9=E7=9A=84=E5=85=A8=E7=AB=99=E4=BF=83=E9=94=80=E8=A7=84?= =?UTF-8?q?=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/modules/indexer/spider/mtorrent.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/app/modules/indexer/spider/mtorrent.py b/app/modules/indexer/spider/mtorrent.py index 27b0f53c..e40d0619 100644 --- a/app/modules/indexer/spider/mtorrent.py +++ b/app/modules/indexer/spider/mtorrent.py @@ -118,24 +118,36 @@ class MTorrentSpider: labels_value = self._labels.get(result.get('labels') or "0") or "" if labels_value: labels = labels_value.split() + status = result.get('status', {}) torrent = { 'title': result.get('name'), 'description': result.get('smallDescr'), 'enclosure': self.__get_download_url(result.get('id')), 'pubdate': StringUtils.format_timestamp(result.get('createdDate')), 'size': int(result.get('size') or '0'), - 'seeders': int(result.get('status', {}).get("seeders") or '0'), - 'peers': int(result.get('status', {}).get("leechers") or '0'), - 'grabs': int(result.get('status', {}).get("timesCompleted") or '0'), - 'downloadvolumefactor': self.__get_downloadvolumefactor(result.get('status', {}).get("discount")), - 'uploadvolumefactor': self.__get_uploadvolumefactor(result.get('status', {}).get("discount")), + 'seeders': int(status.get("seeders") or '0'), + 'peers': int(status.get("leechers") or '0'), + 'grabs': int(status.get("timesCompleted") or '0'), + 'downloadvolumefactor': self.__get_downloadvolumefactor(status.get("discount")), + 'uploadvolumefactor': self.__get_uploadvolumefactor(status.get("discount")), 'page_url': self._pageurl % (self._url, result.get('id')), 'imdbid': self.__find_imdbid(result.get('imdb')), 'labels': labels, 'category': category } - if discount_end_time := (result.get('status') or {}).get('discountEndTime'): + if discount_end_time := status.get('discountEndTime'): torrent['freedate'] = StringUtils.format_timestamp(discount_end_time) + # 解析全站促销时的规则(当前馒头只有下载促销) + if promotion_rule := status.get("promotionRule"): + discount = promotion_rule.get("discount", "NORMAL") + torrent["downloadvolumefactor"] = self.__get_downloadvolumefactor(discount) + if end_time := promotion_rule.get("endTime"): + torrent["freedate"] = StringUtils.format_timestamp(end_time) + if mall_single_free := status.get("mallSingleFree"): + if mall_single_free.get("status") == "ONGOING": + torrent["downloadvolumefactor"] = self.__get_downloadvolumefactor("FREE") + if end_date := mall_single_free.get("endDate"): + torrent["freedate"] = StringUtils.format_timestamp(end_date) torrents.append(torrent) return torrents