B站是一個流行的在線視頻分享平臺,它擁有大量的優秀資源,吸引了很多愛好者的關注。在這個動態的平臺上,有時我們想把自己喜歡的音頻下載下來,但B站并沒有提供直接下載的功能。為了應對這個問題,我們可以利用開放的API接口獲取音頻的JSON文件,然后使用Python腳本將其轉換成MP3音頻文件。
import requests import json import os import base64 import hashlib # 獲取JSON數據 def get_json_data(aid): url = f'https://api.bilibili.com/x/player/playurl?avid={aid}&qn=0&type=json' headers = { 'Referer': 'https://www.bilibili.com/', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299' } response = requests.get(url, headers=headers) data = json.loads(response.text.encode('utf8')) audio_data = data['data']['dash']['audio'][0] return audio_data # 下載MP3文件 def download_mp3(url, cid): headers = { 'Referer': 'https://www.bilibili.com/', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299' } response = requests.get(url, headers=headers) audio = response.content save_path = f'bilibili_{cid}.mp3' with open(save_path, mode='wb') as f: f.write(audio) # 主函數 def main(): aid = input('請輸入B站視頻編號:') audio_data = get_json_data(aid) url = audio_data['base_url'] cid = audio_data['codecid'] download_mp3(url, cid) if __name__ == '__main__': main()
以上的Python腳本包含了兩個主要函數。首先是 get_json_data,它可以通過API接口獲取音頻的JSON數據,并返回其中的音頻信息。然后是 download_mp3,它可以將上一步獲得的JSON文件中的音頻URL和其他信息用于下載MP3文件。當下載完畢后,我們就可以通過指定的文件名來保存它了。
這個Python腳本的實現很簡單,使用起來也很方便。它可以讓我們在B站上找到喜歡的音頻并下載到本地,從而方便我們使用和管理這些資源。希望本文的介紹對大家有所幫助。