Skip to content

ezlrc

An small CLI utility using and providing library's functional.

Note

All <path> arguments accept both audio files and plain-text lyrics files (such as .lrc or any other format, we actually don't check extension).


Getting type

-t <path>

Shows type of lyrics inside a file.

Example
$ ezlrc -t "Taking What's Not Yours - TV Girl.flac"
eLRC
$ ezlrc -t song.lrc
LRC

Getting line by timestamp

-lt <path> <ms>

Shows information about the line at current timestamp.

Arguments:

Argument Required? Value
file /path/to/file.lrc
ms timestamp in miliseconds
Example
$ ezlrc -lt song.lrc.ext 6123
Type: eLRC
Voice: 1
Line at 5000ms: This is the first line
Words:
* 5000ms: This
* 5500ms: is
* 6000ms: the
6500ms: first
7000ms: line
$ ezlrc -lt song.lrc.std 6123
Type: LRC
Line at 5000ms: This is the first line of the song

-slt <path> <ms>

Just the same as -lt just works only for standart LRC, not automatically detecting lyrics type

-elt <path> <ms>

Also the same, works only for eLRC


Rendering

-rxml <path> <ms> [<custom_tag>]

Renders lyrics in XML format. Read mode about XML formatting in Render.

Arguments:

Argument Required? Value
file /path/to/file.lrc
ms timestamp in miliseconds
custom_tag some_string
Example
$ ezlrc -rxml song.lrc.ext 6123
<lyric>
    <v1>
            <line current="true" timestamp="5000">
                    <current-words> #(1)!
                            <word timestamp="5000">This</word>
                            <word timestamp="5500">is</word>
                            <word timestamp="6000">the</word>
                    </current-words>
                            <word timestamp="6500">first</word>
                            <word timestamp="7000">line</word>
            </line>
            <line current="false" timestamp="10500">
                            <word timestamp="10500">Here</word>
                            <word timestamp="11000">comes</word>
                            <word timestamp="11500">the</word>
                            <word timestamp="12000">second</word>
                            <word timestamp="12500">line</word>
            </line>
            <line current="false" timestamp="15200">
                            <word timestamp="15200">And</word>
                            <word timestamp="15500">now</word>
                            <word timestamp="16000">the</word>
                            <word timestamp="16500">third</word>
                            <word timestamp="17000">line</word>
            </line>
            <line current="false" timestamp="20000">
                            <word timestamp="20000">Fourth</word>
                            <word timestamp="20500">line</word>
                            <word timestamp="21000">appears</word>
            </line>
            <line current="false" timestamp="25750">
                            <word timestamp="25750">Fifth</word>
                            <word timestamp="26000">line,</word>
                            <word timestamp="26500">finishing</word>
                            <word timestamp="27000">up</word>
            </line>
    </v1>
</lyric>
  1. <current-words> tag highlights that these words are being currently played: we provided timestamp of 6123 ms, and these three words are at less than 6123 ms
$ ezlrc -rxml song.lrc.std 6123
<lyric>
    <v1>
            <line current="true" timestamp="5000">This is the first line of the song</line> #(1)!
            <line current="false" timestamp="10500">Here comes the second line</line>
            <line current="false" timestamp="15200">And now the third line</line>
            <line current="false" timestamp="20000">Fourth line appears</line>
            <line current="false" timestamp="25750">Fifth line, finishing up</line>
    </v1>
</lyric>
  1. current="true" shows that shows that current line is being played, as provided timestamp is 6123 ms, and this line is at less than 6123 ms
$ ezlrc -rxml song.lrc.std 6123 test_tag_name
<test_tag_name> #(1)!
    <v1>
            <line current="true" timestamp="5000">This is the first line of the song</line> #(2)!
            <line current="false" timestamp="10500">Here comes the second line</line>
            <line current="false" timestamp="15200">And now the third line</line>
            <line current="false" timestamp="20000">Fourth line appears</line>
            <line current="false" timestamp="25750">Fifth line, finishing up</line>
    </v1>
</test_tag_name>
  1. Works the same way when using with eLRC!

  2. current="true" shows that shows that current line is being played, as provided timestamp is 6123 ms, and this line is at less than 6123 ms


-rhtml <path> <ms>

Renders lyrics in HTML format. Read mode about HTML formatting in Render.

Arguments:

Argument Required? Value
file /path/to/file.lrc
ms timestamp in miliseconds
Example
$ ezlrc -rhtml song.lrc.ext 6123
<div class="easylrc-lyrics">
        <div class="easylrc-group-v1">
                <p class="easylrc-line easylrc-v1" data-timestamp="5000" id="easylrc-current">
                        <span class="easylrc-current-words"> #(1)!
                                <span class="easylrc-word" data-timestamp="5000">This</span>
                                <span class="easylrc-word" data-timestamp="5500">is</span>
                                <span class="easylrc-word" data-timestamp="6000">the</span>
                        </span>
                                <span class="easylrc-word" data-timestamp="6500">first</span>
                                <span class="easylrc-word" data-timestamp="7000">line</span>
                </p>
                <p class="easylrc-line easylrc-v1" data-timestamp="10500">
                                <span class="easylrc-word" data-timestamp="10500">Here</span>
                                <span class="easylrc-word" data-timestamp="11000">comes</span>
                                <span class="easylrc-word" data-timestamp="11500">the</span>
                                <span class="easylrc-word" data-timestamp="12000">second</span>
                                <span class="easylrc-word" data-timestamp="12500">line</span>
                </p>
                <p class="easylrc-line easylrc-v1" data-timestamp="15200">
                                <span class="easylrc-word" data-timestamp="15200">And</span>
                                <span class="easylrc-word" data-timestamp="15500">now</span>
                                <span class="easylrc-word" data-timestamp="16000">the</span>
                                <span class="easylrc-word" data-timestamp="16500">third</span>
                                <span class="easylrc-word" data-timestamp="17000">line</span>
                </p>
                <p class="easylrc-line easylrc-v1" data-timestamp="20000">
                                <span class="easylrc-word" data-timestamp="20000">Fourth</span>
                                <span class="easylrc-word" data-timestamp="20500">line</span>
                                <span class="easylrc-word" data-timestamp="21000">appears</span>
                </p>
                <p class="easylrc-line easylrc-v1" data-timestamp="25750">
                                <span class="easylrc-word" data-timestamp="25750">Fifth</span>
                                <span class="easylrc-word" data-timestamp="26000">line,</span>
                                <span class="easylrc-word" data-timestamp="26500">finishing</span>
                                <span class="easylrc-word" data-timestamp="27000">up</span>
                </p>
        </div>
</div>
  1. <span> with class="easylrc-current-words" highlights that these words are being currently played: we provided timestamp of 6123 ms, and these three words are at less than 6123 ms
$ ezlrc -rhtml song.lrc.std 6123
<div class="easylrc-lyrics">
    <div class="easylrc-group-v1">
            <p class="easylrc-line easylrc-v1 easylrc-current-words" data-timestamp="5000" id="easylrc-current">This is the first line of the song</p> #(1)!
            <p class="easylrc-line easylrc-v1" data-timestamp="10500">Here comes the second line</p>
            <p class="easylrc-line easylrc-v1" data-timestamp="15200">And now the third line</p>
            <p class="easylrc-line easylrc-v1" data-timestamp="20000">Fourth line appears</p>
            <p class="easylrc-line easylrc-v1" data-timestamp="25750">Fifth line, finishing up</p>
    </div>
</div>
  1. This line has <p> with id="easylrc-current" and class="easylrc-current-words" which shows that current line is being played, as provided timestamp is 6123 ms, and this line is at less than 6123 ms

-rjson <path> <ms>

Renders lyrics in JSON format. Read mode about JSON formatting in Render.

Arguments:

Argument Required? Value
file /path/to/file.lrc
ms timestamp in miliseconds
Example
$ ezlrc -rjson song.lrc.ext 6123
[
        {
                "type": "ext",
                "timestamp": 5000,
                "current": true,
                "voice": 1,
                "text": "This is the first line",
                "words": [
                        {
                                "timestamp": 5000,
                                "current": true,
                                "text": "This"
                        },
                        {
                                "timestamp": 5500,
                                "current": true,
                                "text": "is"
                        },
                        {
                                "timestamp": 6000,
                                "current": true, #(1)!
                                "text": "the"
                        },
                        {
                                "timestamp": 6500,
                                "current": false,
                                "text": "first"
                        },
                        {
                                "timestamp": 7000,
                                "current": false,
                                "text": "line"
                        }
                ]
        },
        {
                "type": "ext",
                "timestamp": 10500,
                "current": false,
                "voice": 1,
                "text": "Here comes the second line",
                "words": [
                        {
                                "timestamp": 10500,
                                "current": false,
                                "text": "Here"
                        },
                        {
                                "timestamp": 11000,
                                "current": false,
                                "text": "comes"
                        },
                        {
                                "timestamp": 11500,
                                "current": false,
                                "text": "the"
                        },
                        {
                                "timestamp": 12000,
                                "current": false,
                                "text": "second"
                        },
                        {
                                "timestamp": 12500,
                                "current": false,
                                "text": "line"
                        }
                ]
        },
        {
                "type": "ext",
                "timestamp": 15200,
                "current": false,
                "voice": 1,
                "text": "And now the third line",
                "words": [
                        {
                                "timestamp": 15200,
                                "current": false,
                                "text": "And"
                        },
                        {
                                "timestamp": 15500,
                                "current": false,
                                "text": "now"
                        },
                        {
                                "timestamp": 16000,
                                "current": false,
                                "text": "the"
                        },
                        {
                                "timestamp": 16500,
                                "current": false,
                                "text": "third"
                        },
                        {
                                "timestamp": 17000,
                                "current": false,
                                "text": "line"
                        }
                ]
        },
        {
                "type": "ext",
                "timestamp": 20000,
                "current": false,
                "voice": 1,
                "text": "Fourth line appears",
                "words": [
                        {
                                "timestamp": 20000,
                                "current": false,
                                "text": "Fourth"
                        },
                        {
                                "timestamp": 20500,
                                "current": false,
                                "text": "line"
                        },
                        {
                                "timestamp": 21000,
                                "current": false,
                                "text": "appears"
                        }
                ]
        },
        {
                "type": "ext",
                "timestamp": 25750,
                "current": false,
                "voice": 1,
                "text": "Fifth line, finishing up",
                "words": [
                        {
                                "timestamp": 25750,
                                "current": false,
                                "text": "Fifth"
                        },
                        {
                                "timestamp": 26000,
                                "current": false,
                                "text": "line,"
                        },
                        {
                                "timestamp": 26500,
                                "current": false,
                                "text": "finishing"
                        },
                        {
                                "timestamp": 27000,
                                "current": false,
                                "text": "up"
                        }
                ]
        }
]
  1. This is a last block with "current": true, because this word and words before in this line are being currently played
$ ezlrc -rjson song.lrc.std 6123
[
        {
                "type": "std",
                "timestamp": 5000,
                "current": true, #(1)!
                "voice": 1,
                "text": "This is the first line of the song"
        },
        {
                "type": "std",
                "timestamp": 10500,
                "current": false,
                "voice": 1,
                "text": "Here comes the second line"
        },
        {
                "type": "std",
                "timestamp": 15200,
                "current": false,
                "voice": 1,
                "text": "And now the third line"
        },
        {
                "type": "std",
                "timestamp": 20000,
                "current": false,
                "voice": 1,
                "text": "Fourth line appears"
        },
        {
                "type": "std",
                "timestamp": 25750,
                "current": false,
                "voice": 1,
                "text": "Fifth line, finishing up"
        }
]
  1. This is a block with "current": true, because this line is being currently played

Misc

-v

Outputs current easyLRC library version (and embedded CLI utility too - they share the version).

Example
$ ezlrc -v
1.1.0