物联网IOT创意开发

躺着控制设备上的音乐播放(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型遥控器)

当然,最方便的还是把命令都做成按键啦

按键式遥控器

本教程到此就结束:)

APP下载

从酷安下载
上一篇下一篇

猜你喜欢

热点阅读