python写音乐播放器_python 模拟(简易)音乐播放器
模擬一個(gè)在線(xiàn)音樂(lè)播放程序
# 1, 使用C/S架構(gòu)來(lái)進(jìn)行設(shè)計(jì),分別寫(xiě)出客戶(hù)端和服務(wù)器程序
# 2,客戶(hù)端鏈接服務(wù)器之后,服務(wù)器向用戶(hù)提示可以選擇的歌曲列表,用戶(hù)選擇后開(kāi)始播放(音頻文件存放在本地即可)
#思路是通過(guò)socketserver ,客戶(hù)端發(fā)送指令到服務(wù)端,服務(wù)端連接數(shù)據(jù)庫(kù)查到歌曲名字路徑返回給客戶(hù)端,客戶(hù)端通過(guò)pygame模塊查找到歌曲路徑 播放歌曲
#創(chuàng)建數(shù)據(jù)表,插入歌曲名字和路徑
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"),("世間美好與你環(huán)環(huán)相扣","D:\\\\老男孩\\\\世間美好與你環(huán)環(huán)相扣.mp3")
服務(wù)端:
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()
客戶(hù)端:
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) # 通過(guò)路徑path 加載
pygame.mixer.music.play() #在程序運(yùn)行中會(huì)播放
# print("正在播放的歌曲:%s" % name)
time.sleep(100) #讓程序保持運(yùn)行狀態(tài)
while True:
name =input("請(qǐng)輸入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 播放音效
#山楂樹(shù)之戀 世間美好與你環(huán)環(huán)相扣 味道
總結(jié)
以上是生活随笔為你收集整理的python写音乐播放器_python 模拟(简易)音乐播放器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python区块链开发_Fabric区块
- 下一篇: excel可视化图表插件_Axure 教