shtooka1.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. // librairie de gestion du hanzi
  9. const opencc = require('node-opencc');
  10. // données de stockage
  11. var fichierJson = "shtooka-table.json";
  12. // en entrée, on donne le nom du fichier à traiter sans le répertoire
  13. var repertoireInitial = "./";
  14. var argument = argv._[0];
  15. fichierDonnées = path.join(repertoireInitial,argument);
  16. // DEBUG
  17. console.log("fichier données en entrée: ",fichierDonnées);
  18. // utilitaires
  19. var tab = "\t";
  20. var endLine = "\n";
  21. // Variable fichier du fichier json en sortie
  22. fichierJson = path.join(repertoireInitial, argument + ".json");
  23. // DEBUG
  24. console.log("fichier données en sortie: ",fichierJson);
  25. var donnéesbrutes = fs.readFileSync(fichierDonnées);
  26. var données = JSON.parse(donnéesbrutes);
  27. // DEBUG
  28. //console.log("Locuteur", données.index.group._attributes.swac_speak_name);
  29. var locuteur = données.index.group._attributes.swac_speak_name;
  30. //DEBUG
  31. console.log("locuteur: ", locuteur);
  32. var enregistrements = données.index.group.file;
  33. // DEBUG
  34. //console.log(enregistrements);
  35. l = {
  36. "hanzi": "",
  37. "pinyin": "",
  38. "sound" : "",
  39. "locuteur": ""
  40. };
  41. // création du nouveau fichier json
  42. var json = fs.createWriteStream(fichierJson);
  43. json.write('{"shtooka":[');
  44. enregistrements.forEach(function(enregistrement) {
  45. try {
  46. // console.log(enregistrement._attributes.path, "**", enregistrement.tag._attributes.swac_text);
  47. l.hanzi = enregistrement.tag._attributes.swac_text;
  48. l.pinyin = enregistrement.tag._attributes.swac_pron_phon;
  49. l.sound = enregistrement._attributes.path;
  50. l.locuteur = locuteur;
  51. json.write(JSON.stringify(l) + ",");
  52. // DEBUG
  53. // console.log(l);
  54. } catch (err) {
  55. console.log(err);
  56. }
  57. });
  58. // écriture fin de fichier, et fermeture fichier json
  59. json.write('{},]}');
  60. json.end();