bililive_api.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import requests
  2. import json
  3. from loguru import logger
  4. class BiliLiveAPI:
  5. def __init__(self, base_url="https://bililive.sv-v.magong.site"):
  6. self.base_url = base_url
  7. def get_info(self):
  8. response = requests.get(self.base_url + "/api/info")
  9. return response.json()
  10. def get_lives(self):
  11. response = requests.get(self.base_url + "/api/lives")
  12. return response.json()
  13. def get_live_by_id(self, id):
  14. response = requests.get(self.base_url + f"/api/lives/{id}")
  15. return response.json()
  16. '''
  17. url
  18. - https://live.douyin.com/403624505949
  19. return
  20. - 正常添加 [{'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}]
  21. - 重复添加 None
  22. - 添加了一个不存在的房间号 [{'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}]
  23. - 🎈🎈 https://live.douyin.com/{任意数字} ,仍会添加成功,并返回成功的数据,只不过它无法识别到主播信息
  24. '''
  25. # 添加重复的 url 会返回 None
  26. # 正常返回:
  27. def add_live(self, url, listen=True):
  28. data = json.dumps([{"url": url, "listen": listen}])
  29. logger.debug(f"POST {self.base_url}" + "/api/lives" + f"\n{data}")
  30. response = requests.post(self.base_url + "/api/lives", data=data)
  31. logger.debug(f"response.status_code: {response.status_code}")
  32. return response.json()
  33. def delete_live_by_id(self, id):
  34. response = requests.delete(self.base_url + f"/api/lives/{id}")
  35. return response.json()
  36. def start_listen_live_by_id(self, id):
  37. response = requests.get(self.base_url + f"/api/lives/{id}/start")
  38. return response.json()
  39. def stop_listen_and_record_live_by_id(self, id):
  40. response = requests.get(self.base_url + f"/api/lives/{id}/stop")
  41. return response.json()
  42. def get_config(self):
  43. response = requests.get(self.base_url + "/api/config")
  44. return response.json()
  45. def save_lives_to_config(self):
  46. response = requests.put(self.base_url + "/api/config")
  47. return response.json()
  48. def get_raw_config(self):
  49. response = requests.get(self.base_url + "/api/raw-config")
  50. return response.json()
  51. def save_raw_config(self, config):
  52. data = json.dumps({"config": config})
  53. response = requests.put(self.base_url + "/api/raw-config", data=data, logger=logger)
  54. return response.json()
  55. def main():
  56. api = BiliLiveAPI("https://bililive.sv-v.magong.site")
  57. # print(api.get_info())
  58. # print(api.get_lives())
  59. print(api.add_live('https://live.douyin.com/212140271'))
  60. if __name__ == "__main__":
  61. main()