# js-lyrics **Repository Path**: frank-deng/js-lyrics ## Basic Information - **Project Name**: js-lyrics - **Description**: A JavaScript library for parsing LRC file and synchronize lyrics. - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-08-17 - **Last Updated**: 2021-08-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README js-lyrics ========= [English](#english) | [中文](#chinese) A JavaScript library for parsing LRC file, and select lyric to highlight. Install ------- You can install via **_npm_**: $ npm install lyrics.js Or via Git reporsitory: $ git clone https://github.com/frank-deng/js-lyrics.git Usage ----- ### Parse the content of a `.lrc` file Load `.lrc` file while initializing parser: var lrc = new Lyrics(LRC_text); Load `.lrc` file and replace previous loaded lyrics using the same parser object: lrc.load(LRC_text); Load `.lrc` file from URL: var lrc = new Lyrics(); var xhr = new XMLHttpRequest(); xhr.addEventListener('readystatechange', function(e){ if (4==xhr.readyState && 200==xhr.status){ lrc.load(xhr.responseText); } }); xhr.open("GET", "/path/to/lyrics.lrc", true); xhr.send(null); **PS**: To specify time offset for `.lrc` file, please add the following tag into your `.lrc` file: [offset:t] `t` is time offset in milliseconds, positive value to shift time up, negative value to shift time down. ### Select lyric to highlight Lyrics.select(time); This method will return -1 when the time given is ahead the first lyric's time or `time` parameter is invalid. ### Synchoronize lyrics with HTML5 audio element var lrc = new Lyrics(LRC_text); document.getElementById('audio_player').addEventListener('timeupdate', function(){ //Unhighlight all the lyrics var lyric_selected = lyrics_container.querySelectorAll('p[selected]'); for (var i = 0; i < lyric_selected.length; i++) { lyric_selected[i].removeAttribute('selected'); } //Get the lyric to highlight var lyric_selected = lrc.select(this.currentTime); //Highlight the lyric if (lyric_selected != undefined && lyric_selected >= 0) { lyrics_container.querySelectorAll('p')[lyric_selected].setAttribute('selected', 'selected'); } }); Test Cases ---------- You may launch `text.html` and `test.min.html` from `test/` folder using brwoser to see the result of all the [QUnit](http://qunitjs.com/) based test cases. --- js-lyrics ========= [English](#english) | [中文](#chinese) 一个用于解析LRC文件的JavaScript库,也用于选择需要高亮的歌词。 安装 ---- 使用**_npm_**安装: $ npm install lyrics.js 从Git仓库安装: $ git clone https://github.com/frank-deng/js-lyrics.git 用法 ---- ### 解析`.lrc`文件 初始化解析器的同时加载`.lrc`文件中的内容: var lrc = new Lyrics(LRC_text); 加载`.lrc`文件中的内容,并替换之前加载的歌词: lrc.load(LRC_text); 从URL加载`.lrc`文件: var lrc = new Lyrics(); var xhr = new XMLHttpRequest(); xhr.addEventListener('readystatechange', function(e){ if (4==xhr.readyState && 200==xhr.status){ lrc.load(xhr.responseText); } }); xhr.open("GET", "/path/to/lyrics.lrc", true); xhr.send(null); **PS**:如果需要为`.lrc`指定时间偏移量,请在`.lrc`文件中加上如下标签: [offset:t] `t`为时间偏移量,单位为毫秒,正数为延后,负数为提前。 ### 选择需要高亮的歌词 Lyrics.select(time); 当时间早于第1条歌词的时间,或`time`参数非法时,返回-1。 ### 使用HTML5 audio标签同步歌词 var lrc = new Lyrics(LRC_text); document.getElementById('audio_player').addEventListener('timeupdate', function(){ //所有歌词取消高亮 var lyric_selected = lyrics_container.querySelectorAll('p[selected]'); for (var i = 0; i < lyric_selected.length; i++) { lyric_selected[i].removeAttribute('selected'); } //获取要高亮的歌词 var lyric_selected = lrc.select(this.currentTime); //高亮歌词(如果有) if (lyric_selected != undefined && lyric_selected >= 0) { lyrics_container.querySelectorAll('p')[lyric_selected].setAttribute('selected', 'selected'); } }); 测试用例 -------- 用浏览器打开`test/`目录下的`test.html`和`test.min.html`,可以查看[QUnit](http://qunitjs.com/)测试用例的运行结果。