老铁们,大家好,相信还有很多朋友对于个人音乐网站源码分享搭建和音乐网站源码免费下载的相关问题不太懂,没关系,今天就由我来为大家分享分享个人音乐网站源码分享搭建以及音乐网站源码免费下载的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
从歌曲网站,获取音频和歌词的流程:
1,输入歌曲名,查找网站中存在的歌曲id2,拿歌曲id下载歌词lyric
简单的url拼接
3,拿歌曲id下载音频mp3
先用一个POST请求,拿ID取音频资源路径,
再用GET请求,拿到音频资源
4个网络请求,解决,
搜索歌曲,获取歌词,获取音频资源路径,获取音频资源
注意的是,4个网络请求,都要模拟正常的浏览器请求,
GET请求,需要配置请求头,POST请求,需要配置请求头和请求体
1,查找网站的歌曲
先准备,模拟正常的浏览器请求
配置Session,
有一个加解密,具体见githubrepo.
def__init__(self,timeout=60,cookie_path=&39;):\nself.headers={\n&39;:&39;,\n&39;:&39;,\n&39;:&39;,\n&39;:&39;,\n&39;:&39;,\n&39;:&39;,\n&39;:&39;,\n&39;:&39;\n}\nself.session=requests.Session()\nself.session.headers.update(self.headers)\nself.session.cookies=cookiejar.LWPCookieJar(cookie_path)\nself.download_session=requests.Session()\nself.timeout=timeout\nself.ep=Encrypyed()\n1234567891011121314151617
封装Post请求方法
\ndefpost_request(self,url,params):\n&34;&34;&34;\n\ndata=self.ep.encrypted_request(params)\nresp=self.session.post(url,data=data,timeout=self.timeout)\nresult=resp.json()\nifresult[&39;]!=200:\nclick.echo(&39;)\nelse:\nreturnresult\n1234567891011121314
去搜索:
defsearch(self,search_content,search_type,limit=9):\n&34;&34;&34;\n\nurl=&39;\nparams={&39;:search_content,&39;:search_type,&39;:0,&39;:&39;,&39;:limit}\nresult=self.post_request(url,params)\nreturnresult\n12345678910111213
拿到搜索结果:
\nresult=self.search(song_name,search_type=1,limit=limit)\n\nifresult[&39;][&39;]<=0:\nclick.echo(&39;.format(song_name))\nelse:\nsongs=result[&39;][&39;]\nifquiet:\nsong_id,song_name=songs[0][&39;],songs[0][&39;]\nsong=Song(song_id=song_id,song_name=song_name,song_num=song_num)\nreturnsong\n1234567891011
下载歌词
下载很简单
lyricUrl=&39;.format(song_id,csrf)\nlyricResponse=self.session.get(lyricUrl)\n12
拿到一个json,获取里面的歌词,
lyricJSON=lyricResponse.json()\nlyrics=lyricJSON[&39;][&39;].split(&34;)\nlyricList=[]\nforwordinlyrics:\ntime=word[1:6]\nname=word[11:]\np=Node(time,name)\nlyricList.append(p)\njson_string=json.dumps([node.__dict__fornodeinlyricList],ensure_ascii=False,indent=4)\n\n\n1234567891011
写入新建的本地文件
ifnotos.path.exists(folder):\nos.makedirs(folder)\nfpath=os.path.join(folder,str(song_num)+&39;+song_name+&39;)\ntext_file=open(fpath,&34;)\nn=text_file.write(json_string)\ntext_file.close()\n123456
下载音频分两步
先拿到音频资源路径
url=&39;\ncsrf=&39;\nparams={&39;:[song_id],&39;:bit_rate,&39;:csrf}\nresult=self.post_request(url,params)\n39;data&39;url&歌曲不存在\nifsong_urlisNone:\nclick.echo(&39;.format(song_id))\nelse:\nreturnsong_url\n\n12345678910111213
再获取音频资源
ifnotos.path.exists(fpath):\nresp=self.download_session.get(song_url,timeout=self.timeout,stream=True)\nlength=int(resp.headers.get(&39;))\nlabel=&39;.format(song_name,int(length/1024))\n1234
一边下载,一边看进度
withclick.progressbar(length=length,label=label)asprogressbar:\nwithopen(fpath,&39;)assong_file:\nforchunkinresp.iter_content(chunk_size=1024):\nifchunk:\nsong_file.write(chunk)\nprogressbar.update(1024)\n\n\n12345678
需要源码01私信小编
关于本次个人音乐网站源码分享搭建和音乐网站源码免费下载的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。
