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.
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
-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>
-
<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>
-
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>
-
Works the same way when using with eLRC!
-
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>
-
<span>withclass="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>
- This line has
<p>withid="easylrc-current"andclass="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"
}
]
}
]
- 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"
}
]
- 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).