94 lines
2.9 KiB
Python
Executable File
94 lines
2.9 KiB
Python
Executable File
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)) |