rogerxavier's picture
Upload 258 files
0aee47a verified
"""
bilibili_api.utils.short
一个很简单的处理短链接的模块,主要是读取跳转链接。
"""
from typing import Optional
from .. import settings
from .credential import Credential
from .network import get_session, get_aiohttp_session
async def get_real_url(short_url: str, credential: Optional[Credential] = None) -> str:
"""
获取短链接跳转目标,以进行操作。
Args:
short_url(str): 短链接。
credential(Credential \| None): 凭据类。
Returns:
目标链接(如果不是有效的链接会报错)
返回值为原 url 类型
"""
credential = credential if credential else Credential()
try:
if settings.http_client == settings.HTTPClient.HTTPX:
resp = await get_session().head(url=str(short_url), follow_redirects=True)
else:
resp = await get_aiohttp_session().head(
url=str(short_url), allow_redirects=True
)
u = resp.url
return str(u)
except Exception as e:
raise e