歌词

作者: 13147abc | 来源:发表于2018-10-23 21:55 被阅读0次
"""__author__ = 余婷"""

"""
需求:播放指定歌曲的时候,给一个时间,能够把这首歌在这个时间对应的词返回

面向对象: 找一个类,让它拥有解析歌词的功能
"""
class Lyrics:
    """歌词类"""
    def __init__(self, time='', word=''):
        self._time = time
        self.word = word

    @property
    def time(self):
        return self._time
    @time.setter
    def time(self, value):
        fen = float(value[1:3])
        miao = float(value[4:])
        self._time = fen*60+miao

    def __gt__(self, other):
        return self._time > other._time


    def __repr__(self):
        return str(self.__dict__)


class LyricsAnalysis:
    """歌词解析类"""
    # name = ''
    def __init__(self, name):
        self.__name = name  # 歌名
        self.__all_lyric = []  # 保存当前歌名解析出来的歌词对象

    # 分离歌词和时间
    def __split_time_word(self, line):
        # 时间 <-> 歌词
        lines = line.split(']')
        # print(lines)
        # 获取每行的词
        word = lines[-1]
        # 遍历获取每一行的时间
        for time in lines[:-1]:
            # 根据时间和词创建歌词对象
            ly_obj = Lyrics(word=word)
            ly_obj.time = time
            self.__all_lyric.append(ly_obj)


    # 根据时间获取歌词
    def get_lyric(self, time: int):
        # 判断之前是否已经解析过
        if self.__all_lyric:
            print('~~~~~')
            # 解析过,根据时间取值
            for item in self.__all_lyric:
                if item.time < time:
                    return item.word

        # 没有解析过
        # 读文件内容
        try:
            print('======')
            with open('./files/'+self.__name+'.txt', 'r', encoding='utf-8') as f:
                line = f.readline()
                while line:
                    # print(line)
                    self.__split_time_word(line)
                    line = f.readline()

                # __all_lyric保存了所有的歌词对象
                self.__all_lyric.sort(reverse=True)
                # print(self.__all_lyric)

                # 根据时间取值
                for item in self.__all_lyric:
                    if item.time < time:
                        return item.word

        except FileNotFoundError:
            print('没有响应的歌词')


# 蓝莲花 --> 蓝莲花数据 -->
ly_lan = LyricsAnalysis('蓝莲花')
print(ly_lan.get_lyric(10))
print(ly_lan.get_lyric(12))
print(ly_lan.get_lyric(20))
print(ly_lan.get_lyric(30))

# 七里香 --> 七里香数据 -->
# ly_qi = LyricsAnalysis('七里香')





相关文章

  • QQ音乐PC端保存歌手写真的方法

    1.将光标放置在歌词上:点击右键>歌词操作>打开歌词文件夹,进入歌词文件夹 E:\QQMusicCache\QQM...

  • 歌词

    有一种歌词叫人生, 有一种歌词叫成长, 有一种歌词叫痛苦, 有一种歌词叫生活。 人生的歌词既有快乐幸福 也有酸苦。...

  • 自定义歌词展示控件

    歌词展示 封装歌词信息 歌词的内容如下,一行歌词由两部分组成,[]里面的是开始时间,后面的是歌词内容 对应的实体类...

  • 黄泓圣原创歌词专辑

    黄泓圣原创歌词专辑 #黄泓圣原创歌词专辑#黄泓圣原创#黄泓圣原创歌词#原创#歌词#专辑#黄泓圣

  • 人生笔画(歌词,歌词?)

    花儿的忧伤 鸟儿的自信 动物们警惕的出洞 月儿的娇羞 鱼借光摆俊 山树围湖影重重 她摇曳着身姿在画中 他衣不蔽体谈...

  • monsters

    首页抖音歌曲歌词monster歌词 Katie Sky同名专辑《Monsters》主打歌 monster歌词 Ka...

  • 那些唯美的古风语句

    音乐响起,总有那么几句歌词打动你 是否也有歌词荡气回肠 是否也有歌词让你泪如雨下 是否也有歌词让你陶醉 是否也有歌...

  • 《黄泓圣原创歌词》

    《黄泓圣原创歌词》 《黄泓圣原创歌词专辑》 《词作家黄泓圣原创歌词专辑》 《词作人黄泓圣原创歌词专辑》 《作词人黄...

  • [歌词]

    这雨后安静的街道 把我的歌声环绕 像大雨洗尽了喧嚣 我一人独行静悄悄 现实总有太多烦恼 不如我们大声欢笑 失意时 ...

  • 歌词

    我和明明合作成果,求高人赐曲[调皮]: 你的世界的某个角落可能我不懂, 只是因为我曾经懵懂, 请你为我打开一扇窗,...

网友评论

      本文标题:歌词

      本文链接:https://www.haomeiwen.com/subject/kljzzftx.html