躺着控制设备上的音乐播放(U型遥控器,Python 3)
2020-04-21 本文已影响0人
TypeY
DIY一个用手机遥控的音乐播放器控制器!
准备工作
1.准备一个音乐文件夹,并且创建我们的脚本,如图:
音乐文件夹
2.安装pygame库(windows 在 cmd 执行,linux 在终端执行,这是一个非常有用的库):
pip install pygame
3.在手机上安装U型遥控器
从酷安下载直接上脚本和注释
Python 脚本的后缀由.py修改为.pyw可以在Windows平台实现无弹窗运行
import os
from pygame import mixer #从pygame里面导入我们的音乐播放器
from socket import *
host = ''
shoujiip = '手机的ip'
port = 123 #设备接收端口一会填到手机
sendport = 9999 #手机的接收端口
bufsize = 1024
addr = (host,port)
addr1 = (shoujiip,sendport)
udpClient = socket(AF_INET,SOCK_DGRAM)
udpServer = socket(AF_INET,SOCK_DGRAM)
udpServer.bind(addr)
def findmus(): #找当前目录下的音乐,mp3和flac格式,aac不支持
L=[]
l=os.listdir()
for f in l:
if f.find(".mp3")==len(f)-4 or f.find(".flac")==len(f)-5:
L.append(f)
return(L)
def play(x): #播放函数,防止无法载入造成奔溃,这里用了try和except
try:
mixer.music.load(x)
mixer.music.play()
return 0
except:
return 1
def send(sdata): #向手机发送消息的函数
sdata = sdata.encode()
udpClient.sendto(sdata,addr1)
def Is_Int(s): #判断str是否可以转换为int
try:
int(s)
return True
except ValueError:
return False
L=findmus() #创建一个空的列表用来存放所有找到的音乐
mixer.init() #启动播放器
nowplaying=0 #用来定位当前正在播放的歌曲
print("播放器已启动")
print("找到以下歌曲:")
n=0
for i in L: #列一个歌单
n=n+1
print(str(n)+"."+i)
while 1: #熟悉的循环,大家可以自定义对接收到的命令的处理
data,addr = udpServer.recvfrom(bufsize)
data=data.decode()
if data=="退出":
udpServer.close()
mixer.quit()
exit(0)
elif data=="有什么歌":
n=0
for i in L:
n=n+1
send(str(n)+"."+i)
elif Is_Int(data):
if play(L[int(data)-1])==0:
nowplaying=int(data)-1
send("正在播放:"+L[nowplaying])
elif data=="播放":
try:
mixer.music.play()
except:
play(L[nowplaying])
send("正在播放"+L[nowplaying])
elif data=="暂停":
mixer.music.pause()
elif data=="停":
mixer.music.stop()
elif data=="下一首":
nowplaying=nowplaying+1
if nowplaying>=len(L):
nowplaying=0
play(L[nowplaying])
send("正在播放"+L[nowplaying])
elif data=="上一首":
nowplaying=nowplaying-1
if nowplaying<0:
nowplaying=len(L)-1
play(L[nowplaying])
send("正在播放"+L[nowplaying])
else:
send("对不起,现在只支持这些指令:有什么歌,数字点播,播放,暂停,停,下一首,上一首,退出")
理论上,上面的脚本复制粘贴,改好ip地址和端口即可运行在任何平台
执行结果(Windows) 执行结果(U型遥控器)
当然,最方便的还是把命令都做成按键啦
按键式遥控器