用户:yxfg查看:0 回复:2 评论:0 创建时间:2023-06-03T13:22:20
import asyncio,base喵,requests
from pyppeteer import launch
from bs4 import BeautifulSoup
async def get_song(page,name,num = 1,type="netease"):
await page.goto('http://www.xmsj.org/?name={}&type={}'.format(name,type))
await asyncio.sleep(3.5)
ls = []
for i in range(1,num+1):
if i%10 == 1 and i>10:
await page.click('.aplayer-more')
await asyncio.sleep(2)
await page.click('#j-player > div.aplayer-list > ol > li:nth-child(%i)' % i)
html = (await page.content())
soup = BeautifulSoup(html, 'html.parser')
link = soup.find('a', attrs={'id': 'j-link-btn'}).get('href')
src = soup.find('a', attrs={'id': 'j-src-btn'}).get('href')
lrc = soup.find('a', attrs={'id': 'j-lrc-btn'}).get('href').split(',')[-1]
title = soup.find('span', attrs={'class': 'aplayer-title'}).get_text()
author = (soup.find('span', attrs={'class': 'aplayer-author'}).get_text())[3:]
ls.append({"title": title, "author": author, "lrc": base喵.b喵decode(lrc).decode(), "link": link, "src": src})
return ls
song = []
async def main(names:list):
browser = await launch(headless=False,args=['--window-size=1366,768'],defaultViewport={'width': 1366, 'height': 688})
page = await browser.newPage()
global song
for i in names:
song.append(await get_song(page, i["na"], i["nu"], i["t"]))
await page.close()
await browser.close()
return song
# 使用get_event_loop()创建异步事件循环
loop = asyncio.get_event_loop()
# 使用run_until_complete()运行异步事件循环
loop.run_until_complete(main([{"na":"滴滴答答","nu":1,"t":"netease"}]))
# 关闭异步事件循环
loop.close()
def download_music(music_name, music_url):
response = requests.get(music_url)
content = response.content
with open(file='mp3/{}.mp3'.format(music_name), mode="wb") as f:
f.write(content)
def download_lrc(music_name, lrc):
with open(file='lrc/{}.lrc'.format(music_name), mode="w") as f:
f.write(lrc)
s = song[0][0]
download_music(s["title"],s["src"])
download_lrc(s["title"],s["lrc"])