日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

点阵字python_Python点阵字玩转动态歌词

發布時間:2023/12/8 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 点阵字python_Python点阵字玩转动态歌词 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前面我們講到了可以自定義輸入漢字,然后用點陣字來展現,接下來我們挖掘下更有趣的玩法。想法來自于聽歌時桌面動態歌詞,我們的點陣字既然可以自定義輸入識別,何不讀取歌詞文件隨著歌曲播放動態顯示呢?

下面介紹設計思路,截圖如下

歌詞lrc文件

玩過mp3的話對此應該不陌生,就是配在歌曲mp3文件邊上后綴為lrc的文件。lrc是英文lyric即歌詞的縮寫。lrc文件可以用文本編輯器直接打開,其內容分為標識標簽和時間標簽,如圖

標識標簽指 [ti:歌曲名]、[ar:歌手名]、[al:專輯名]、 [offset:時間補償值]這類介紹信息。

時間標簽指[mm:ss.ff]加對應歌詞,mm:ss.ff是分鐘和精確到百分位的秒數,當歌曲播放到特定的時間點,根據時間標簽讀取對應的歌詞文本,實現歌詞同步、動態顯示。

搞清lrc的格式,思路也就清晰了:讀取文件中的時間標簽,解析出我們需要的時間和對應的歌詞文本,定時按文本內容打印輸出點陣字。

讀取時間標簽

涉及到lrc文件的編碼格式,直接讀取會報錯,引入codecs來讀取文件。

讀取文本我采用了readlines(),讀取整個文件所有行,每行作為一個元素保存到一個列表list中。

學python的新手朋友可以回顧下讀取文件read()、readline()和這里的readlines()的區別,這里選用readlines() 是因為lrc本身不大,直接讀到列表中也方便后續操作。

接下來都是Python入門的應用,拿到讀取出的列表,遍歷列表,也就是檢查每一項,挑選出符合時間標簽格式的字符串,把字符串分離成時間數字和歌詞文本。

按時間打印歌詞

以“[00:02.88]無條件“為例,在第2.88秒時將“無條件”打印輸出,再到下一句的5.59秒,輸出下一個文本,這里我采用了比較簡單的方式:利用time模塊中的time.sleep(t) 來推遲執行命令。

這樣做忽略了執行代碼的運行時間,但是好在代碼簡單、新手友好,而且忽略的影響并不明顯。

代碼概覽

歌詞轉點陣字

通過導入定義點陣字打印方法的py文件名 import printPlay,在新的代碼文件中直接調用printPlay.printPlay()來實現。

在之前printPlay.py文件基礎上,我做了些改動,將運行printPlay.py時要執行的代碼放入main中并對__name__先做個判斷再執行。

__name__是標識模塊名字的一個系統變量:假如當前模塊是主模塊來直接執行,那么此模塊名字就是__main__,通過判斷直接執行主函數內容;假如此模塊是被import的,則此模塊名字為文件名字,跳過if語句中的內容,再被import中的文件中,通過 文件名.函數 來執行被調用的函數。

歌曲播放

歌詞問題解決,接下來是歌曲,我們選用pygame的mp3播放功能。這個需要安裝pygame, 可以通過pip install pygame來直接操作。

裝好后在py文件中import pygame ,接下來就是三行代碼來初始化、讀取、播放。

注意,要將mp3和lrc文件都放在和py文件同一個文件夾,如果改變路徑,則需要在代碼中lrc和mp3讀取處添加對應路徑。

總結

以上是生活随笔為你收集整理的点阵字python_Python点阵字玩转动态歌词的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。