- 开发这个功能是想通过哔哩哔哩直播弹幕,实现播放url音乐流的功能
- 当然这个只是播放音乐流的,可以自己完善一下对接文字转语音的功能,或者实现自动点歌
- 我这里调用的是网易云音乐播放,需要自己完善一下获取音乐的uid
- 创建脚本
touch main.py
- 写入内容
""" ------------------------------------------------- # !~/桌面/弹幕 # -*- coding: utf-8 -*- # @Time : 2023-08-20 21:57:14 # @Author : buyan<buyan@mail.qaqbuyan.com> # @Description : url音乐流播放 ------------------------------------------------- """ import io import eventlet import requests from pydub import AudioSegment from pydub.playback import play # 定义URL audio_url = 'http://music.163.com/song/media/outer/url?id=496869422.mp3' # 伪装请求头 headers={"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"} # 使用requests库获取URL内容 response = requests.get(audio_url,headers=headers) eventlet.monkey_patch() # 检查响应状态码 if response.status_code == 200: # 通过内容类型检查是否为音频文件 content_type = response.headers['Content-Type'] if content_type.startswith('audio'): # 将响应内容写入临时文件 with open('temp.mp3', 'wb') as f: f.write(response.content) # 使用pydub库打开音频文件 audio = AudioSegment.from_file('temp.mp3') #使用pydub将音频数据转换为AudioSegment对象 audio_data = AudioSegment.from_mp3(io.BytesIO(response.content)) # 如果需要以秒为单位的时长 duration_sec = len(audio) / 1000 print(f'音频时长(秒):{duration_sec} 秒') with eventlet.Timeout(duration_sec,False): play(audio_data) # 停止播放音频 play().stop() # 最后,删除临时文件 # os.remove('temp.mp3') else: print('URL不包含音频文件。') else: print('无法访问URL。')
- 运行脚本
python3 ./main.py
- 运行效果
- 1.png
【Python url音乐流播放】
qaq卟言2023-08-21 00:29:35
Python
开始
完结