Files
dt_audio/getAudio.py
alsesa b10fd0e112 merge
2024-10-14 17:39:25 +08:00

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))