在前面:
此本僅用于記錄個人學習進度,學識淺薄,若有錯誤觀點歡迎評論區指出。歡迎各位前來交流。(部分材料來源網絡,若有侵權,立即刪除)
參考博客
def get_cookies():
driver=webdriver.Firefox()#啟動瀏覽器
url='https://music.163.com/'
driver.get(url) # 發送請求
# 打開之后,手動登錄一次
time.sleep(3)
input('完成登陸后點擊enter:')
time.sleep(3)
dictcookies=driver.get_cookies() # 獲取cookies
cookie=[item["name"] + "=" + item["value"] for item in dictcookies]
cookiestr=';'.join(item for item in cookie)
print(cookiestr)
with open('wyycookie.txt', 'w') as f:
f.write(cookiestr)
print('cookies保存成功!')
driver.close()
cookie=[item["name"] + "=" + item["value"] for item in dictcookies]
cookiestr=';'.join(item for item in cookie)
with open('wyycookie.txt', 'w') as f:
f.write(cookiestr)
print('cookies保存成功!')
driver.close()
def read_cookie():
try:
print("[INFO]:正常嘗試讀取本地cookie")
with open('wyycookie.txt', 'r', encoding='utf8') as f:
Cookies=f.read()
# print(Cookies)
except:
print("[ERROR]:讀取失敗,請手動登錄并更新")
get_cookies()
read_cookie()
return Cookies
def get_ID(name):
url='https://music.163.com/api/search/get/web?csrf_token=hlpretag=&hlposttag=&s={'+str(name)+'}&type=1&offset=0&total=true&limit=1'
r=rs.get(url, headers=headers)
r.encoding='utf-8'
str_r=r.text
dict_r=json.loads(str_r)
#print(dict_r)
#print(dict_r["result"]['songs'][0]['id'])
ID=dict_r["result"]['songs'][0]['id']
return ID
def get_comments(id):
comments=[]
url='http://music.163.com/api/v1/resource/comments/R_SO_4_{}?limit=100&offset='.format(id)
r=rs.get(url, headers=headers)
r.encoding='utf-8'
str_r=r.text
dict_r=json.loads(str_r)
test=dict_r["comments"][1]
#print(','.join(map(str, sorted(dict_r.keys()))))
#print(test)
for i in range(100):
comment=dict_r["comments"][i]['content']
comments.append(comment)
#print(comment)
# for i in comments:
# print(i)
return comments
def get_list(musiclistid):
Info=[]
url='https://music.163.com/playlist?id={}'.format(musiclistid)
rs=requests.session()
r=rs.get(url, headers=headers)
soup=BeautifulSoup(r.content, 'lxml')
hide=soup.find('ul', {
'class': 'f-hide'})
a=hide.find_all('a')
for every in a:
data=[]
uid=re.search(r'id=(.*)', every['href'], re.M | re.I)
uid=uid.group(1)
data.append(uid)
data.append(every.text)
Info.append(data)
# for i in Info:
# print(i[0])
return Info
def get_poem(name,id):
url='https://music.163.com/api/song/lyric?id={}&lv=1&kv=1&tv=-1'.format(id)
r=rs.get(url, headers=headers)
r.encoding='utf-8'
str_r=r.text
dict_r=json.loads(str_r)
print(dict_r['lrc']['lyric'])
with open(name+'歌詞.txt', 'w') as f:
f.write(dict_r['lrc']['lyric'])
print('歌詞保存成功!')
def cut_words(top_search):
top_cut=[]
for top in top_search:
top_cut.extend(list(jieba.cut(top))) #使用精確模式切割詞匯
return top_cut
def commment_pic(comment):
all_words=cut_words(comment)
stop=[]
words_cut=[]
for word in all_words:
if word not in stop:
words_cut.append(word)
word_count=pd.Series(words_cut).value_counts()
back_ground=imread("F:\\flower.jpg")
wc=WordCloud(
font_path="C:\\Windows\\Fonts\\simhei.ttf", # 設置字體
background_color="white", # 設置詞云背景顏色
max_words=400, # 詞云允許最大詞匯數
mask=back_ground, # 詞云形狀
max_font_size=400, # 最大字體大小
random_state=90 # 配色方案的種數
)
wc1=wc.fit_words(word_count) # 生成詞云
plt.figure()
plt.imshow(wc1)
plt.axis("off")
# plt.get_current_fig_manager().full_screen_toggle()
plt.show()
def main():
#print_menu()
while True:
print_menu()
# 獲取用戶輸入
try:
num=int(input("[INFO]:請輸入需要的操作:"))
except ValueError:
# except Exception:
print("輸入錯誤,請重新輸入(1.2.3)")
continue
except IndexError:
print("請輸入一個有效值:(1.2.3)")
continue
# 根據用戶的數據執行相應的功能
if num==1:
name=input("[INFO]:請輸入歌曲名稱:")
id=get_ID(name)
print(id)
get_poem(name,id)
print("=" * 500)
elif num==2:
name=input("[INFO]:請輸入歌曲名稱:")
id=get_ID(name)
comments=get_comments(id)
commment_pic(comments)
print("=" * 500)
elif num==3:
name=input("[INFO]:請輸入歌曲名稱:")
id=get_ID(name)
save_music(name,id)
print("=" * 500)
elif num==4:
print("[END]:感謝您的使用,歡迎下次再見")
print("=" * 500)
break
else:
print("[ERROR]:輸入錯誤")
print("=" * 500)
def print_menu():
print ("="*500)
print ("[INFO]:1. 獲取指定音樂歌詞")
print ("[INFO]:2. 生成指定音樂評論詞云圖")
print ("[INFO]:3. 下載歌曲")
print ("[INFO]:4. 退出系統")
print("=" * 500)
if __name__=="__main__":
print("=" * 500)
print("[INFO]:歡迎使用zack的網易云音樂系統")
Cookies=read_cookie()
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
'Cookie': '{}'.format(Cookies)}
main()
、多想再聽你說你有多愛我
一幕幕的歡樂難道是騙我
———《多想再聽你說你有多愛我》
2、追逐差不多的漂亮
我們差不多的愿望
—————《差不多姑娘》
3、你可知道我比煙花還寂寞
手捧著空空承諾一個人漂泊
—————《比煙花還寂寞》
4、回憶越快樂
傷心就越難熬
————《后來的后來》
5、我能不能抱住你
哪怕一秒而已
————《我已經愛上你》
6、難道真心不夠好
甘心對你那么好
————《入戲又動心》
7、不用再多說明
我就要和你在一起
————《我可以》
8、就算拋開一切
我也得接受
————《眼淚流在你走后》
9、這份愛最后難以停留
你說再見吧別再相守
————《不愿說分手》
10、愛一陣笑一陣以刻骨銘心
夢一陣痛一陣心無法平靜
————《轉眼淚傾城》
11、埋藏了多少天
心中對你的思念
————《不變的情緣》
12、依然記得從你眼中
滑落的淚傷心欲絕
————《黃昏》
13、紅塵中人心紛紛擾擾
人情世故總沒完沒了
————《碧海潮生》
14、你的笑一塵不染的純白
鋪開了我想對你依賴
————《還好有你在》
15、當愛不知不覺
走到分岔的路口
————《你我都在等》
16、如果再見不能紅著眼 是否還能紅著臉
就像那年匆促刻下永遠一起 那樣美麗的謠言
如果過去還值得眷戀 就別太快冰釋前嫌
我們要互相虧欠 要不然憑何懷念――《匆匆那年》
17、懷抱既然不能逗留
何不在離開的時候
一邊享受一邊淚流
十年之前你 不屬于我
我不屬于你
我們還是一樣
陪在一個陌生人左右
走過漸漸熟悉的街頭
十年之后
我們是朋友 還可以問候
只是那種溫柔
再也找不到擁抱的理由
情人最后難免淪為朋友――《十年》
18、全都怪我,不該沉默時沉默,該勇敢時軟弱。倘若那天,把該說的話好好說,該體諒的不執著――《可惜沒如果》
日,網易云音樂iOS版推送最新版本升級,帶來“桌面歌詞”新功能。更新版本后,在播放頁面的設置中可以看到“打開桌面歌詞”的選項,打開后就可以看到桌面上方顯示歌詞了。
桌面歌詞(圖片源自快科技)
不過需要注意的是,這里的桌面歌詞和我們常見的桌面歌詞有些不同,是類似于浮窗的形式展示在桌面上的,而且高度較高,會擋住屏幕上的顯示內容。
其實這個桌面歌詞是利用了iOS的“畫中畫”功能,同時還支持切歌和暫停,雖然功能簡單而且有遮擋,不過對于iPhone來說已經算是一個不小的進步了。
(7925857)