[错误报告]: mt新架构适配
确认
当前程序版本
v3.3.15 3fbde6a
问题类型
主程序运行问题
问题描述
MT更新了新架构,现在站点测试会提示cookie失效,理解应该需要重新适配一下
发生问题时系统日志和配置文件
No response
我的也是
@hsuyelin 等大佬适配,应该不是简单更改站点文件,这个改动和HH一样,比较大的改动
坐等更新
坐等大佬适配。这次改版太彻底了
站点适配和资源浏览推送下载倒是基本ok了 不过刷流得大改 看了一下午暂时放弃.... 其他大佬上吧
站点适配和资源浏览推送下载倒是基本ok了 不过刷流得大改 看了一下午暂时放弃.... 其他大佬上吧
感谢大佬!期待PR与更新
现在页面改成静态的了,页面是react+antd;其实可以直接请求接口获取数据,没必要像以前一样解析html了
比如综合的列表接口:/api/torrent/search 详情接口:/api/torrent/detail
其他操作类似,都可以拿到接口。直接用requests库发请求操作就行。 就是不知道mt那边对这种是什么态度
@iovejieba
期待
等待大佬出手。现在刷流和RSS都废掉了。
MP已经更新了,他的逻辑是用Cookie爬取API地址,所以只需要更新cookie即可,这个方法可以参考
rss看日志是parser的问题,单独给mt的订阅,enclouse加了个type,目前我这边是能用的,不过刷流和站点签到订阅可能还要等dalao的pr了
{
"list": "//channel/item",
"item": {
"title": {
"path": ".//title/text()"
},
"enclosure": {
"path": ".//enclosure[@type='application/octet-stream']/@url"
},
"link": {
"path": ".//link/text()"
},
"date": {
"path": ".//pubDate/text()"
},
"description": {
"path": ".//description/text()"
},
"size": {
"path": ".//link/@length"
}
}
}
等待大佬出手。现在刷流和RSS都废掉了。
rss看日志是parser的问题,单独给mt的订阅,enclouse加了个type,目前我这边是能用的,不过刷流和站点签到订阅可能还要等dalao的pr了
{ "list": "//channel/item", "item": { "title": { "path": ".//title/text()" }, "enclosure": { "path": ".//enclosure[@type='application/octet-stream']/@url" }, "link": { "path": ".//link/text()" }, "date": { "path": ".//pubDate/text()" }, "description": { "path": ".//description/text()" }, "size": { "path": ".//link/@length" } } }等待大佬出手。现在刷流和RSS都废掉了。
大佬细说啊,先用上,本项目大佬不知道啥时候才有空 @houskii
顶上去
需要添加请求头了,cookie不能再使用了,馒头tg群里说了再使用cookie可能会被ban
您好,这里是张威的邮箱,您的来信已收到,我将尽快给您回复,谢谢!
rss看日志是parser的问题,单独给mt的订阅,enclouse加了个type,目前我这边是能用的,不过刷流和站点签到订阅可能还要等dalao的pr了
{ "list": "//channel/item", "item": { "title": { "path": ".//title/text()" }, "enclosure": { "path": ".//enclosure[@type='application/octet-stream']/@url" }, "link": { "path": ".//link/text()" }, "date": { "path": ".//pubDate/text()" }, "description": { "path": ".//description/text()" }, "size": { "path": ".//link/@length" } } }等待大佬出手。现在刷流和RSS都废掉了。
大佬细说啊,先用上,本项目大佬不知道啥时候才有空 @houskii
自定义订阅 -> RSS解析器,新增一个单独给MT用的,然后mt的rss解析都选这个就行
rss看日志是parser的问题,单独给mt的订阅,enclouse加了个type,目前我这边是能用的,不过刷流和站点签到订阅可能还要等dalao的pr了
{ "list": "//channel/item", "item": { "title": { "path": ".//title/text()" }, "enclosure": { "path": ".//enclosure[@type='application/octet-stream']/@url" }, "link": { "path": ".//link/text()" }, "date": { "path": ".//pubDate/text()" }, "description": { "path": ".//description/text()" }, "size": { "path": ".//link/@length" } } }等待大佬出手。现在刷流和RSS都废掉了。
大佬细说啊,先用上,本项目大佬不知道啥时候才有空 @houskii
自定义订阅 -> RSS解析器,新增一个单独给MT用的,然后mt的rss解析都选这个就行
这个操作确实不太行,得等大佬适配
需要添加请求头了,cookie不能再使用了,馒头tg群里说了再使用cookie可能会被ban
cookie应该是没有办法被侦测是人为操作还是软件操作,只是不想让给你用,吓吓你们的,只要不是非常频繁,基本没啥问题的
按馒头群里开发人员的意思,以后都需要用access token来获取信息,请求种子等,继续使用cookie可能会导致ban号。好处是,就像楼上聊到的,不用再解析html等操作了。
站点适配和资源浏览推送下载倒是基本ok了 不过刷流得大改 看了一下午暂时放弃.... 其他大佬上吧
大佬,可以先提一个draft pull request,可能会减少重复工作。
资源浏览推送
大佬PR一下 @iovejieba
资源浏览推送
大佬PR一下 @iovejieba
我也...菜鸡 这两天不在家 看谁方便先pr吧
您好,您的来信已收到,我将第一时间给您回复,谢谢
你们急着刷流的话可以试试这段 code snippet
在刷流任务上,似乎本质上目前是对资源详情的获取、识别出现了不对称,因此只要针对这部分做 override 即可。
- 考虑到 MT 的 headers 里现在有一个 auth 字段,可能需要你们更新一下新的 MT 的 cookies
- 还有就是,似乎目前 rss 的清单的列表更新的很慢,我这里最新的一条资源是 22号的,完全 outdate 了
- 我自己暂时把 MT 的 brush 停了,不对这段代码负责,仅抛砖引玉。
P.S. 顺手花了10分钟写的我没很全面的测试过,勉强算个临时方案,不算正经方案,毕竟是草台代码。针对 MT 这类的独立解析,感觉需要一个 parser dispatcher,现有的 torrent rss parser 作为fallback parser,独立 site 需要有优先级更高的 rss parser。 考虑到用户有别的需求,因此overall 的看,需要一个 site 类去 hook 以及优先调度所有相关逻辑,e.g. 签到、资源页、刷流。
Patch location as below:
Patch:
if torrent_url.startswith('https://kp.m-team.cc'):
try:
match = re.search(r"detail/(\d+)", torrent_url)
if match == None:
return ret_attr
val = match.group(1)
params = { "id": val }
res = RequestUtils(
cookies=cookie,
headers=ua,
proxies=Config().get_proxies() if proxy else None
).post_res(url = "https://kp.m-team.cc/api/torrent/detail", params = params)
if res.status_code != 200:
return ret_attr
response_json = res.json()
if response_json["message"] != "SUCCESS":
return ret_attr
data = response_json["data"]
torrent_status = data["status"]
discount = torrent_status["discount"]
peer_count = torrent_status["seeders"]
if discount == "2XFREE":
ret_attr["free"] = True
ret_attr["2xfree"] = True
elif discount == "FREE":
ret_attr["free"] = True
ret_attr["peer_count"] = int(peer_count) if len(peer_count) > 0 else 0
return ret_attr
except Exception as err:
ExceptionUtils.exception_traceback(err)
# 随机休眼后再返回
time.sleep(round(random.uniform(1, 5), 1))
return {
"free": False,
"2xfree": False,
"hr": False,
"peer_count": 0
}
你们急着刷流的话可以试试这段 code snippet
在刷流任务上,似乎本质上目前是对资源详情的获取、识别出现了不对称,因此只要针对这部分做 override 即可。
- 考虑到 MT 的 headers 里现在有一个 auth 字段,可能需要你们更新一下新的 MT 的 cookies
- 还有就是,似乎目前 rss 的清单的列表更新的很慢,我这里最新的一条资源是 22号的,完全 outdate 了
- 我自己暂时把 MT 的 brush 停了,不对这段代码负责,仅抛砖引玉。
P.S. 顺手花了10分钟写的我没很全面的测试过,勉强算个临时方案,不算正经方案,毕竟是草台代码。针对 MT 这类的独立解析,感觉需要一个 parser dispatcher,现有的 torrent rss parser 作为fallback parser,独立 site 需要有优先级更高的 rss parser。 考虑到用户有别的需求,因此overall 的看,需要一个 site 类去 hook 以及优先调度所有相关逻辑,e.g. 签到、资源页、刷流。
Patch location as below:
Patch:
if torrent_url.startswith('https://kp.m-team.cc'): try: match = re.search(r"detail/(\d+)", torrent_url) if match == None: return ret_attr val = match.group(1) params = { "id": val } res = RequestUtils( cookies=cookie, headers=ua, proxies=Config().get_proxies() if proxy else None ).post_res(url = "https://kp.m-team.cc/api/torrent/detail", params = params) if res.status_code != 200: return ret_attr response_json = res.json() if response_json["message"] != "SUCCESS": return ret_attr data = response_json["data"] torrent_status = data["status"] discount = torrent_status["discount"] peer_count = torrent_status["seeders"] if discount == "2XFREE": ret_attr["free"] = True ret_attr["2xfree"] = True elif discount == "FREE": ret_attr["free"] = True ret_attr["peer_count"] = int(peer_count) if len(peer_count) > 0 else 0 return ret_attr except Exception as err: ExceptionUtils.exception_traceback(err) # 随机休眼后再返回 time.sleep(round(random.uniform(1, 5), 1)) return { "free": False, "2xfree": False, "hr": False, "peer_count": 0 }
刷流其实无所谓,主要是现在没办法搜搜和订阅了
你们急着刷流的话可以试试这段 code snippet
在刷流任务上,似乎本质上目前是对资源详情的获取、识别出现了不对称,因此只要针对这部分做 override 即可。
- 考虑到 MT 的 headers 里现在有一个 auth 字段,可能需要你们更新一下新的 MT 的 cookies
- 还有就是,似乎目前 rss 的清单的列表更新的很慢,我这里最新的一条资源是 22号的,完全 outdate 了
- 我自己暂时把 MT 的 brush 停了,不对这段代码负责,仅抛砖引玉。
P.S. 顺手花了10分钟写的我没很全面的测试过,勉强算个临时方案,不算正经方案,毕竟是草台代码。针对 MT 这类的独立解析,感觉需要一个 parser dispatcher,现有的 torrent rss parser 作为fallback parser,独立 site 需要有优先级更高的 rss parser。 考虑到用户有别的需求,因此overall 的看,需要一个 site 类去 hook 以及优先调度所有相关逻辑,e.g. 签到、资源页、刷流。
Patch location as below:
Patch:
if torrent_url.startswith('https://kp.m-team.cc'):try:match = re.search(r"detail/(\d+)", torrent_url)if match == None:return ret_attrval = match.group(1)params = { "id": val }res = RequestUtils(cookies=cookie,headers=ua,proxies=Config().get_proxies() if proxy else None).post_res(url = "https://kp.m-team.cc/api/torrent/detail", params = params)if res.status_code != 200:return ret_attrresponse_json = res.json()if response_json["message"] != "SUCCESS":return ret_attrdata = response_json["data"]torrent_status = data["status"]discount = torrent_status["discount"]peer_count = torrent_status["seeders"]if discount == "2XFREE":ret_attr["free"] = Trueret_attr["2xfree"] = Trueelif discount == "FREE":ret_attr["free"] = Trueret_attr["peer_count"] = int(peer_count) if len(peer_count) > 0 else 0return ret_attrexcept Exception as err:ExceptionUtils.exception_traceback(err)# 随机休眼后再返回time.sleep(round(random.uniform(1, 5), 1))return {"free": False,"2xfree": False,"hr": False,"peer_count": 0}刷流其实无所谓,主要是现在没办法搜搜和订阅了
一样的阿,临时方案就是扒一下search 逻辑然后短路 hook 掉。 正经点的方案么就是把一些通用能力抽出来,然后给独立站点比如馒头写一个独立的 site 类,然后把通用逻辑 DI 进去,然后拿个 dispatcher 调度一下
刷流其实无所谓,主要是现在没办法搜搜和订阅了
一样的阿,临时方案就是扒一下search 逻辑然后短路 hook 掉。 正经点的方案么就是把一些通用能力抽出来,然后给独立站点比如馒头写一个独立的 site 类,然后把通用逻辑 DI 进去,然后拿个 dispatcher 调度一下
试了一下,加进去这个代码好像也没啥用
刷流其实无所谓,主要是现在没办法搜搜和订阅了
一样的阿,临时方案就是扒一下search 逻辑然后短路 hook 掉。 正经点的方案么就是把一些通用能力抽出来,然后给独立站点比如馒头写一个独立的 site 类,然后把通用逻辑 DI 进去,然后拿个 dispatcher 调度一下
试了一下,加进去这个代码好像也没啥用
你看看docker log ,是不是没有 import re
UPDATE:
MT 现在不太稳定,无论是调研还是 bugfix 都没什么意义。刚回家看了一眼 rss response,只有 3 个资源。
UPDATE:
MT 现在不太稳定,无论是调研还是 bugfix 都没什么意义。刚回家看了一眼 rss response,只有 3 个资源。
再等等吧,馒头的api有点看不懂怎么用
