import requests import json from loguru import logger class BiliLiveAPI: def __init__(self, base_url="https://bililive.sv-v.magong.site"): self.base_url = base_url def get_info(self): response = requests.get(self.base_url + "/api/info") return response.json() def get_lives(self): response = requests.get(self.base_url + "/api/lives") return response.json() def get_live_by_id(self, id): response = requests.get(self.base_url + f"/api/lives/{id}") return response.json() ''' url - https://live.douyin.com/403624505949 return - 正常添加 [{'id': 'ee9b0b1908cfece9fa6c38f7f94cd098', 'live_url': 'https://live.douyin.com/403624505949', 'platform_cn_name': '抖音', 'host_name': '芗里香亲(1号)', 'room_name': '进来看看,你空手出去算我输', 'status': False, 'listening': True, 'recording': False, 'initializing': False, 'audio_only': False}] - 重复添加 None - 添加了一个不存在的房间号 [{'id': '25e7daffbd502c376ba98567950e86c7', 'live_url': 'https://live.douyin.com/33223521594974', 'platform_cn_name': '抖音', 'host_name': '', 'room_name': '', 'status': False, 'listening': True, 'recording': False, 'initializing': False, 'audio_only': False}] - 🎈🎈 https://live.douyin.com/{任意数字} ,仍会添加成功,并返回成功的数据,只不过它无法识别到主播信息 ''' # 添加重复的 url 会返回 None # 正常返回: def add_live(self, url, listen=True): data = json.dumps([{"url": url, "listen": listen}]) logger.debug(f"POST {self.base_url}" + "/api/lives" + f"\n{data}") response = requests.post(self.base_url + "/api/lives", data=data) logger.debug(f"response.status_code: {response.status_code}") return response.json() def delete_live_by_id(self, id): response = requests.delete(self.base_url + f"/api/lives/{id}") return response.json() def start_listen_live_by_id(self, id): response = requests.get(self.base_url + f"/api/lives/{id}/start") return response.json() def stop_listen_and_record_live_by_id(self, id): response = requests.get(self.base_url + f"/api/lives/{id}/stop") return response.json() def get_config(self): response = requests.get(self.base_url + "/api/config") return response.json() def save_lives_to_config(self): response = requests.put(self.base_url + "/api/config") return response.json() def get_raw_config(self): response = requests.get(self.base_url + "/api/raw-config") return response.json() def save_raw_config(self, config): data = json.dumps({"config": config}) response = requests.put(self.base_url + "/api/raw-config", data=data, logger=logger) return response.json() def main(): api = BiliLiveAPI("https://bililive.sv-v.magong.site") # print(api.get_info()) # print(api.get_lives()) print(api.add_live('https://live.douyin.com/212140271')) if __name__ == "__main__": main()