前面我们讲到了可以自定义输入汉字,然后用点阵字来展现,接下来我们挖掘下更有趣的玩法。想法来自于听歌时桌面动态歌词,我们的点阵字既然可以自定义输入识别,何不读取歌词文件随着歌曲播放动态显示呢?

下面介绍设计思路,截图如下

歌词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点阵字玩转动态歌词相关推荐

  1. python 桌面歌词_Python点阵字玩转动态歌词

    原标题:Python点阵字玩转动态歌词 前面我们讲到了可以自定义输入汉字,然后用点阵字来展现,接下来我们挖掘下更有趣的玩法.想法来自于听歌时桌面动态歌词,我们的点阵字既然可以自定义输入识别,何不读取歌 ...

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

    前面我们讲到了可以自定义输入汉字,然后用点阵字来展现,接下来我们挖掘下更有趣的玩法.想法来自于听歌时桌面动态歌词,我们的点阵字既然可以自定义输入识别,何不读取歌词文件随着歌曲播放动态显示呢? 下面介绍 ...

  3. python代码桌面壁纸_Python实现设置windows桌面壁纸代码

    Python实现设置windows桌面壁纸代码 发布于 2015-04-07 16:59:42 | 122 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对 ...

  4. python修改桌面壁纸_python定时更换桌面壁纸

    介绍 python基于selenium2中的webdriver以及pywin32模块,定时从指定网站随机下载壁纸,然后更新桌面壁纸的实现. 代码 首先定义一个基于selenium的webdriver的 ...

  5. python设置环境变量_Python设置环境变量

    python设置环境变量 We can set an environment variable in Python using os module. Python os module environ ...

  6. python爬取歌词_Python如何爬取qq音乐歌词到本地

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 闲来无事听听歌,听到无聊唠唠嗑,你有没有特别喜欢的音乐,你有没有思考或者尝 ...

  7. python修改桌面壁纸_python实现桌面壁纸切换功能

    本文实例为大家分享了python实现桌面壁纸切换功能的具体实现方法,供大家参考,具体内容如下 大体分为两个部分 一.利用爬虫爬取壁纸 第一部分爬取图片url地址并且下载至本地 爬虫针对http://i ...

  8. python代码桌面壁纸_Python实现设置windows桌面壁纸代码分享

    每天换一个壁纸,每天好心情. # -*- coding: UTF-8 -*- from __future__ import unicode_literals import Image import d ...

  9. python修改桌面壁纸_Python设置每日更新windows壁纸

    不知道大家是否对每日一成不变的壁纸感到厌倦呢?反正对于我个人来说,如果每天打开电脑映入眼帘的都是不同的画面,那么科研热情都会被充分激发,从而提高自己的劳动生产力. 原来使用的是Deepin系统,自己写 ...

最新文章

  1. 【Python环境搭建】PyCharm鼠标滚轮改变字体大小 等
  2. React中级学习(第二天)
  3. java中的provide,vue3 provide ref
  4. android环境搭建—— 工欲善其事必先利其器
  5. 一维卷积神经网络_人人都能看得懂的卷积神经网络——入门篇
  6. Windows bat命令解压缩文件360zip
  7. Onvif协议学习:5、设备搜索
  8. 广义S变换的地震高分辨率处理中的应用
  9. 油猴插件/脚本还不会使用?看这篇文章就够了, 各种实用的插件/脚本使用技巧
  10. 线性判别分析(Linear Discriminant Analysis,LDA)
  11. Orangleliu的2018年小结
  12. 原子化服务的官方解析来啦~
  13. C# 操作Excel数据透视表详解 – 创建、操作和删除
  14. 汇编语言实验一-《汇编语言-王爽老师》
  15. Linux系统下在普通用户如何使用root权限
  16. pytorch python学习(三)
  17. 美团产品经理助理实习生笔试小计
  18. 为什么会有“剩男剩女”
  19. 计算机word排序行列怎么回事,Word快速调整行列顺序.doc
  20. 小班计算机游戏教案,小班游戏教案4篇

热门文章

  1. 云安全报告:DDoS 攻击频次下降,工业云成重点目标
  2. 制衣厂普工小伙用java代码写的xml解析框架
  3. php 随机数rand,PHP随机数函数rand()与mt_rand() - 米扑博客
  4. 第三方登录----OAuth与OpenID
  5. 原理实践 SSR中redux的使用
  6. Linux rpm 命令参数使用详解
  7. Jetson TX1开发笔记(一):开机设置与刷机
  8. 努比亚 Z50和小米13 参数对比
  9. luogu P4752
  10. Android NDK探索连载-3 FFmpeg的编译及jni相关调用