Python抓取歌詞自製FreeStyle

2021-09-13 13:08:00 字數 2885 閱讀 1390

故事的起因是上週六看《中國好聲音》,乙個周杰倫戰隊的學員用人工智慧寫的歌詞,於是乎,我也有了這個想法,**的主題思路是看crossin先生的文章,雖然最後不能寫出一首歌,但是押韻腳這事情分分鐘搞定了
主題的思路,就是先抓取很多首歌曲的歌詞,利用jieba分詞後,將分好的詞按照押韻表進行分類,最後匹配查詢就可以了

這個地方可以去網上搜押韻表

#引用各種需要的庫

import requests

import jieba

import re

from xpinyin import pinyin

p = pinyin()

rhymeindex = [('1', ['a', 'ia', 'ua']), ('2', ['ai', 'uai']), ('3', ['an', 'ian', 'uan']),

('4', ['ang', 'iang', 'uang']), ('5', ['ao', 'iao']), ('6', ['e', 'o', 'uo']), ('7', ['ei', 'ui']),

('8', ['en', 'in', 'un']), ('9', ['eng', 'ing', 'ong', 'iong']), ('10', ['er']), ('11', ['i']),

('12', ['ie', 'ye']), ('13', ['ou', 'iu']), ('14', ['u']), ('16', ['ue']), ('15', ['qu', 'xu', 'yu'])]

rhymedct =

分好的詞與押韻表對應起來,舉個栗子,比如「沒有」對應的是「7-13」,就等於你給每個詞都貼了乙個標籤,這樣你以後想搜尋的時候,就可以根據標籤找到這些詞了

def _analysis_words(words):

word_py =p.get_pinyin((u'{}'.format(words)))

lst_words = word_py.split('-')

r =

for i in lst_words:

while true:

if not i:

break

token = rhymedct.get(i, none)

if token:

break

i = i[1:]

if len(r) == len(words):

return '-'.join(r)

# print(_analysis_words('兄弟'))

這個地方資料爬取的越多,肯定你的詞庫就越壯大,後面分詞也越高,我這裡只爬取了3首歌曲的歌詞,並且最後是儲存到txt中,當然,放資料庫裡就更好了

def getkeyword():

#歌曲列表

# url = ''

# req = requests.get(url)

# data = req.json()

# print(data['result']['tracks'] )

# tracks =data['result']['tracks'] #歌曲列表

tracks=["431795900",'33850315','430053482']

#寫入記事本檔案

with open('keyword.txt','a') as f:

f.write("[")

for i in tracks:

print(111)

#歌詞# lrcurl = ""+str(i['id'])+"&lv=-1&kv=-1&tv=-1"

lrcurl = ""+str(i)+"&lv=-1&kv=-1&tv=-1"

lrcreq = requests.get(lrcurl)

dt = lrcreq.json()

lrc=re.sub(u"\\[.*?]", "", dt['lrc']['lyric'])

#jieba分詞

seg_list = list(jieba.cut(lrc, cut_all=true))

for i in seg_list:

#加入判斷,只寫入2個字組成的詞

if len(i)==2:

#寫入格式:

if _analysis_words(i)!=none:

f.write(",")

f.write("]")

f.close()

getkeyword()
def findkey(str):

result={}

with open('keyword.txt', 'r') as f:

# print(f.readlines())

list=eval(f.readlines()[0])

for item in list:

if item.get(str):

key=item.get(str)

number=result.get(key)

#如果乙個詞出現多次,進行次數累加,用來表示頻次

if number !=none and number>=1:

result[key]=number+1

else:

result.update()

f.close()

print(result)

str=_analysis_words(key)

print("匹配押韻的詞:")

findkey(str)

# 沒事愛在部落格寫寫,這感覺讓我愜愜

# 寫**不是男生的事,女生不是只能做測試

# 熱愛編碼,沒有辦法

# 他們都叫我是熱愛編碼的coding女生

用 python 解析歌詞

2.解析歌詞 musiclrc 00 03.50 傳奇 00 19.10 作詞 劉兵 作曲 李健 00 20.60 演唱 王菲 00 26.60 04 40.75 02 39.90 00 36.25 只是因為在人群中多看了你一眼 04 49.00 02 47.44 00 43.69 再也沒能忘掉你容...

Python匯入自製模組

用python玩轉資料中解釋的模組概念 包 乙個有層次的檔案目錄結構 aaa init py bbb.py ccc init py c1.py c2.py ddd init py d1.py eee 定義了乙個由模組和子包組成的python應用程式執行環境 引入使用函式的兩種用法 1.import ...

python歌詞解析器

今天掌握到了歌詞解析器的python基礎語法 實現,個人覺得挺有意思,便展示出來分享分享 注 展示結果為每過相應的時間,輸出端列印相應的歌詞 import time 匯入time模組 song 00 03.50 傳奇 00 19.10 作詞 劉兵 作曲 李健 00 20.60 演唱 王菲 00 26...