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

# 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 播放音效

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

python写音乐播放器_python 模拟(简易)音乐播放器相关推荐

  1. Android音乐App开发准备( 简易音乐 一 )

    Android音乐App开发准备( 简易音乐 一 ) 关于 第一步,获取音乐来源 第二步,开发环境 第三步,引用三方 第四步,添加唯一进程App.java 关于   年前学习网易云因为app,想着学习 ...

  2. Android音乐App开发准备( 简易音乐 二 )

    Android音乐App开发准备( 简易音乐 二 ) 关于 效果: 编写Activity基类-BaseActivity 修改启动页 复用的标题栏 关于   第一篇看Android音乐App开发准备( ...

  3. 我的Android进阶之旅------Android MediaPlayer播放mp3的实例--简易mp3播放器

    大家好我们今天研究的是Android中很重要也最为复杂的媒体播放器---MediaPlayer. Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上 ...

  4. python中的英文歌_Python 爬网易音乐云歌曲,MV

    业余练习之作,不喜欢也别喷.有错可以赐教.谢谢 import requests import sys from bs4 import BeautifulSoup import json import ...

  5. JAVA usb发卡器_USB模拟键盘输出发卡器

    原标题:USB模拟键盘输出发卡器 1.1 产品简介 广州盛炬智能科技的发卡器FC2-A是一款模拟键盘输出发卡器,采用USB无驱安装,即插即用,通过刷卡方式,卡片数据直接输出到电脑桌面光标处.支持读取M ...

  6. android开发音乐播放器,Android开发简易音乐播放器

    这里介绍一个简易的音乐播放器,供大家参考,具体内容如下 效果图如下: 但是,由于这是一个简易版的音乐播放器,所播放的音乐只有一首,且被写死,但,操作却十分简单,方便理解! 这是代码的主要设计: 音乐主 ...

  7. python制作视频播放器_Python使用PyQT制作视频播放器!专属播放器~

    原标题:Python使用PyQT制作视频播放器!专属播放器~ 最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/Tk和QT.相比之下,我觉得PyQT使用 ...

  8. python操作网页flash视频_Python爬取FLASH播放器中的资料

    Python爬取FLASH播放器中的资料. 一.首先了解一下AMF协议:AMF(Action Message Format)是Flash与服务端通信的一种常见的二进制编码模式,其传输效率高,可以在HT ...

  9. python实现自动点击器_Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)...

    一.准备工作: 安装pywin32,后面开发需要pywin32的支持,否则无法完成与windows层面相关的操作. pywin32的具体安装及注意事项: 1.整体开发环境: 基于windows7操作系 ...

最新文章

  1. Spring学习总结(18)——Spring整合Mysql数据库一主多从、多主多从配置
  2. docker基础介绍
  3. open-fopen read-fread等的不同 .
  4. C++和C#编写调用COM组件
  5. Linux有趣指令(二)
  6. 微软开源Scalar,提升操作巨型Git仓库的速度
  7. java 接口数据类型_Java 数据类型(中): 抽象类与接口
  8. C# 与C++的数据转换
  9. CSS深入浅出(三)
  10. 灯珠电路图_可充电led台灯电路图
  11. 使用pymongo需要手动关闭MongoDB Connection吗?
  12. python判断火车票座位是否靠窗_python如何判断购买火车有没有对应的列车,没有就输出未查询到对应的车次?...
  13. 数组中第三大的数 leetcode 414
  14. echarts大屏模板_大屏数据展示模板智慧城市
  15. MongoDB学习(黑马教程)-5-数据库MongoDB的验证
  16. 基于STM32MP157调试MIPI-DSI屏幕
  17. 同义词转换不再有效_中考英语丨初中英语句型转换大全
  18. 如何高效处理面板数据
  19. ubifs 分区格式化方法
  20. 二、《云原生 | Kubernetes篇》Kubernetes学习-K8S安装篇-Kubeadm安装高可用K8S集群--生产环境

热门文章

  1. Python 必背的42个常见单词,看看你记住了几个?
  2. java第一阶段知识_坚持:学习Java后台的第一阶段,我学习了那些知识
  3. linux下cmake-gui的安装
  4. 考研 考研爬虫大数据分析专业热度
  5. M 点滑动平均 Python 实现
  6. java——自己实现基础的线程池及带有任务数过多拒绝策略、线程池销毁、自动扩充线程数量及闲时自动回收线程等操作的改进版线程池
  7. wegame饥荒一直连接中_腾讯WeGame注册用户超3亿 国产游戏销量超500万
  8. 在EXT中前后台传数据的方式
  9. Mysql 和oracle的区别
  10. 中秋我用CSS写了个嫦娥奔月