前面说了把主界面的总体设计说了,接下来说一下调用API获取歌曲的url以及歌词等信息。首先我使用的是酷狗的API(调用其他音乐平台的API方法也基本都是差不多的),这个API呢也是我百度找到的。http://songsearch.kugou.com/song_search_v2?keyword=&page=&pagesize=&userid=-1&clientver=&platform=WebFilter&tag=em&filter=2&iscorrection=1&privilege_filter=0 其中keyword表示你要搜索的内容(可以是歌手名,也可以是歌曲名字),page表示页数(默认第一页),pagesize表示一页的歌曲数量(默认20首)。其他的就不重要了,也可以去百度了解下。
比如搜索“周杰伦”,在浏览器中输入:http://songsearch.kugou.com/song_search_v2?keyword=周杰伦&page=&pagesize=&userid=-1&clientver=&platform=WebFilter&tag=em&filter=2&iscorrection=1&privilege_filter=0 就可以得到返回回来的json数据。
通过解析这些json数据我们可以得到一些有用的信息。我用在线解析给大家看一下数据:
这些数据中代表的东西我就不一一说了,其中对我们有用的就是AlbumID和FileHash,因为接下来我们要通过这两个东西来搜索这首歌曲的信息。
得到AlbumID和FileHash后访问http://www.kugou.com/yy/index.php?r=play/getdata&hash= &album_id= &_=1497972864535 其中hash后面跟的就是前面我们得到的FileHash,album_id后面就是跟我们前面得到的AlbumID。
比如周杰伦的告白气球。http://www.kugou.com/yy/index.php?r=play/getdata&hash=5FCE4CBCB96D6025033BCE2025FC3943&album_id=1645030&_=1497972864535
我们同样得到返回的json数据,对它进行解析。
这样我们就得到了歌曲的url以及歌词等信息。
接下来看一下qt调用API的代码:
network_manager = new QNetworkAccessManager();
network_request = new QNetworkRequest(); //发送请求一得到AlbumID和FileHash
network_manager2 = new QNetworkAccessManager();
network_request2 = new QNetworkRequest(); //发送请求二得到url和歌词等信息
connect(network_manager2, &QNetworkAccessManager::finished, this, &a