Files
MoviePilot/tests/test_haidan_spider.py
jxxghp 52820af6d8 feat(indexer): API 站点支持音乐搜索(馒头/杜比/海胆/Rousi Pro/SunnyPT)
- MTorrentSpider 新增音乐分类(406 Music(音樂)),音乐搜索不再误用电影分类
- HddolbySpider 新增音乐唱片分类(408),演唱会视频(406)不计入音乐
- HaiDanSpider 新增 HQ Audio 音乐分类(408),并修复解析时从响应顶层取 category 恒为空的既有问题
- RousiSpider 支持 music 分类参数与结果标记,分类 ID 映射补充 5->music
- SunnyPTSpider 分类映射与结果解析通用支持 music 媒体类型
- 新增对应站点 spider 音乐搜索单测
2026-08-10 22:33:18 +08:00

61 lines
1.9 KiB
Python

# -*- coding: utf-8 -*-
import pytest
from app.modules.indexer.spider import haidan as haidan_module
from app.modules.indexer.spider.haidan import HaiDanSpider
from app.schemas import MediaType
def _build_indexer() -> dict:
"""构造海胆 API Spider 所需的最小站点配置。"""
return {
"id": "haidan",
"name": "海胆之家",
"domain": "https://www.haidan.cc/",
"cookie": "haidan-cookie",
"ua": "MoviePilot-Test",
"proxy": False,
}
@pytest.fixture()
def haidan_spider(monkeypatch):
"""构造不依赖真实数据库配置的 HaiDanSpider。"""
monkeypatch.setattr(haidan_module, "SystemConfigOper", lambda: None)
return HaiDanSpider(_build_indexer())
def test_music_search_uses_music_categories(haidan_spider):
"""音乐搜索应只提交海胆 HQ Audio 分区分类。"""
params = haidan_spider._HaiDanSpider__get_params("张学友", MediaType.MUSIC)
assert "cat=408" in params
assert "401" not in params
def test_movie_search_keeps_movie_categories(haidan_spider):
"""电影搜索行为不受音乐分类新增影响。"""
params = haidan_spider._HaiDanSpider__get_params("流浪地球", MediaType.MOVIE)
assert "cat=401%2C404%2C405" in params or "cat=401,404,405" in params
def test_parse_result_reads_item_category(haidan_spider):
"""分类字段取自每条种子,音乐分区应标记为音乐媒体类型。"""
result = {
"code": 0,
"data": {
"1": {"name": "张学友 - 他在那里 FLAC", "category": 408, "size": "1024"},
"2": {"name": "流浪地球", "category": 401, "size": "1024"},
"3": {"name": "剧集 S01", "category": 402, "size": "1024"},
},
}
torrents = haidan_spider._HaiDanSpider__parse_result(result)
assert [torrent["category"] for torrent in torrents] == [
MediaType.MUSIC.value,
MediaType.MOVIE.value,
MediaType.TV.value,
]