Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bilibili '未检索到此歌曲' 問題 #29

Open
kkc141 opened this issue Feb 18, 2024 · 1 comment
Open

Bilibili '未检索到此歌曲' 問題 #29

kkc141 opened this issue Feb 18, 2024 · 1 comment

Comments

@kkc141
Copy link

kkc141 commented Feb 18, 2024

status_manage.py內
子程序def getCidAndTitle, def getCidAndTitle中
呼叫程序 session.get 中未加入headers

注意headers中未包含bili_cookie 因為 getCidAndTitle 沒有 bili_cookie 輸入

更新後:


async def getCidAndTitle(duration: dict,
                         deltatime: int,
                         guild: str,
                         bvid: str,
                         session: ClientSession,
                         logger: Logger,
                         p: int = 1):
    url = 'https://api.bilibili.com/x/web-interface/view?bvid=' + bvid
    headers = {
        'Host': 'api.bilibili.com',
        'user-agent':
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36',

    }
    async with session.get(url=url, headers=headers, timeout=ClientTimeout(total=5)) as r:
        data = (await r.json())['data']
    title = data['title']
    cid = data['pages'][p - 1]['cid']
    duration[guild] = data['pages'][p - 1]['duration'] + deltatime
    mid = str(data['owner']['mid'])
    name = data['owner']['name']
    pic = data['pic']
    logger.warning(f"{cid},{title},{mid}")
    return str(cid), title, mid, name, pic

async def getAudio(guild: str, item: list, botid: str, bili_cookie:str,session: ClientSession):
    baseUrl = 'http://api.bilibili.com/x/player/playurl?fnval=16&'
    headers = {
        'Host': 'api.bilibili.com',
        'user-agent':
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36',

    }
    bvid, cid, title, mid, name, pic = item[0], item[1], item[2], item[
        3], item[4], item[5]
    url = baseUrl + 'bvid=' + bvid + '&cid=' + cid
    async with session.get(url=url, headers=headers, timeout=ClientTimeout(total=5)) as r:
        audioUrl = (await r.json())['data']['dash']['audio'][0]['baseUrl']
    headers = {
        'User-Agent':
        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:56.0) Gecko/20100101 Firefox/56.0',
        'Accept': '*/*',
        'Accept-Language': 'en-US,en;q=0.5',
        'Accept-Encoding': 'gzip, deflate, br',
        'Range': 'bytes=0-',
        'Referer':
        'https://api.bilibili.com/x/web-interface/view?bvid=' + bvid,
        'Origin': 'https://www.bilibili.com',
        'Connection': 'keep-alive',
        'cookie': bili_cookie
    }
    async with session.get(url=audioUrl,
                           headers=headers,
                           timeout=ClientTimeout(total=10)) as r:
        with open(guild + "_" + botid + ".mp3", 'wb') as f:
            while True:
                chunk = await r.content.read()
                if not chunk:
                    break
                f.write(chunk)
    return bvid, cid, title, mid, name, pic
@olitaire
Copy link

多谢大佬

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants