吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12593|回复: 76
收起左侧

[原创工具] [C#大作业]遗憾迟香音乐助手概念版1.0.0.6 beta

  [复制链接]
遗憾迟香 发表于 2020-12-27 11:12
本帖最后由 遗憾迟香 于 2021-3-18 10:46 编辑

V1.0.0.7更新时间:2021-03-18
优化解析算法,移除杂牌音乐源
支持播放列表快捷修改V1.0.0.6更新时间:2021-02-04
调整音乐源,移除虾米音乐
支持酷狗,QQ音乐歌单解析
V1.0.0.5
解决下载的歌词无法被其它软件识别
优化解析算法

V1.0.0.4 更新时间:2020-12-28
更换序列化格式为json
本次更新完毕将清空播放列表
建议更新,否则无法使用在线解析
本次更新需要替换所有文件

项目名称:遗憾迟香音乐助手(在线音乐播放器)
开发工具:Visual Studio 2012,Fidder         
开发语言:C#         
下载地址:https://yhcx.lanzoux.com/b0a3g7csh
密码:421t

WEBAPI已开放,返回格式:json
调用方法:
搜索:
http://服务器地址/search.aspx?source=音乐源&word=关键字&page=页码&num=每页返回数量
歌曲解析:
http://服务器地址/getdata.aspx?source=音乐源&id=音乐编号&name=曲名&artist=艺术家&album=专辑&picid=封面编号
精确查找(全网搜索,返回最优结果)(不区分大小写,不要有错别字):
http://服务器地址/research.aspx?name=歌名&artist=歌手名&similar=精确度(0-1)

快速解析(功能同上,搜索完毕会直接重定向)(不区分大小写,不要有错别字):

http://服务器地址/quickredirect.aspx?name=歌名&artist=歌手名&similar=精确度(0-1)
网页版:
http://服务器地址/demo.aspx

服务器地址:
free48752.hosthd1.ldvps.com
5.180.76.28:52864 (备用)
音乐平台对应音乐源名(区分大小写):

主流平台聚合:Together1
网易云音乐:Netease
酷我音乐:Kuwo
酷狗音乐:Kugou
QQ音乐:QQ
虾米音乐:Xiami
咪咕音乐:Migu

需求分析
现在独家版权的音乐越来越多,有些歌只能在网易云上听,有些只能在QQ音乐上听,当我们听歌时难免会需要跑全网去搜索,甚至要下载所有音乐的客户端,现开发一款绿色软件整合全网音乐,方便检索各大音乐平台的信息.该软件的主要功能如下:
1.汇聚全网音乐
将主流音乐平台的音乐整合到一个软件中.
支持平台:
网易云音乐
酷我音乐
酷狗音乐
QQ音乐
虾米音乐
咪咕音乐
......
暂不支持无损,音质128-320k不等
2.采用C/S架构,搭建WEBAPI解析音乐
每个音乐平台都有不同的音乐解析算法,而且不断更新,当算法更新时,使用WEBAPI可以避免客户端频繁更新
3.动态LRC歌词显示
         实现LRC歌词字幕的动态展示与编辑功能.
4.下架歌曲自动重新查询
         各大音乐平台曲库并不完美,遇到下架歌曲在所难免,这时候让机器帮助用户重新搜索全网
5.新歌,热歌推送
         本软件可以实现全网音乐查询,但当用户仅使用本软件听歌的话可能不会了解最近就行的歌,所以歌曲推送功能必不可少
6.扁平化简约设计
         官方的音乐客户端界面难免会做的花里胡哨,复杂的功能会让用户摸不清头脑,本软件将只保留必要的功能
用例规约(部分)
  用例名称:  
搜索
用例说明:
搜索音乐
前置条件:
进入搜索界面
基本事件流:
1.进入搜索界面,输入关键字,选择音乐源
  2.点击搜索按钮
  3.判断输入的内容是否为空,若不为空,执行4
  4.客户端请求服务器,服务器返回搜索结果
其它事件流:
异常事件流
1.输入的关键字为空,则不会请求服务器
  2.搜索失败,显示错误信息
后置条件
搜索成功,显示结果

  用例名称:  
解析音乐
用例说明:
加载出音乐播放地址
前置条件:
双击音乐列表
基本事件流:
1.双击搜索结果列表
  2.客户端请求服务器,服务器返回解析结果
其它事件流:
异常事件流
所选音乐为付费或下架音乐,无法解析,自动搜索全部音乐源
后置条件
搜索成功,显示结果
本软件与传统数据库编程的区别
     
数据库编程
本软件
基本功能
增删改查
只有查
查询方式
直接使用SQL语句查询
通过GET/POST请求公开的WEBAPI,利用其返回的JSON/XML中提取数据,不同音乐平台API与解析算法不同
功能设计1.用例图
image.png
2.音乐平台类图
image.png
3.解析模式时序图
image.png
4.程序组件图(已省略三层架构)
image.png
5.界面设计
搜索界面
2020-12-27 10-13-42.png
播放界面
2020-12-27 10-12-35.png
迷你播放器
2020-12-27 10-13-2.png
设置界面
2020-12-27 10-14-9.png
备用服务器地址:
5.180.76.28:52864
host906116786.s479.pppf.com.cn
批量操作界面
2020-12-27 10-21-13.png
歌单解析(目前仅支持网易)
2020-12-27 10-20-29.png
支持全民k歌解析,输入@+歌手uid(不是k歌号)
2020-12-27 10-22-58.png
内置lrc动态歌词编辑器(有待完善)
2020-12-27 10-15-20.png
结束语
从小我就对计算机感兴趣,喜欢研究一些it方面的知识.
初三下学期,我从网上下载了一款名叫<音乐间谍>的软件,但下载之后却打不开,显示需要安装.NET Framework,我就有个疑惑,为什么主流音乐软件不需要.NET?这个问题我困惑了好久,直到中考完的暑假我才明白,这与软件功能无关,与软件所用的编程语言有关, 需要.NET Framework的程序都是用C#(当时只管叫”C”)编的.
此处省略800字
l 致谢:感谢提供过帮助的同学和提供过指导的教师。
参考文献:[1] 李春葆 曾平 喻丹丹.C#程序设计教程[M]. 北京:清华大学出版社,2019.1[2]   何玉洁.数据库原理与应用教程[M].北京:机械工业出版社,2016.4
附录: 主要源程序
[C#] 纯文本查看 复制代码
    /// <summary>[/size]
[size=26.6667px]    /// 音乐实体[/size]
[size=26.6667px]    /// </summary>[/size]
[size=26.6667px]    [Serializable()][/size]
[size=26.6667px]    public class Music[/size]
[size=26.6667px]    {[/size]
[size=26.6667px]        /// <summary>[/size]
[size=26.6667px]        /// ID[/size]
[size=26.6667px]        /// </summary>[/size]
[size=26.6667px]        public string Id { get; set; }[/size]
        //曲名
        public string Name { get; set; }
        /// <summary>
        /// 艺术家
        /// </summary>
        public string Artist { get; set; }
        /// <summary>
        /// 专辑
        /// </summary>
        public string Album { get; set; }
        /// <summary>
        /// 封面ID
        /// </summary>
        public string PicId { get; set; }
        /// <summary>
        /// 封面链接
        /// </summary>
        public string PicUrl { get; set; }
        /// <summary>
        /// 歌词
        /// </summary>
        public Lyric Lrc { get; set; }
        /// <summary>
        /// 播放地址
        /// </summary>
        public string Url { get; set; }
        /// <summary>
        /// 来源
        /// </summary>
        public string Source { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public object Tag { get; set; }
}

[C#] 纯文本查看 复制代码
    /// <summary>
    /// 数据访问层接口
    /// </summary>
    public interface IMusic
    {
        /// <summary>
        /// 搜索
        /// </summary>
        /// <param name="word">关键字</param>
        /// <param name="page">页码</param>
        /// <param name="num">搜索数量</param>
        /// <returns></returns>
        List<Music> Search(string word, int page, int num);
        /// <summary>
        /// 歌单解析
        /// </summary>
        /// <param name="id">歌单号</param>
        /// <returns></returns>
        List<Music> SearchCollection(string id);
        /// <summary>
        /// 获取信息
        /// </summary>
        /// <param name="m">实体</param>
        /// <returns></returns>
        bool GetData(Model.Music m);
        /// <summary>
        /// 获取歌词
        /// </summary>
        /// <param name="m">实体</param>
        void GetLrc(Model.Music m);
    }

[C#] 纯文本查看 复制代码
namespace DALFactory
{
    public static class DataAccess
    {
        public static IDAL.IMusic CreateMusic(string source)
        {
            if (source.Contains('.'))
            {
                return (IDAL.IMusic)(Assembly.Load("DAL").CreateInstance(source));
            }
            else { return (IDAL.IMusic)(Assembly.Load("DAL").CreateInstance("DAL." + source)); }
        }
    }
}

[C#] 纯文本查看 复制代码
    /// <summary>
    /// 业务逻辑层
    /// </summary>
    public class MusicBLL
    {
        /// <summary>
        /// 数据访问层对象
        /// </summary>
        public IMusic Source { get; set; }
        /// <summary>
        /// BLL有参构造
        /// </summary>
        /// <param name="s"></param>
        public MusicBLL(string s)
        {
            Source = DALFactory.DataAccess.CreateMusic(s);
        }
        /// <summary>
        /// 默认构造
        /// </summary>
        public MusicBLL()
        { }
        /// <summary>
        /// 搜索
        /// </summary>
        /// <param name="word">关键字</param>
        /// <param name="page">页码</param>
        /// <param name="num">返回数量</param>
        /// <returns></returns>
        public List<Music> Search(string word, int page, int num)
        {
            List<Music> list = new List<Music>();
            if (string.IsNullOrEmpty(word.Trim()))
            { return list; }
            list = word.Contains("@") ? 
            SearchCollection(word.Substring(1, word.Length - 1))
            : Source.Search(word, page, num);
            return list;
        }
        /// <summary>
        /// 歌单解析
        /// </summary>
        /// <param name="id">歌单ID</param>
        /// <returns></returns>
        public List<Music> SearchCollection(string id)
        {
            List<Music> list = Source.SearchCollection(id);
            return list;
        }
        /// <summary>
        /// 重新搜索
        /// </summary>
        /// <param name="s">下架的歌曲</param>
        /// <param name="similar">最低准确率</param>
        /// <returns></returns>
        public Music ReSearch(Music s, double similar)
        {
            string[] source = Info.ResearchSource;
            List<Music> list = new List<Music>();
            List<Music> result = new List<Music>();
            foreach (string i in source)
            {
                try
                {
                    IMusic dal = DALFactory.DataAccess.CreateMusic(i);
                    list = dal.Search(s.Name, 1, 30);
                    foreach (Music j in list)
                    {
                        i.ToString();
                        double num = j.SimilarWith(s);
                        if (num >= similar)
                        {
                            j.Tag = num;
                            if (dal.GetData(j))
                            {
                                if ((double)j.Tag >= 0.99)
                                {
                                    s = j;
                                    return j;
                                }
                                result.Add(j);
                            }
                        }
                    }
                }
                catch (Exception)
                {

                }
            }
            if (result.Count == 0)
            { throw new Exception("对不起,未能找到你想要的歌曲资源"); }
            return result.Aggregate((u, v) => (double)u.Tag < (double)v.Tag ? u : v);
        }
        /// <summary>
        /// 获取信息
        /// </summary>
        /// <param name="m"></param>
        /// <returns></returns>
        public bool GetData(Model.Music m)
        {
            if (HttpHelper.CheckUri(m.Url))
            { return true; }
            return Source.GetData(m);
        }
        /// <summary>
        /// 获取歌词
        /// </summary>
        /// <param name="m"></param>
        public void GetLrc(Model.Music m)
        {
            Source.GetLrc(m);
        }
    }

免费评分

参与人数 47吾爱币 +59 热心值 +43 收起 理由
老胸吃西瓜 + 1 + 1 谢谢@Thanks!
cstyyy + 1 谢谢@Thanks!
song_496 + 1 + 1 谢谢@Thanks!
yunwu111 + 1 + 1 热心回复!
cnljm + 1 + 1 可以增加音质选择和搜索专辑功能吗?
列明 + 1 + 1 文章格式挺好,有水平啊!
yanghuiqq168 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Lthero + 1 + 1 你们这个大作业有水平啊,可以可以支持下
tcm8168 + 1 + 1 感谢分享能选择下载音质就最好了
常胜将军 + 1 + 1 热心回复!
chengbenxiang + 1 + 1 我很赞同!
diaog + 1 谢谢@Thanks!
hyl2009 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
打酱油的小妖怪 + 1 + 1 谢谢@Thanks!
longye + 1 + 1 感谢您的宝贵建议,我们会努力争取做得更好!
szair + 1 + 1 我很赞同!
zl0733 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
rzcl + 1 + 1 谢谢@Thanks!
shaunkelly + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
kong2 + 1 + 1 热心回复!
十里八乡俊后生 + 1 + 1 我很赞同!
十二个耳环 + 1 + 1 谢谢@Thanks!
寒梅暖心 + 1 谢谢@Thanks!
哭等四年 + 1 + 1 谢谢@Thanks!
woyucheng + 1 + 1 谢谢@Thanks!
新一 + 1 + 1 谢谢@Thanks!
bluebox1943 + 1 + 1 我很赞同!
猫吃 + 1 大佬 可以公开API接口嚒?
pj7699 + 1 + 1 谢谢@Thanks!
独孤唐 + 1 + 1 谢谢@Thanks!
hanchen0509 + 1 + 1 谢谢@Thanks!
不知道改成啥 + 1 + 1 谢谢@Thanks!
无道2逍遥 + 1 + 1 谢谢@Thanks!
takstar8zyq2018 + 1 + 1 谢谢@Thanks!
tblc + 1 + 1 太棒了,感谢!
风之暇想 + 15 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
leader1314 + 1 + 1 谢谢@Thanks!
catcn + 1 + 1 谢谢@Thanks!
qq254375 + 1 + 1 用心讨论,共获提升!
xiezhanpeng + 1 我很赞同!
buaiwanyouxi + 1 + 1 用心讨论,共获提升!
MUTU + 1 + 1 热心回复!
wulin668 + 1 + 1 谢谢@Thanks!
li5832 + 1 加油看好你
虔来学习 + 1 + 1 感觉挺强的
coolcalf + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lgbgcg + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

平淡最真 发表于 2020-12-29 22:24
打开报错,不知道什么问题,
Problem signature:
  Problem Event Name:        CLR20r3
  Problem Signature 01:        遗憾迟香音乐助手
  Problem Signature 02:        1.0.0.0
  Problem Signature 03:        5fe9ca78
  Problem Signature 04:        System.Windows.Forms
  Problem Signature 05:        4.7.3324.0
  Problem Signature 06:        5c09ba04
  Problem Signature 07:        66e
  Problem Signature 08:        36
  Problem Signature 09:        PSZQOADHX1U5ZAHBHOHGHLDGIY4QIXHX
  OS Version:        6.1.7601.2.1.0.256.1
  Locale ID:        2052
  Additional Information 1:        33ac
  Additional Information 2:        33ac5181d7a13972795cb17643ad9073
  Additional Information 3:        c768
  Additional Information 4:        c76843fbdf1c373a7f5b92b50ef0a423
Jundy 发表于 2020-12-27 13:27
闪光果实 发表于 2021-4-4 22:01
itptlan159 发表于 2021-4-4 21:08
感谢,可以用,只是感觉搜索的内容不是全部,只是小部分。
apcda150421 发表于 2021-4-1 09:54
支持软件,支持作者!继续加油!
wenqi115 发表于 2021-3-6 20:20
非常好,使用很nice
hellx 发表于 2021-2-10 13:32
大佬给力  要是能下无损的就更给力了
zbzhaolin 发表于 2021-2-8 08:47
这个软件很好用,谢谢群主分享出来,感谢
 楼主| 遗憾迟香 发表于 2021-1-13 18:03
yanghuiqq168 发表于 2021-1-12 20:37
今晚回来用WIN10搜索同样的歌又可以播放,白天在公司WIN7的电脑上不行,啥原因未知

如果是公司或学校的网络的话请检查音乐网站是否被屏蔽
yanghuiqq168 发表于 2021-1-12 20:42
另外,这个不能批量删除播放列表。不能批量播放当页面,只能添加到播放列表。
yanghuiqq168 发表于 2021-1-12 20:37
遗憾迟香 发表于 2021-1-12 18:04
感谢您的反馈,你要播放的音乐可能为付费或下架或网络问题

今晚回来用WIN10搜索同样的歌又可以播放,白天在公司WIN7的电脑上不行,啥原因未知
 楼主| 遗憾迟香 发表于 2021-1-12 18:04
yanghuiqq168 发表于 2021-1-12 12:46
搜索出来的播放不了是为啥啊

感谢您的反馈,你要播放的音乐可能为付费或下架或网络问题
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 08:18

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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