From 41235fe9dd8263e6e5d3482d3ddf863fbfeff142 Mon Sep 17 00:00:00 2001 From: Louis Royer Date: Wed, 28 Aug 2024 17:09:55 +0200 Subject: [PATCH] Add --encoding argument This will allow to convert ISO 8859-1 files as requested in #8 (use `--encoding=latin1`). --- README.md | 1 + src/index.ts | 11 +- test/la_despedida.txt | 524 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 535 insertions(+), 1 deletion(-) create mode 100644 test/la_despedida.txt diff --git a/README.md b/README.md index c013d40..f3e1a76 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,7 @@ You can test code with the `txt` file included in the test directory : ```sh node dist/index.js test/jojo.txt +node dist/index.js test/la_despedida.txt --encoding=latin1 ``` ## License diff --git a/src/index.ts b/src/index.ts index 0470428..438c1ff 100644 --- a/src/index.ts +++ b/src/index.ts @@ -85,13 +85,22 @@ async function mainCLI() { if (!process.argv[2]) { throw `Ultrastar2ass - Convert Ultrastar karaoke to ASS file Usage: ultrastar2ass myfile.txt + Options: + --encoding=input-file-encoding (default: utf8) Output goes to stdout `; } const txtFile = process.argv[2]; + let encoding = 'utf8' + if (process.argv[3] && process.argv[3].startsWith('--encoding=')) { + encoding = process.argv[3].replace('--encoding=', '') + if (!['utf8', 'utf-8', 'utf16le', 'utf-16le', 'latin1'].includes(encoding)) { + throw 'Only utf8, utf16le, and latin1 encodings are supported.' + } + } if (!await asyncExists(txtFile)) throw `File ${txtFile} does not exist`; - const txt = await asyncReadFile(txtFile, 'utf8'); + const txt = await asyncReadFile(txtFile, encoding); return convertToASS(txt, { syllable_precision: true }); } diff --git a/test/la_despedida.txt b/test/la_despedida.txt new file mode 100644 index 0000000..11d1789 --- /dev/null +++ b/test/la_despedida.txt @@ -0,0 +1,524 @@ +#TITLE:La despedida +#ARTIST:Daddy Yankee +#LANGUAGE:Español +#GENRE:Regueton +#YEAR:2010 +#MP3:Daddy Yankee - La despedida.mp3 +#COVER:Daddy Yankee - La despedida.jpg +#VIDEO:Daddy Yankee - La despedida.avi +#BPM:560 +#GAP:46160 +: 0 4 14 An +: 11 6 14 tes +: 20 3 14 que +: 28 6 14 te +: 39 4 12 va +: 44 8 12 yas +: 56 4 12 da +: 63 6 16 me un +: 74 9 14 be +: 87 12 9 so +- 109 +: 146 5 14 Sé +: 155 4 14 que +: 164 6 14 so +: 175 7 14 ña +: 185 4 12 ré +: 192 4 12 con +: 200 7 12 tu +: 209 8 16 re +: 218 10 14 gre +: 231 17 9 so +- 258 +: 303 7 17 Mi +: 313 8 17 vi +: 322 7 17 da +: 331 6 16 no es +: 341 5 12 i +: 349 13 12 gual +- 372 +: 376 6 17 Aho +: 384 6 17 ra +: 396 5 17 que +: 405 5 16 te +: 411 7 12 per +: 423 8 12 dí +- 437 +: 440 11 10 ¿Có +: 456 8 10 mo +: 468 8 17 te +: 479 6 16 voy +: 488 6 12 a ol +: 496 7 14 vi +: 505 22 14 dar? +- 537 +: 588 10 10 ¿Có +: 602 10 10 mo +: 614 7 17 te +: 623 8 16 voy +: 635 7 12 a ol +* 644 5 14 vi +: 652 26 14 dar? +- 715 +: 764 6 17 Oh +* 772 8 16 ~ +: 782 6 12 ~ +: 789 6 9 ~ +: 797 17 14 ~ +: 815 17 9 ~ +- 869 +: 912 6 17 Oh +: 920 7 16 ~ +: 928 6 12 ~ +: 936 6 9 ~ +: 944 18 14 ~ +: 963 18 9 ~ +- 1018 +: 1056 6 17 Oh +: 1064 8 16 ~ +: 1074 6 12 ~ +: 1083 6 9 ~ +: 1091 17 14 ~ +: 1111 18 9 ~ +- 1166 +* 1204 6 17 Oh +: 1212 9 16 ~ +: 1223 6 12 ~ +: 1230 6 9 ~ +: 1238 18 14 ~ +: 1259 18 9 ~ +- 1287 +: 1312 3 14 Sé +: 1316 2 14 que +: 1322 2 12 me +: 1326 5 10 di +: 1333 9 10 jis +* 1343 3 10 te +: 1348 4 10 que el +: 1353 2 10 a +: 1357 3 10 mor +: 1363 5 10 e +: 1371 7 12 xis +: 1380 2 12 te y +- 1383 +: 1385 2 12 su +: 1390 3 12 po +: 1396 3 12 der +: 1402 3 14 ha +: 1409 6 14 ce +: 1417 3 14 lo +: 1423 4 14 que +: 1432 8 14 se +: 1441 3 14 a +- 1456 +: 1460 3 14 Que +* 1464 3 12 cam +: 1468 3 10 bi +: 1472 7 10 é el +: 1480 2 10 des +: 1484 7 10 ti +: 1493 3 10 no +* 1497 3 10 qué +: 1501 2 10 da +: 1504 3 12 te +: 1510 6 12 con +: 1517 8 12 mi +: 1527 3 12 go +- 1531 +: 1533 3 12 por +: 1537 2 12 que +: 1540 3 14 no +: 1546 8 14 so +: 1556 5 14 por +: 1563 2 14 to +* 1566 11 14 la i +: 1578 9 14 de +: 1588 2 14 a +- 1602 +: 1606 2 14 un +: 1610 2 12 a +: 1615 4 10 mor +: 1620 2 10 a +: 1623 5 10 la +: 1629 3 10 dis +: 1633 2 10 tan +: 1636 4 10 cia +: 1641 2 10 for +: 1645 3 10 ta +: 1649 2 10 le +: 1655 3 10 ce +: 1659 4 12 la +: 1665 3 12 con +: 1669 4 12 fian +: 1674 2 12 za y +- 1677 +: 1679 4 12 ter +: 1684 3 12 mi +: 1688 2 14 na +: 1691 10 14 sien +: 1702 5 14 do u +: 1709 5 14 na o +: 1717 4 14 di +: 1723 9 14 se +: 1733 3 14 a +- 1746 +: 1753 2 14 A +: 1756 5 12 sí es +: 1762 2 10 la +: 1765 7 10 ra +: 1774 4 10 zón +: 1785 4 10 pe +: 1790 3 10 ro +: 1794 3 10 mi +: 1798 4 10 co +: 1803 6 12 ra +: 1810 9 12 zón +- 1824 +: 1826 2 12 va +: 1829 3 12 ga +: 1833 4 12 nan +: 1838 10 12 do en +: 1850 6 14 es +: 1857 4 14 ta +: 1862 8 14 pe +: 1872 6 14 le +: 1879 1 14 a +- 1881 +: 1883 6 17 Y +: 1890 6 16 tu +: 1897 8 17 re +: 1907 12 16 cuer +: 1921 13 14 do +- 1944 +: 1953 8 17 me es +: 1963 7 16 tá +: 1973 8 17 ma +: 1982 12 16 tan +* 1995 14 14 do +- 2019 +: 2028 8 17 Has +* 2037 7 16 ta +: 2045 7 17 la +: 2054 11 16 muer +: 2067 12 14 te a +* 2082 18 19 quí es +: 2101 5 17 ta +: 2108 8 16 ré es +: 2119 9 17 pe +: 2130 10 16 ran +: 2142 17 14 do +- 2171 +: 2175 8 17 Nun +: 2184 7 16 ca +: 2192 9 17 lo ol +: 2202 12 16 vi +: 2215 16 14 des +- 2241 +: 2248 6 17 Te +: 2255 9 16 si +: 2265 6 17 go a +: 2272 15 16 man +: 2289 17 14 do +- 2318 +: 2322 7 17 Has +: 2330 7 16 ta +: 2339 7 17 la +: 2348 10 16 muer +* 2360 13 14 te a +: 2377 17 19 quí es +: 2396 6 17 ta +: 2403 8 16 ré es +: 2413 7 17 pe +* 2422 11 16 ran +: 2435 22 14 do +- 2531 +: 2964 8 17 Oh +: 2973 7 16 ~ +: 2981 8 12 ~ +: 2991 9 9 ~ +: 3001 15 14 ~ +* 3017 21 9 ~ +- 3048 +: 3084 4 14 An +: 3095 6 14 tes +: 3104 3 14 que +: 3112 6 14 te +: 3123 4 12 va +: 3128 8 12 yas +* 3140 4 12 da +: 3147 6 16 me un +: 3158 9 14 be +: 3171 12 9 so +- 3193 +: 3230 5 14 Sé +: 3239 4 14 que +: 3248 6 14 so +: 3259 7 14 ña +: 3269 4 12 ré +: 3276 4 12 con +: 3284 7 12 tu +: 3293 8 16 re +: 3302 10 14 gre +: 3315 17 9 so +- 3342 +: 3387 7 17 Mi +: 3397 8 17 vi +: 3406 7 17 da +: 3415 6 16 no es +: 3425 5 12 i +: 3433 13 12 gual +- 3456 +: 3460 6 17 Aho +: 3468 6 17 ra +: 3480 5 17 que +: 3489 5 16 te +: 3495 7 12 per +: 3507 8 12 dí +- 3521 +: 3524 11 10 ¿Có +: 3540 8 10 mo +: 3552 8 17 te +: 3563 6 16 voy +: 3572 6 12 a ol +: 3580 7 14 vi +: 3589 22 14 dar? +- 3621 +: 3672 10 10 ¿Có +: 3686 10 10 mo +: 3698 7 17 te +: 3707 8 16 voy +: 3719 7 12 a ol +: 3728 5 14 vi +: 3736 26 14 dar? +- 3772 +: 3810 5 9 Ha +: 3816 11 14 blé +: 3829 15 12 con +: 3846 9 12 el +: 3856 6 12 hom +: 3863 7 12 bre +- 3881 +: 3885 4 9 que +: 3890 15 14 vi en +: 3910 9 12 el +: 3920 6 12 es +: 3927 8 12 pe +: 3936 6 12 jo +- 3953 +: 3957 2 9 Me +: 3960 7 14 di +: 3968 8 12 jo +: 3978 4 12 de +: 3983 6 12 ja +: 3992 6 12 que +: 4000 9 12 vue +: 4010 4 12 le +- 4024 +: 4032 2 9 Que +: 4035 13 14 se +: 4049 12 12 va +: 4062 10 12 ya +: 4073 7 12 le +: 4082 7 12 jos +- 4096 +: 4099 3 9 Si +: 4103 10 14 vuel +: 4114 7 12 ve e +: 4122 4 12 se a +: 4127 9 12 mor +: 4138 5 12 es +: 4144 8 9 tu +: 4153 5 9 yo y +- 4163 +* 4165 6 9 si +: 4172 5 9 no +: 4178 9 14 vuel +: 4188 7 12 ve +: 4196 4 12 nun +: 4201 5 12 ca +* 4209 8 12 fue +: 4222 5 9 tu +: 4229 6 9 yo +- 4245 +: 4255 14 14 Si +: 4271 12 12 gue +: 4284 6 9 mi +: 4292 9 9 sa +: 4302 8 9 bio +: 4311 5 7 con +: 4318 19 10 se +* 4339 22 9 jo +- 4371 +: 4381 6 17 Y +: 4388 6 16 tu +: 4395 8 17 re +: 4405 12 16 cuer +: 4419 13 14 do +- 4442 +: 4451 8 17 me es +: 4461 7 16 tá +* 4471 8 17 ma +: 4480 12 16 tan +* 4493 14 14 do +- 4517 +: 4526 8 17 Has +: 4535 7 16 ta +: 4543 7 17 la +: 4552 11 16 muer +: 4565 12 14 te a +: 4580 18 19 quí es +: 4599 5 17 ta +: 4606 8 16 ré es +: 4617 9 17 pe +* 4628 10 16 ran +: 4640 17 14 do +- 4669 +: 4673 8 17 Nun +: 4682 7 16 ca +: 4690 9 17 lo ol +: 4700 12 16 vi +: 4713 16 14 des +- 4739 +: 4746 6 17 Te +: 4753 9 16 si +: 4763 6 17 go a +: 4770 15 16 man +: 4787 17 14 do +- 4816 +: 4820 7 17 Has +* 4828 7 16 ta +: 4837 7 17 la +: 4846 10 16 muer +: 4858 13 14 te a +* 4875 17 19 quí es +: 4894 6 17 ta +: 4901 8 16 ré es +: 4911 7 17 pe +: 4920 11 16 ran +: 4933 12 14 do +- 4946 +: 4948 5 12 por +: 4954 18 14 siem +: 4975 8 12 pre +- 4992 +: 4995 6 14 An +* 5002 6 14 tes +* 5010 6 14 que +: 5017 8 14 te +: 5026 6 12 va +: 5034 11 12 yas +: 5047 7 12 da +: 5055 8 16 me un +: 5066 8 14 be +: 5078 20 9 so +- 5108 +: 5138 6 14 Sé +: 5146 6 14 que +: 5156 6 14 so +: 5164 12 14 ña +: 5178 5 12 ré +: 5185 7 12 con +: 5193 7 12 tu +: 5201 10 16 re +: 5212 9 14 gre +: 5224 15 9 so +- 5249 +: 5295 7 17 Mi +: 5304 9 17 vi +: 5314 7 17 da +: 5323 8 16 no es +: 5333 6 12 i +: 5341 13 12 gual +- 5365 +: 5369 6 17 Aho +: 5376 6 17 ra +: 5387 6 17 que +: 5397 5 16 te +: 5403 7 12 per +: 5415 8 12 dí +- 5432 +: 5436 11 10 ¿Có +: 5449 8 10 mo +: 5460 8 17 te +: 5471 6 16 voy +: 5480 6 12 a ol +: 5488 7 14 vi +: 5497 32 14 dar? +- 5539 +: 5581 10 10 ¿Có +: 5593 11 10 mo +: 5606 9 17 te +: 5617 8 16 voy +: 5627 7 12 a ol +* 5636 6 14 vi +: 5644 14 14 dar? +- 5659 +: 5661 3 14 Só +: 5666 4 14 lo +: 5671 3 14 di +* 5675 4 14 me +: 5680 4 14 co +: 5685 4 14 mo +: 5692 4 14 yo +: 5698 10 14 te ol +: 5710 8 14 vi +: 5719 4 12 do +: 5725 4 12 ma' +- 5730 +: 5732 7 11 ¿Có +: 5741 10 11 mo +: 5753 8 17 te +: 5764 9 16 voy +: 5775 8 12 a ol +: 5786 5 14 vi +: 5792 15 14 dar? +- 5808 +: 5810 4 14 Só +: 5815 3 14 lo +: 5819 3 14 di +: 5823 3 14 me +: 5827 4 14 co +: 5832 3 14 mo +* 5836 5 14 yo +: 5842 11 14 te ol +: 5854 8 17 vi +: 5864 5 17 do +: 5870 3 17 ma' +- 5875 +: 5877 10 10 ¿Có +: 5888 11 10 mo +: 5900 10 17 te +: 5912 7 16 voy +: 5922 8 12 a ol +: 5932 5 14 vi +: 5939 28 14 dar? +- 5977 +: 6031 3 14 Te +: 6035 3 14 ve +: 6039 5 14 ré al +: 6045 6 14 fi +: 6052 8 14 nal +: 6061 4 12 del +: 6072 4 12 ca +: 6077 6 12 mi +: 6084 4 12 no +- 6100 +: 6104 4 14 Te +: 6109 3 14 ve +: 6113 6 14 ré al +: 6120 4 14 fi +: 6125 8 14 nal +: 6135 5 12 del +: 6147 4 12 ca +: 6152 6 12 mi +: 6159 3 12 no +- 6172 +: 6176 8 9 Si a +* 6185 8 9 sí +: 6194 6 9 lo +: 6202 6 9 quie +: 6209 4 9 re el +: 6214 4 12 des +: 6221 11 12 ti +: 6233 4 12 no +E