找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 156|回复: 0

基于C#的在线音乐播放器的设计与实现

[复制链接]

2万

主题

128

回帖

10万

积分

管理员

积分
105776
发表于 2021-10-14 21:05:42 | 显示全部楼层 |阅读模式 IP:山东省 移动/数据上网公共出口

登录后更精彩...O(∩_∩)O...

您需要 登录 才可以下载或查看,没有账号?立即注册

×
基于C#的在线音乐播放器的设计与实现


摘要
        本文给出了在线音乐播放器系统的背景与分析,介绍了软件使用的技术与开发工具,描述了软件的功能与使用方法。
        This paper gives the background and analysis of theonline music player system, introduces the technology and development toolsused in the software, and describes the function and usage of the software.
        关键词: 工厂模式;四层架构;WEBAPI;扁平化设计;B/S;C/S
1 项目分析
        现在独家版权的音乐越来越多,有些歌只能在网易云上听,有些只能在QQ音乐上听,当我们听歌时难免会需要跑全网去搜索,甚至要下载所有音乐的客户端,而且官方的客户端往往有着一大堆广告以及鸡肋的功能,比如游戏,直播等.现开发一款绿色软件整合全网音乐,方便检索各大音乐平台的信息.
1.1 可行性分析
        主要从对项目的可行性进行分析,各大音乐平台的歌曲除了付费以及下架的以外都可以利用技术手段爬取到.
1.2 技术分析
        技术上的可行性分析要考虑软件技术能否实现功能。此外,还要考虑开发人员的水平以及官方的反爬虫机制,本人通过在老师指导下以及自学WEB抓包,WEBAPI以及 ASP.NET,认为可以完成.
1.3 项目总结
        通过以上两点的分析, 编写或开发这个系统是可行的.
第2章 系统分析
       本章节内容主要是关于在线音乐播放器的系统的分析的工作,其中一共包含了三个内容,系统开发背景,系统功能概述,系统开发工具.
2.1系统开发背景
        现在独家版权的音乐越来越多,有些歌只能在网易云上听,有些只能在QQ音乐上听,当我们听歌时难免会需要跑全网去搜索,甚至要下载所有音乐的客户端,而且官方的客户端往往有着一大堆广告以及鸡肋的功能,比如游戏,直播等.现开发一款绿色软件整合全网音乐,方便检索各大音乐平台的信息.
2.2 系统功能概述
2.3系统开发工具
2.3.1 系统开发工具选取
VisualStudio 2012
SQL Server2012
Fidder
GoogleChrome
InternetInformation Services (IIS)
jexus
2.3.3 系统开发工具简介
        1.Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品.VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具,代码管控工具,集成开发环境(IDE)等等.所写的目标代码适用于微软支持的所有平台,包括Microsoft Windows,Windows Mobile,Windows CE,.NET Framework,.NET CompactFramework和Microsoft Silverlight 及Windows Phone.
        2.SQL Server 是Microsoft 公司推出的关系型数据库管理系统.具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2012 的大型多处理器的服务器等多种平台使用.Microsoft SQL Server 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理.Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序.
        3. Fiddler是位于客户端和服务器端之间的代{过}{滤}理,也是目前最常用的抓包工具之一 .它能够记录客户端和服务器之间的所有 请求,可以针对特定的请求,分析请求数据,设置断点,调试web应用,修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器.
        4. Google Chrome是一款由Google公司开发的网页浏览器,该浏览器基于其他开源软件撰写,包括WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。
        5. Internet信息服务(Internet Information Services,简写IIS,互联网信息服务)可以在 Internet 或 Intranet 上非常容易地发布信息。IIS 包含许多管理网站和 Web 服务器的功能。而且具有像 Active Server Pages (ASP)一样的编程功能,您可以利用它创建并配置可升级的、灵活的 Web 应用程序。系统不会默认安装 IIS,但是可以通过“控制面板”中的“添加/删除程序”对话框添加。
        6. Jexus是一款Linux平台上的高性能WEB服务器和负载均衡网关,以支持ASP.NET、ASP.NET CORE、PHP为特色,同时具备反向代{过}{滤}理、入侵检测等重要功能。可以这样说,Jexus是.NET、.NET CORE跨平台的最优秀的宿主服务器,如果我们认为它是Linux平台的IIS,这并不为过,因为,Jexus不但非常快,而且拥有IIS和其它Web服务器所不具备的高度的安全性,这是政府机构和重要企业对web服务器最必要也是最重要的品质需求。
第3章 系统设计
1.汇聚全网音乐
        将主流音乐平台的音乐整合到一个软件中.
2.采用C/S与B/S架构,搭建WEBAPI解析音乐
        每个音乐平台都有不同的音乐解析算法,而且不断更新,当算法更新时,使用WEBAPI可以避免客户端频繁更新.
3.动态LRC歌词显示
        实现LRC歌词字幕的动态展示与编辑功能.
4.下架歌曲自动重新查询
        各大音乐平台曲库并不完美,遇到下架歌曲在所难免,这时候让机器帮助用户重新搜索全网
5.歌曲收藏

6.新歌,热歌推送
        本软件可以实现全网音乐查询,但当用户仅使用本软件听歌的话可能不会了解最近就行的歌,所以歌曲推送功能必不可少
7.扁平化简约设计
        官方的音乐客户端界面难免会做的花里胡哨,复杂的功能会让用户摸不清头脑,本软件将只保留必要的功能
8.提供WEBAPI
        软件封装了各大音乐平台的api,搭建了属于自己的api,可以使用第三方软件调用
9.自动检查更新
        软件每次启动就会从服务器获取更新信息,保持客户端是最新的.
10.下载功能
        软件可以将音乐下载到本地磁盘或U盘上,只要能播放的歌曲理论上都能下载,支持媒体文件id3信息自动修改,专辑封面下载以及lrc动态歌词下载.
       注:为了保护音乐版权,公测版已阉割掉本功能
11.批量操作
       即批量下载,批量收藏功能.
12.音乐筛选
        智能筛选结果,可以过滤掉翻唱,现场版,DJ版,伴奏等
3.3用例图

3.3用例图
3.4 类图
3.4.1 实体类图
3.4.1实体类图
3.4.2数据访问层类图

3.4.1.2 据访问层类图

3.5 组件图

为了实现高内聚,低耦合的概念,本软件服务器端使用工厂模式三层架构,客户端使用工厂模式四层架构(在原有的三层架构添加一个业务逻辑层拓展),软件的各个组件说明如下:
划线为非原创组件
底层组件:
Helper.dll
帮助类库,包含封装好的网络爬虫,字符串提取,数据类型转换,数据库操作等方法
ZSMusic.Model.dll
实体类库,包含项目所用的实体
ZSMusic.DAL.dll
数据访问层:包含各大音乐平台的解析算法以及用户管理方法
ZSMusic.IDAL.dll
接口类库
ZSMusic.DALFactory.dll
工厂类库
ZSMusic.BLL.dll
业务逻辑层,包含封装好的音乐解析以及用户管理方法
Newtonsoft.Json.dll
.Net中开源的Json序列化和反序列化工具
服务器端组件:
WEB.dll
search.aspx
歌曲搜索api
getdata.aspx
歌曲解析api
research.aspx
歌曲精准查找api
demo.aspx
网页版演示
detail.aspx
音乐详情页面
客户端组件:
ZSMusic.BLLEx.dll
业务逻辑层拓展,对业务逻辑层以及数据访问层的二次封装,方便客户端调用
ZSMusic.Winform.exe
客户端主程序
SunnyUI.dll
基于Winform的开源的控件库
ZSMusic.Downloader.exe
音乐下载器
Win32Helper.dll
对部分win32 api的封装
AxInterop.WMPLib.dll&Interop.WMPLib.dll
Activex控件Windows Media Player
taglib-sharp.dll
开源的.NET媒体文件操作组件
zxing.dll
开源的二维码生成器
组件图:


3.5.1 服务器端组件图


3.5.2 客户端组件图

3.6 时序图


3.6.1 音乐解析时序图


3.6.2 检查更新时序图

3.8 用例规约


第4章 系统功能实现
本章节内容主要是关于在线音乐播放器的实现.
4.1搜索功能
可搜索网易云,酷我,酷狗,QQ音乐四大平台,也可以聚合搜索,支持QQ音乐,网易云,酷狗平台歌单解析

图4.1.1 搜索功能图

图4.1.2 歌单解析功能图
4.2播放功能
支持顺序播放,随机播放,单曲循环以及列表循环,支持lrc动态歌词显示,调速等功能

图4.2 播放功能图
4.3 歌单推送功能
推送网易云飙升榜,热歌榜,新歌榜,原创榜,抖音排行榜以及个人推荐的音乐

图4.2 歌单推送功能图
4.4 迷你播放器功能
提供半透明窗体迷你播放器桌面歌词功能

图4.3 迷你播放器功能图
4.5 设置功能
提供软件设置功能




图4.5设置界面
4.5.1 通用设置
每页显示数量:设置每页搜索最多显示的结果数量,聚合搜索由于存在去重,搜索到的数量可能低于设置的值.
重新查找精确度:当选择的歌曲无法解析到播放地址时,软件将自动搜索全网,与原曲名字符串相似度进行比较,相似度大于此值并且可以解析到播放地址时将其添加到临时列表,最终返回临时列表中相似度最大的歌曲,若仍无法搜到则抛出异常.
退出到托盘:点击关闭按钮时不是关闭软件,而是最小化托盘.
退出时显示提示:设置点击关闭按钮时是否弹出提示
自动检查更新:自动从服务器获取最新版本信息
启动后自动播放:在软件启动后自动播放第一首
4.5.2 网络设置
每次请求超时时间:每次请求超过此时间将视为解析失败.
4.5.3 个性化
主题:设置软件主题(SunnyUI).
窗体透明度:窗体的Opacity属性,值越大越不透明.
总在最前:窗体的TopMost属性,设置窗体置顶.
问候语:设置是否启用问候语功能.
迷你播放器:是否启用迷你播放器.
4.5.4 高级选项
窗体设置:使用PropertyGrid空间编辑主窗体属性
下载设置:
边听边存:双击歌曲列表播放同时下载.
同时下载歌词:下载歌曲的同时下载lrc歌词.
同时下载封面:下载歌曲的同时下载专辑封面.
文件命名格式:设置下载的文件命名格式例如”{1} – {2}”为”艺术家 – 曲名”.
下载路径:下载歌曲的路径,默认为用户/音乐文件夹.
开发者选项(测试版专有)
清理内存:执行GC.Collect();
API调试模式:使用服务器端WEBAPI进行解析(与本地解析是等效的).
服务器地址:使用API调试模式时所用的服务器地址

4.5.5 lrc歌词编辑器
编辑lrc动态歌词,该功能尚在开发中

图4.5lrc编辑器
4.6 批量操作功能
提供歌曲批量收藏,添加,下载功能.下载使用独立下载器,不影响主程序运行..

图4.6批量操作
4.7 网页版
提供网页版供手机使用

图4.7网页版
4.8 检查更新
软件每次启动就会从服务器获取更新信息,保持客户端是最新的.

图4.8检查更新
4.9 调试模式
1.调试模式不会自动检查更新
2.调试模式点击关闭按钮直接退出软件而不是弹窗提示
3.调试模式没有社会主义核心价值观点击特效
4.调试模式可直接进入高级设置
5.调试模式总是启用下载功能
6.调试模式总是加载ZSMusic.DAL.Info中的所有音乐源(注释掉的除外)
7.调试模式遇到异常直接抛出,而不是弹窗提示
本软件中判断调试模式的代码是
System.Diagnostics.Debugger.IsAttached
在Visual Studio中,调试的快捷键为F5,不调试的快捷键是Ctrl+F5
4.10 错误报告
软件在使用中难免会出现异常,此功能可以将错误信息发送给服务器,以便开发人员调试修复.

图4.10错误报告
4.11 配置模式
使用命令行参数-s可进入配置模式


图4.11配置模式
第5章 API文档
注:
1.所有参数必填
2.除搜索关键字外区分大小写
3.服务器地址开头包括http://,结尾没有/
获取可用音乐源(get请求):
服务器地址/musicsource.aspx
搜索(get请求):
服务器地址/search.aspx?source=音乐源&word=关键字&page=页码&num=每页返回数量
注:
1.音乐源为MusicSource的Value属性
2.页码从1开始
3.由于聚合搜索存在去重,所以搜索结果数量可能小于每页返回数量
4.关键字填写@+歌单id为歌单解析
音乐解析(get请求):
服务器地址/getdata.aspx?source=音乐源&id=歌曲编号&name=曲名&artist=艺术家&album=专辑&albumid=专辑编号&type=返回类型&redirect=是否重定向(0:否,1:是)
注:
1.返回类型:all:全部,url:播放地址,pic:封面地址,lrc:歌词
2.若开启重定向则跳转到地址,否则输出json信息
精确查找(get请求);
服务器地址/research.aspx?artist=艺术家&name=曲名&similar=精准度&type=返回类型&redirect=是否重定向(0:否,1:是)
注:
1.本功能用于一次性精确查找到你想听的歌,请指明曲名和艺术家,不区分大小写但不要有错别字
2.精准度为0-1
3.如果曲名或艺术家有符号,请使用英文符号
第6章 结束语

外链:https://yhcx.lanzoui.com/b0a45jdna 密码:cniy
请安装.net4.0运行库,客户端暂不支持server系列系统

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|IOTsec-Zone|在线工具|CTF WiKi|CTF平台汇总|CTF show|ctfhub|棱角安全|rutracker|攻防世界|php手册|peiqi文库|CyberChef|猫捉鱼铃|手机版|小黑屋|cn-sec|分享屋 ( 鲁ICP备2021028754号 )

GMT+8, 2024-5-6 19:57

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表