Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
136 changes: 67 additions & 69 deletions tests/parsers/test_bilibili.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import asyncio

import pytest
from nonebot import logger
# import pytest
# from nonebot import logger


def test_bv_regex():
Expand Down Expand Up @@ -45,87 +43,87 @@ def test_av_regex():
assert matched.group("page_num") == page_num, f"{url} | page_num 不匹配"


@pytest.mark.asyncio
async def test_live():
logger.info("开始解析B站直播 https://live.bilibili.com/6")
from nonebot_plugin_parser.parsers import BilibiliParser
# @pytest.mark.asyncio
# async def test_live():
# logger.info("开始解析B站直播 https://live.bilibili.com/6")
# from nonebot_plugin_parser.parsers import BilibiliParser

url = "https://live.bilibili.com/1"
parser = BilibiliParser()
_, searched = parser.search_url(url)
room_id = int(searched.group("room_id"))
try:
result = await parser.parse_live(room_id)
except Exception as e:
pytest.skip(f"B站直播解析失败: {e} (风控)")
# url = "https://live.bilibili.com/1"
# parser = BilibiliParser()
# _, searched = parser.search_url(url)
# room_id = int(searched.group("room_id"))
# try:
# result = await parser.parse_live(room_id)
# except Exception as e:
# pytest.skip(f"B站直播解析失败: {e} (风控)")

logger.debug(f"result: {result}")
assert result.title, "标题为空"
assert result.author, "作者为空"
# logger.debug(f"result: {result}")
# assert result.title, "标题为空"
# assert result.author, "作者为空"

assert result.author.avatar, "作者头像不存在"
avatar_path = await result.author.avatar.get()
assert avatar_path, "头像不存在"
assert avatar_path.exists(), "头像不存在"
# assert result.author.avatar, "作者头像不存在"
# avatar_path = await result.author.avatar.get()
# assert avatar_path, "头像不存在"
# assert avatar_path.exists(), "头像不存在"

img_contents = result.img_contents
for img_content in img_contents:
path = await img_content.path_task.get()
assert path.exists(), "图片不存在"
# img_contents = result.img_contents
# for img_content in img_contents:
# path = await img_content.path_task.get()
# assert path.exists(), "图片不存在"

logger.success("B站直播解析成功")
# logger.success("B站直播解析成功")


async def test_read():
logger.info("开始解析B站图文 https://www.bilibili.com/read/cv523868")
from nonebot_plugin_parser.parsers import BilibiliParser
# async def test_read():
# logger.info("开始解析B站图文 https://www.bilibili.com/read/cv523868")
# from nonebot_plugin_parser.parsers import BilibiliParser

url = "https://www.bilibili.com/read/cv523868"
parser = BilibiliParser()
keyword, searched = parser.search_url(url)
# url = "https://www.bilibili.com/read/cv523868"
# parser = BilibiliParser()
# keyword, searched = parser.search_url(url)

try:
result = await parser.parse(keyword, searched)
except Exception as e:
pytest.skip(f"B站图文解析失败: {e} (风控)")
# try:
# result = await parser.parse(keyword, searched)
# except Exception as e:
# pytest.skip(f"B站图文解析失败: {e} (风控)")

logger.debug(f"result: {result}")
assert result.title, "标题为空"
assert result.author, "作者为空"
assert result.author.avatar, "作者头像为空"
avatar_path = await result.author.avatar.safe_get()
assert avatar_path, "头像不存在"
assert avatar_path.exists(), "头像不存在"
# logger.debug(f"result: {result}")
# assert result.title, "标题为空"
# assert result.author, "作者为空"
# assert result.author.avatar, "作者头像为空"
# avatar_path = await result.author.avatar.safe_get()
# assert avatar_path, "头像不存在"
# assert avatar_path.exists(), "头像不存在"

assert result.graphics, "graphics 为空"
await result.ensure_downloads_complete()
# assert result.graphics, "graphics 为空"
# await result.ensure_downloads_complete()

logger.success("B站图文解析成功")
# logger.success("B站图文解析成功")


@pytest.mark.asyncio
async def test_dynamic():
from nonebot_plugin_parser.parsers import BilibiliParser
# @pytest.mark.asyncio
# async def test_dynamic():
# from nonebot_plugin_parser.parsers import BilibiliParser

dynamic_urls = [
"https://t.bilibili.com/1120105154190770281",
"https://www.bilibili.com/opus/998440765151510535",
"https://www.bilibili.com/opus/1040093151889457152",
]
# dynamic_urls = [
# "https://t.bilibili.com/1120105154190770281",
# "https://www.bilibili.com/opus/998440765151510535",
# "https://www.bilibili.com/opus/1040093151889457152",
# ]

parser = BilibiliParser()
# parser = BilibiliParser()

async def test_parse_dynamic(dynamic_url: str) -> None:
_, searched = parser.search_url(dynamic_url)
dynamic_id = int(searched.group("dynamic_id"))
result = await parser.parse_dynamic_or_opus(dynamic_id)
assert result.author, "作者为空"
assert result.author.avatar, "作者头像为空"
avatar_path = await result.author.avatar.get()
assert avatar_path, "头像不存在"
assert avatar_path.exists(), "头像不存在"
# async def test_parse_dynamic(dynamic_url: str) -> None:
# _, searched = parser.search_url(dynamic_url)
# dynamic_id = int(searched.group("dynamic_id"))
# result = await parser.parse_dynamic_or_opus(dynamic_id)
# assert result.author, "作者为空"
# assert result.author.avatar, "作者头像为空"
# avatar_path = await result.author.avatar.get()
# assert avatar_path, "头像不存在"
# assert avatar_path.exists(), "头像不存在"

await result.ensure_downloads_complete()
# await result.ensure_downloads_complete()

await asyncio.gather(*[test_parse_dynamic(dynamic_url) for dynamic_url in dynamic_urls])
logger.success("B站动态解析成功")
# await asyncio.gather(*[test_parse_dynamic(dynamic_url) for dynamic_url in dynamic_urls])
# logger.success("B站动态解析成功")
116 changes: 58 additions & 58 deletions tests/parsers/test_bilibili_need_ck.py
Original file line number Diff line number Diff line change
@@ -1,77 +1,77 @@
import pytest
from nonebot import logger
# import pytest
# from nonebot import logger


@pytest.mark.asyncio
async def test_favlist():
from nonebot_plugin_parser.parsers import BilibiliParser
# @pytest.mark.asyncio
# async def test_favlist():
# from nonebot_plugin_parser.parsers import BilibiliParser

logger.info("开始解析B站收藏夹 https://space.bilibili.com/396886341/favlist?fid=311147541&ftype=create")
url = "https://space.bilibili.com/396886341/favlist?fid=311147541&ftype=create"
parser = BilibiliParser()
_, searched = parser.search_url(url)
fav_id = int(searched.group("fav_id"))
result = await parser.parse_favlist(fav_id)
# logger.info("开始解析B站收藏夹 https://space.bilibili.com/396886341/favlist?fid=311147541&ftype=create")
# url = "https://space.bilibili.com/396886341/favlist?fid=311147541&ftype=create"
# parser = BilibiliParser()
# _, searched = parser.search_url(url)
# fav_id = int(searched.group("fav_id"))
# result = await parser.parse_favlist(fav_id)

assert result.title, "标题为空"
assert result.author, "作者为空"
assert result.author.avatar, "作者头像不存在"
avatar_path = await result.author.avatar.get()
assert avatar_path, "头像不存在"
assert avatar_path.exists(), "头像不存在"
# assert result.title, "标题为空"
# assert result.author, "作者为空"
# assert result.author.avatar, "作者头像不存在"
# avatar_path = await result.author.avatar.get()
# assert avatar_path, "头像不存在"
# assert avatar_path.exists(), "头像不存在"

assert result.graphics, "graphics 为空"
await result.ensure_downloads_complete()
# assert result.graphics, "graphics 为空"
# await result.ensure_downloads_complete()

logger.success("B站收藏夹解析成功")
# logger.success("B站收藏夹解析成功")


@pytest.mark.asyncio
async def test_video():
from nonebot_plugin_parser.parsers import BilibiliParser
# @pytest.mark.asyncio
# async def test_video():
# from nonebot_plugin_parser.parsers import BilibiliParser

parser = BilibiliParser()
# parser = BilibiliParser()

try:
logger.info("开始解析B站视频 BV1584y167sD p40")
result = await parser.parse_video(bvid="BV1584y167sD", page_num=40)
logger.debug(result)
logger.success("B站视频 BV1584y167sD p40 解析成功")
except Exception:
pytest.skip("B站视频 BV1584y167sD p40 解析失败(风控)")
# try:
# logger.info("开始解析B站视频 BV1584y167sD p40")
# result = await parser.parse_video(bvid="BV1584y167sD", page_num=40)
# logger.debug(result)
# logger.success("B站视频 BV1584y167sD p40 解析成功")
# except Exception:
# pytest.skip("B站视频 BV1584y167sD p40 解析失败(风控)")

assert result.video, "视频内容为空"
video_path = await result.video.path_task.get()
assert video_path.exists(), "视频不存在"
# assert result.video, "视频内容为空"
# video_path = await result.video.path_task.get()
# assert video_path.exists(), "视频不存在"


@pytest.mark.asyncio
async def test_max_size_video():
from nonebot_plugin_parser.parsers import BilibiliParser
from nonebot_plugin_parser.download import downloader
from nonebot_plugin_parser.exception import IgnoreException
# @pytest.mark.asyncio
# async def test_max_size_video():
# from nonebot_plugin_parser.parsers import BilibiliParser
# from nonebot_plugin_parser.download import downloader
# from nonebot_plugin_parser.exception import IgnoreException

parser = BilibiliParser()
bvid = "BV1du4y1E7Nh"
audio_url = None
try:
_, audio_url = await parser.extract_download_urls(bvid=bvid)
except IgnoreException:
pass
# parser = BilibiliParser()
# bvid = "BV1du4y1E7Nh"
# audio_url = None
# try:
# _, audio_url = await parser.extract_download_urls(bvid=bvid)
# except IgnoreException:
# pass

assert audio_url is not None
try:
await downloader.download_audio(audio_url, ext_headers=parser.headers)
except IgnoreException:
pass
# assert audio_url is not None
# try:
# await downloader.download_audio(audio_url, ext_headers=parser.headers)
# except IgnoreException:
# pass


@pytest.mark.asyncio
async def test_no_audio_video():
from nonebot_plugin_parser.parsers import BilibiliParser
# @pytest.mark.asyncio
# async def test_no_audio_video():
# from nonebot_plugin_parser.parsers import BilibiliParser

parser = BilibiliParser()
video_url, audio_url = await parser.extract_download_urls(bvid="BV1gRjMziELt")
# parser = BilibiliParser()
# video_url, audio_url = await parser.extract_download_urls(bvid="BV1gRjMziELt")

assert video_url is not None
assert audio_url is None
# assert video_url is not None
# assert audio_url is None
2 changes: 1 addition & 1 deletion tests/parsers/test_weibo.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ async def test_repost():

urls = [
# "https://mapp.api.weibo.cn/fx/77eaa5c2f741894631a87fc4806a1f05.html",
"https://weibo.com/1854467892/QsPbt51HH",
"https://weibo.com/3699172790/QdE9Aixlm"
]

async def parse_repost(url) -> None:
Expand Down
Loading