json-file.pl 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. #/usr/lib/perl
  2. use strict;
  3. use warnings;
  4. binmode STDOUT, ":utf8";
  5. use utf8;
  6. use JSON;
  7. # FAI variables
  8. my $nb_adh = 0; # nombre d'adhérents
  9. my $nb_abo = 0; # nombre d'abonnés
  10. my $site = ""; # site web
  11. my $salon = ""; # salon irc/xmpp
  12. my $statut = 0; # étape de 1 à 8 du FAI
  13. my $date_crea = ""; # date de la création de l'asso
  14. my $date_jffdn = ""; # date de la rentrée dans la fédé
  15. my $contact = ""; # email de contact
  16. my $description = ""; # description de l'asso
  17. # variables des dossiers
  18. my $dump_dir = "dump";
  19. my $wrk_dir = "wrk-dir";
  20. sub info{
  21. my $fai = shift @_;
  22. my $json;
  23. {
  24. local $/; #Enable 'slurp' mode
  25. open my $fh, "<", "/home/canouan/bot-irc/". $dump_dir."/". $fai;
  26. $json = <$fh>;
  27. close $fh;
  28. }
  29. my $data = decode_json($json);
  30. if (!length $data->{"ispformat"}->{"memberCount"}) {
  31. $nb_adh = "N/A";
  32. }
  33. else {
  34. $nb_adh = $data->{"ispformat"}->{"memberCount"};
  35. }
  36. if (!length $data->{"ispformat"}->{"subscriberCount"}) {
  37. $nb_abo = "N/A";
  38. }
  39. else {
  40. $nb_abo = $data->{"ispformat"}->{"subscriberCount"};
  41. }
  42. if (!length $data->{"ispformat"}->{"website"}) {
  43. $site = "N/A";
  44. }
  45. else {
  46. $site = $data->{"ispformat"}->{"website"};
  47. }
  48. if (!length $data->{"ispformat"}->{"chatrooms"}) {
  49. $salon = "N/A";
  50. }
  51. else {
  52. $salon = $data->{"ispformat"}->{"chatrooms"}->[0];
  53. }
  54. if (!length $data->{"ispformat"}->{"progressStatus"}) {
  55. $statut = "N/A";
  56. }
  57. else {
  58. $statut = $data->{"ispformat"}->{"progressStatus"};
  59. }
  60. if (!length $data->{"ispformat"}->{"creationDate"}) {
  61. $date_crea = "N/A";
  62. }
  63. else{
  64. $date_crea = $data->{"ispformat"}->{"creationDate"};
  65. }
  66. if (!length $data->{"ispformat"}->{"ffdnMemberSince"}) {
  67. $date_jffdn = "N/A";
  68. }
  69. else {
  70. $date_jffdn = $data->{"ispformat"}->{"ffdnMemberSince"};
  71. }
  72. if (!length $data->{"ispformat"}->{"email"}) {
  73. $contact = "N/A";
  74. }
  75. else {
  76. $contact = $data->{"ispformat"}->{"email"};
  77. }
  78. if (!length $data->{"ispformat"}->{"description"}) {
  79. $description = "N/A";
  80. }
  81. else {
  82. $description = $data->{"ispformat"}->{"description"};
  83. }
  84. my $filename = "/home/canouan/bot-irc/wrk-dir/". $fai.".info";
  85. my $fh2;
  86. open ($fh2, '>', $filename) or die "Impossible d'ouvrir le fichier $filename en écriture";
  87. # print $fh2 "Description : ". $description . " Le site est ". $site .". Le salon pour discuter est : ". $salon ." et le mail de contact est : ". $contact . ". Ce FAI a été crée le ". $date_crea ." et il a rejoint la fédé le ". $date_jffdn ."\n";
  88. print $fh2 $description . ". Site : ". $site ." - Salon de discussion : ". $salon ." - Adresse de contact : ". $contact . " - Crée le ". $date_crea .", il a rejoint la fédé le ". $date_jffdn ."\n";
  89. close $fh2;
  90. }
  91. sub adh{
  92. my $fai = shift @_;
  93. my $json;
  94. {
  95. local $/; #Enable 'slurp' mode
  96. open my $fh, "<", "/home/canouan/bot-irc/dump/". $fai;
  97. $json = <$fh>;
  98. close $fh;
  99. }
  100. my $data = decode_json($json);
  101. if (!length $data->{"ispformat"}->{"memberCount"}) {
  102. $nb_adh = "N/A";
  103. }
  104. else {
  105. $nb_adh = $data->{"ispformat"}->{"memberCount"};
  106. }
  107. if (!length $data->{"ispformat"}->{"subscriberCount"}) {
  108. $nb_abo = "N/A";
  109. }
  110. else {
  111. $nb_abo = $data->{"ispformat"}->{"subscriberCount"};
  112. }
  113. my $filename = "/home/canouan/bot-irc/wrk-dir/". $fai.".adh";
  114. my $fh2;
  115. open ($fh2, '>', $filename) or die "Impossible d'ouvrir le fichier $filename en écriture";
  116. print $fh2 $nb_adh ." adhérent·e·s (et ".$nb_abo." abonné·e·s).\n";
  117. close $fh2;
  118. }
  119. sub adh_abo_ffdn {
  120. my @filesdump = </home/canouan/bot-irc/dump/*>;
  121. my $filedump;
  122. my $adh_ffdn = 0;
  123. my $abo_ffdn = 0;
  124. foreach $filedump (@filesdump) {
  125. $filedump =~ s{/home/canouan/bot-irc/dump/}{};
  126. my $json;
  127. {
  128. local $/; #Enable 'slurp' mode
  129. open my $fh, "<", "/home/canouan/bot-irc/dump/". $filedump;
  130. $json = <$fh>;
  131. close $fh;
  132. }
  133. my $data = decode_json($json);
  134. unless (!length $data->{"ispformat"}->{"memberCount"}) {
  135. $nb_adh = $data->{"ispformat"}->{"memberCount"};
  136. }
  137. unless (!length $data->{"ispformat"}->{"subscriberCount"}) {
  138. $nb_abo = $data->{"ispformat"}->{"subscriberCount"};
  139. }
  140. my $fh2;
  141. open ($fh2, '>', $filedump) or die "Impossible d'ouvrir le fichier $filedump en écriture";
  142. $adh_ffdn += $nb_adh;
  143. $abo_ffdn += $nb_abo;
  144. close $fh2;
  145. }
  146. my $filenameadh = "/home/canouan/bot-irc/wrk-dir/ffdn.adh";
  147. my $fh3;
  148. open ($fh3, '>', $filenameadh) or die "Impossible d'ouvrir le fichier $filenameadh en écriture";
  149. print $fh3 "La fédé compte ".$adh_ffdn ." adhérent·e·s et ". $nb_abo ." abonné·e·s";
  150. close $fh3;
  151. }
  152. my @filesdump = </home/canouan/bot-irc/dump/*>;
  153. my $filedump;
  154. foreach $filedump (@filesdump) {
  155. $filedump =~ s{/home/canouan/bot-irc/dump/}{};
  156. info ("$filedump");
  157. }
  158. foreach $filedump (@filesdump) {
  159. $filedump =~ s{/home/canouan/bot-irc/dump/}{};
  160. adh ("$filedump");
  161. }
  162. adh_abo_ffdn();