npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

lyrics.js

v0.4.2

Published

A JavaScript for parsing LRC file and synchronize lyrics.

Downloads

13

Readme

js-lyrics

English | 中文

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 based test cases.


js-lyrics

English | 中文

一个用于解析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.htmltest.min.html,可以查看QUnit测试用例的运行结果。