躺着控制设备上的音乐播放(U型遥控器,Python 3)

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下载

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 上一篇:编程入门16:Python时间操作 我们知道一个系统可以安装多个Python版本例如3.6、3.7,各自以...
    starglow_leo阅读 3,721评论 1 8
  • 最近开始过忙碌的社会人生活了,从结论上说我终于如愿以偿地浸泡在人类、感情、生活在别处这些我在实验室里像缺氧的鱼一样...
    榎木津雪绘阅读 617评论 0 1
  • 好的人生是不负此生 女生不是结婚了就赢了,不是生下两个孩子儿女双全就赢了。 “人人都可以吃喝拉撒,人人都可以生殖繁...
    淘淘_f825阅读 342评论 0 0
  • 质量是一个企业的生命,是一个企业 核心竞争力 的集中表现,也一个企业 品牌和形象的重要决定因素。同时, 一个企业质...
    云中燕_04f1阅读 543评论 0 0
  • 孩童的时候,父亲一人工作,又要赡养老家的奶奶还要供养5个孩子上学,家里的生活条件相当的拮据,有一对北京来的下乡知青...
    满身烟雨阅读 867评论 12 33