python获取qq音乐,命令下实现搜索,试听功能

效果

实现代码:

1.搜索api有时效性

2.解析MP3地址同样道理

如失效,自行修改相应的api,如有更好的api或者方法,希望分享和谈论方法!

# -*- coding: utf-8 -*-
import requests
# from fake_useragent import UserAgent
import json
import os
from prettytable import PrettyTableclass Music:limit = 10#   headers = {#       'User-Agent': UserAgent().random# }headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'}def search_mscic(self, keyword):api = 'http://music.163.com/api/search/pc'params = {'s': keyword,'offset': 0,'limit': self.limit,'type': 1}data = requests.get(api, headers=self.headers, params=params)return data.textdef getInfo(self, keyword):data = self.search_mscic(keyword)songinfo = []for i in range(self.limit):songname = json.loads(data)['result']['songs'][i]['name']songid = json.loads(data)['result']['songs'][i]['id']album = json.loads(data)['result']['songs'][i]['album']['name']artists = json.loads(data)['result']['songs'][i]['artists'][0]['name']info = {'songname': songname,'songid': songid,'album': album,'artists': artists,}songinfo.append(info)return songinfodef url(self, id):print('id:',id)api = 'https://api.toubiec.cn/rand.music?type=netease'params = {'id': id}data = requests.get(api, headers=self.headers, params=params)print(data.text)url = json.loads(data.text)['data']['url']return urldef url2(self,id):url='http://music.163.com/song/media/outer/url?id={}.mp3'.format(id)return urldef console(self, info):tb = PrettyTable()tb.field_names = ['序号', '歌曲', '歌手', '专辑']for i in range(len(info)):tb.add_row([i + 1, info[i]['songname'], info[i]['artists'], info[i]['album']])print(tb)def play(self, id, info):i = int(id) - 1songid = info[i]['songid']url = self.url2(songid)os.system('play {}'.format(url))if __name__ == '__main__':s = Music()key = input('song:')info = s.getInfo(key)s.console(info)q = input('play:')s.play(q, info)

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部