Skip to content

Instantly share code, notes, and snippets.

@j-iNFINITE
Last active August 27, 2019 05:27
Show Gist options
  • Save j-iNFINITE/c7f7eaa53908d07101f142fc2d1f6b37 to your computer and use it in GitHub Desktop.
Save j-iNFINITE/c7f7eaa53908d07101f142fc2d1f6b37 to your computer and use it in GitHub Desktop.
import requests
from urllib import parse
import os,re
def download(mid,artist,albumname,songname):
def nametest(name):
reg = re.compile(r'[\\/:*?"<>|\r\n]+')
valid_name = reg.findall(name)
if valid_name:
for nv in valid_name:
name = name.replace(nv, "")
return name
url='https://music.ghpym.com/api/ajax.php'
postdata={
'mid':'{}'.format(mid),
'fun':'fun_get_qqmusic_url',
'type':'320'
}
downloadurl='https://music.ghpym.com/'+session.post(url,postdata).text
albumname=nametest(albumname)
songname=nametest(songname)
if albumname==' ':albumname='其他'
if os.path.isfile(r'{}/{}/{}.mp3'.format(artist,albumname,songname)):return
if not os.path.exists(r'{}/{}'.format(artist,albumname)):
os.makedirs(r'{}/{}'.format(artist,albumname))
with open(r'{}/{}/{}.mp3'.format(artist,albumname,songname),'wb') as f:
f.write(session.get(downloadurl).content)
def search(artist,page=1):
url='https://music.ghpym.com/api/ajax.php'
postdata = {
'word': '{}'.format(parse.quote(artist)),
'page': '{}'.format(page),
'fun': 'fun_search_qq',
}
rsp=session.post(url, postdata).json()
totalnum=rsp['data']['totalnum']
curnum=rsp['data']['curnum']
for e in rsp['data']['list']:
songname = e['songname']
albumname = e['albumname']
sizeflac = e['sizeflac']
songmid =e['songmid']
if 'live' in songname or 'Live' in songname or '演唱会' in albumname or sizeflac==0:continue
print(songmid,artist,albumname,songname)
download(songmid,artist,albumname,songname)
if curnum!=0:
page+=1
search(artist,page)
if __name__ == '__main__':
session=requests.Session()
session.headers['User-Agent']='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134'
search('澤野弘之')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment