import json import time import requests from IPython.display import Audio,display from pydub import AudioSegment import os import random with open('audio.json', encoding="UTF-8") as f: audios = json.load(f) # print(type(audios[1])) # Output: dict # TODO: 优化代码 course_id = str(audios[1]['course_id']) os.makedirs(course_id, exist_ok=True) # 遍历 audio_list = [] for audio in audios: # t = random.randint(1, 10) # time.sleep(1) category = audio['category'] # requests.adapters.DEFAULT_RETRIES = 100 # 获取音频内容 i = 1 while(i >= 1): try: if category == "PLAIN_AUDIO": url = audio['attachment']['url'] # print(url) audio = requests.get(url) # print(audio.status_code) # display(Audio(audio.content)) audio_list.append(audio.content) # print(audio['attachment']['url']) # filename = os.path.basename(url) # with open(os.path.join(course_id, filename), 'wb') as file: # file.write(audio.content) # 获取文本笔记 elif category == "PLAIN_TEXT": text = audio['text'] print(text) with open(os.path.join(course_id, course_id + 'note.txt'), 'a') as file: file.write(text) file.write("\n") # 获取其他可下载附件 elif category != "MESSAGE_RECALL": # print(audio['category']) if 'attachment' in audio: url = audio['attachment']['url'] # print(audio['attachment']['url']) attachment = requests.get(url) filename = os.path.basename(url) with open(os.path.join(course_id, filename), 'wb') as file: file.write(attachment.content) # 获取其他内容 else: print(audio['category']) if 'attachment' in audio: print(audio['attachment']['url']) i = 0 except: i += 1 print("get file failed") if 'attachment' in audio: print(audio['attachment']['url']) # 处理获取所有音频文件 audio_seg_list = [] for i in audio_list: with open('temp.mp3', 'wb') as file: file.write(i) audio_part = AudioSegment.from_mp3('temp.mp3') # audio_part = AudioSegment.from_mp3(i) audio_seg_list.append(audio_part) # print(len(audio_seg_list)) x = sum(audio_seg_list) # 递归求和 # def sumOfList(list, size): # if (size == 0): # return 0 # else: # return list[size - 1] + sumOfList(list, size - 1) # # total = sumOfList(list1, len(list1)) audio_name = course_id + '/' + course_id + '.mp3' x.export(audio_name, format="mp3") display(Audio(audio_name))