shtooka2.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. // librairie de gestion des répertoires et fichiers
  2. const fs = require("fs");
  3. const path = require("path");
  4. // librairie de gestion des arguments de la ligne de commande
  5. var argv = require("optimist").argv;
  6. // librairie de traitement du pinyin
  7. const pinyinizer = require('pinyinizer');
  8. const piyi = require("pinyin");
  9. // librairie de gestion du hanzi
  10. const opencc = require('node-opencc');
  11. // données de stockage
  12. var fichierJson = "shtooka-table.json";
  13. // en entrée, on donne le nom du fichier à traiter sans le répertoire
  14. var repertoireInitial = "./";
  15. var argument = argv._[0];
  16. fichierDonnées = path.join(repertoireInitial,argument);
  17. // DEBUG
  18. console.log("fichier données en entrée: ",fichierDonnées);
  19. // utilitaires
  20. var tab = "\t";
  21. var endLine = "\n";
  22. // Variable fichier du fichier json en sortie
  23. fichierJson = path.join(repertoireInitial, argument + ".json");
  24. // DEBUG
  25. console.log("fichier données en sortie: ",fichierJson);
  26. var donnéesbrutes = fs.readFileSync(fichierDonnées);
  27. var données = JSON.parse(donnéesbrutes);
  28. // DEBUG
  29. //console.log("Locuteur", données.index.group._attributes.swac_speak_name);
  30. var locuteur = données.index.group._attributes.swac_speak_name;
  31. //DEBUG
  32. console.log("locuteur: ", locuteur);
  33. var enregistrements = données.index.group.file;
  34. // DEBUG
  35. //console.log(enregistrements);
  36. l = {
  37. "hanzi": "",
  38. "pinyin": "",
  39. "sound" : "",
  40. "locuteur": ""
  41. };
  42. // création du nouveau fichier json
  43. var json = fs.createWriteStream(fichierJson);
  44. json.write('{"shtooka":[');
  45. enregistrements.forEach(function(enregistrement) {
  46. try {
  47. var temps = "";
  48. var pinyintemp = "";
  49. // console.log(enregistrement._attributes.path, "**", enregistrement.tag._attributes.swac_text);
  50. l.hanzi = enregistrement.tag._attributes.swac_text;
  51. temps = piyi(l.hanzi, {
  52. segment: true // Enable Chinese words eegmentation, fix most heteronym problem.
  53. });
  54. // DEBUG
  55. // console.log(piyi(l.hanzi));
  56. temps.forEach(function(temp){
  57. pinyintemp = pinyintemp + temp;
  58. })
  59. // DEBUG
  60. // console.log(pinyintemp);
  61. l.pinyin = pinyintemp;
  62. l.sound = enregistrement._attributes.path;
  63. l.locuteur = locuteur;
  64. json.write(JSON.stringify(l) + ",");
  65. // DEBUG
  66. //console.log(l);
  67. } catch (err) {
  68. console.log(err);
  69. }
  70. });
  71. // écriture fin de fichier, et fermeture fichier json
  72. json.write('{},]}');
  73. json.end();