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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

python播放音乐同步歌词_linux 下 python 调用 mplayer 解析歌词同步播放显示

發布時間:2023/12/29 linux 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python播放音乐同步歌词_linux 下 python 调用 mplayer 解析歌词同步播放显示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

標簽:

加載同目錄同名歌詞同步顯示

#!/usr/bin/python

#?-*-?coding:?utf-8?-*-

import?sys,?os,?time,?subprocess,?re,?chardet

def?load_lrc(lrc_file):

try:

lrc_contains?=?open(lrc_file,?‘rb‘).read()

encoding?=?chardet.detect(lrc_contains)[‘encoding‘]

if?‘utf-8‘?!=?encoding:

lrc_contains?=?lrc_contains.decode(encoding).encode(‘utf-8‘)

except?Exception,?e:

print?‘\033[4;0H\033[K\tNo?lrc?or?in?encoding?found‘

return?{}

lrc?=?{}

for?eachline?in?re.split(r‘\n‘,?lrc_contains):

line?=?re.split(r‘]‘,?eachline)

if?1?

for?tm?in?line[0:-1]:

try:

time?=?re.match(r‘(\d\d)\s*:\s*(\d\d)‘,tm.strip(‘?[‘)).groups()

pos?=?60*int(time[0])?+?int(time[1])

lrc[pos]?=?line[-1]

except?Exception,?e:

#print?‘\033[4;0H\033[K\tLrc?fromat?error‘

#lrc_fp.close()

#return?{}

pass

#lrc_fp.close()

return?lrc

def?main(song):

print?‘\033[2J\033[2;0H\tPlaying?%s?...‘%song[:60]

p?=?subprocess.Popen(‘mplayer?%s?2>/dev/null‘%song,?stdout?=?subprocess.PIPE,?shell?=?True)

while?True:

match?=?re.match(r‘A:.*[\d:.()]*?of?(\d+)‘,?p.stdout.read(30))

if?None?!=?p.poll():

print?‘\033[9;0H\tFailed?to?recognize?file?format?.‘

return?1

if?not?match:

output?=?p.stdout.readline()

else:

tot_time?=?int(match.group(1))?-?1

for?jump?in?range(1,?10):

if?70?>=?tot_time/jump:

break

#print?‘\033[15;0H\ttotal?time:?%d‘%tot_time

break

print?‘\033[?25l‘

lrc?=?load_lrc(os.path.splitext(song)[0]?+?‘.lrc‘)

while?True:

cur_char?=?p.stdout.read(1)

if?‘A‘?==?cur_char:

try:

cur_time?=?int(p.stdout.read(5)[1:])

print?‘\033[6;0H\033[K\tCurrent?%d?/?Total?%d‘%(cur_time,?tot_time)

print?‘\033[1;0H‘,?‘-‘*(tot_time/jump)

print?‘\033[1;0H‘,?‘=‘*(cur_time/jump)

print?‘\033[7;0H‘,?‘-‘*(tot_time/jump)

print?‘\033[7;0H‘,?‘=‘*(cur_time/jump)

if?tot_time?<=?cur_time:

print?‘\033[8;0H\033[K\tquit‘

break

print?‘\033[4;0H\033[K\t%s‘%lrc[cur_time]

except?Exception,?e:

#print?‘\033[17;0H\tERROR:‘,?e

pass

elif?‘E‘?==?cur_char:

print?‘\033[8;0H\033[K\tquit‘

break

p.wait()

print?‘\033[10;0H\033[?25h‘

return?0

if?‘__main__‘?==?__name__:

if?2?!=?len(sys.argv)?or?not?os.path.isfile(sys.argv[1]):

print?‘\nUsage:‘,?sys.argv[0],?‘{exist?music?filename}\n‘

else:

main(sys.argv[1])

標簽:

總結

以上是生活随笔為你收集整理的python播放音乐同步歌词_linux 下 python 调用 mplayer 解析歌词同步播放显示的全部內容,希望文章能夠幫你解決所遇到的問題。

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