600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > python播放音乐-python 模拟(简易)音乐播放器

python播放音乐-python 模拟(简易)音乐播放器

时间:2019-03-01 13:50:41

相关推荐

python播放音乐-python 模拟(简易)音乐播放器

模拟一个在线音乐播放程序

# 1, 使用C/S架构来进行设计,分别写出客户端和服务器程序

# 2,客户端链接服务器之后,服务器向用户提示可以选择的歌曲列表,用户选择后开始播放(音频文件存放在本地即可)

#思路是通过socketserver ,客户端发送指令到服务端,服务端连接数据库查到歌曲名字路径返回给客户端,客户端通过pygame模块查找到歌曲路径 播放歌曲

#创建数据表,插入歌曲名字和路径

CREATE TABLE t_music(

id INT PRIMARY KEY AUTO_INCREMENT,

NAME VARCHAR(32),

path VARCHAR(32)

)

SELECT * FROM t_music

INSERT INTO t_music(NAME,path) VALUE("味道","D:\\老男孩\\味道.mp3"),("世间美好与你环环相扣","D:\\老男孩\\世间美好与你环环相扣.mp3")

服务端:

import pymysql

import json

import socketserver

class MyServer(socketserver.BaseRequestHandler):

@classmethod

def conn(cls,name):

conn = pymysql.connect(host="localhost", user="root", password="123456", db="music", charset="utf8")

cur = conn.cursor()

sql = "select path from t_music where name="%s"" % name

cur.execute(sql)

data = cur.fetchall()

return data

@classmethod

def conn2(cls):

conn = pymysql.connect(host="localhost", user="root", password="123456", db="music", charset="utf8")

cur = conn.cursor()

sql = "select name from t_music"

cur.execute(sql)

data = cur.fetchall()

mydic = {}

lst = []

for i in data:

for j in i:

print(i[0])

lst.append(i[0])

for k, v in enumerate(lst):

mydic[k] = v

a = json.dumps(mydic)

return a

def handle(self):

while True:

data = self.request.recv(1024)

print("->client",data)

if data.decode() == "a":

# pass

self.request.send(self.conn2().encode())

else:

self.request.send(self.conn(data.decode())[0][0].encode())

socketserver.TCPServer.allow_reuse_address = True

server = socketserver.ThreadingTCPServer(("127.0.0.1", 8080), MyServer)

server.serve_forever()

客户端:

import socket

import json

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

client.connect(("127.0.0.1", 8080))

def broadcast(): # broadcast播放

import pygame

import time

pygame.mixer.init() #初始化

pygame.mixer.music.load(data1) # 通过路径path 加载

pygame.mixer.music.play() #在程序运行中会播放

# print("正在播放的歌曲:%s" % name)

time.sleep(100) #让程序保持运行状态

while True:

name =input("请输入a获取歌曲列表或歌曲名字播放:")

client.send(name.encode("utf-8"))

data1 = client.recv(1024).decode("utf-8")

if name =="a":

data2 =json.loads(data1)

print(data2)

else:

print(data1)

broadcast()

#使用 mixer 播放音效

#山楂树之恋 世间美好与你环环相扣 味道

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。