bot_plus/utils_cli/bot_plus_cli_mencions_json_cli.php

215 líneas
6,8 KiB
PHP
Original Blame Històric

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
$crmn = microtime(true);
if (!empty($_SERVER["argv"][1])){
$argument = $_SERVER["argv"][1];
} else {
// Presenta l'ajuda
echo "NO HE REBUT la variable\n";
echo "Cal el directori on s'executa el bot_plus.\n";
exit;
}
$lloc = $argument;
// ara pot carregar la configuració i el logger
include("".$lloc."/configuracio/bot_plus_cfg.php");
include("".$lloc."/utils/bot_plus_funcions.php");
require_once("".$lloc."/lib/logger.php");
//echo $lloc;
$fitxer = $lloc."/fitxers/mencions.json";
//echo $fitxer;
//matriu a partir del fitxer
$json_dec = json_decode(file_get_contents($fitxer), true);
//echo "matriu fitxer\n";
//print_r($json_dec);
//echo is_array($json_dec)."\n";
//sleep(2);
$reg_arx = count($json_dec);
echo "L'arxiu té ".$reg_arx." ".(($reg_arx<>1)?"registres":"registre")."\n";
$dades_url = ["mention"];
//http_build_query_for_curl($dades_url, $limita_enq);
// consulta els existents per afegir-los a la matriu existent si no hi son
//$menc_mat_nova = ConsultaNotificacions($token,$base_url,$limit_m,$headers);
$limit_m = 80;
$menc_mat_nova = ConsultaNotificacions($token,$base_url,$limit_m,$headers);
//print_r($menc_mat_nova);
//exit;
$nom_mat = count($menc_mat_nova);
echo "A la instància he repassat les darreres ".$nom_mat." ".(($nom_mat<>1)?"notificacions":"notificació")."\n";
// fer matriu de mencions noves
$menc_mat = array();
if($nom_mat>=1) {
$mc = 0;
for($f=0;$f<$nom_mat;$f++) {
$men_id = $menc_mat_nova[$f]['id'];
$men_tip = $menc_mat_nova[$f]['type'];
$men_qui = $menc_mat_nova[$f]['account']['acct'];
$men_qua = $menc_mat_nova[$f]['created_at'];
if($men_tip == "mention") { $men_mid = $menc_mat_nova[$f]['status']['id'];
$men_que = html_entity_decode(strip_tags($menc_mat_nova[$f]['status']['content']));
} else { $men_mid = 0; $men_que = null; }
if($men_tip == "mention") {
$men_mid = $menc_mat_nova[$f]['status']['id'];
$men_que = str_replace(["&#39;"]," ", $men_que);
$men_que = str_replace(["'","`","","\n"],'', $men_que);
$men_que = str_replace(['#','&','"','“','”'],'', $men_que);
$comp_info = strpos($men_que,"infobot");
$comp_imps = strpos($men_que,"impulsosbot");
$comp_orat = strpos($men_que,"oratgebot");
$comp_salu = strpos($men_que,"saludabot");
$comp_usu = strpos($men_que,"usuaribot");
if( ($comp_info == false)&&($comp_salu == false)&&($comp_orat == false)&&($comp_imps == false)&&($comp_usu == false) ) {
$menc_mat[] = array ( 'id' => (int)$men_id, 'mis_id' => (int)$men_mid, 'qui' => $men_qui, 'mencio' => $men_tip, 'quan' => $men_qua, 'que' => $men_que );
$mc++;
}
// sleep(2);
}
/** else {
// $menc_mat[] = array ( );
$menc_mat[] = array ( 'id' => (int)0, 'mis_id' => (int)0, 'qui' => null, 'mencio' => null, 'quan' => null );
}
**/
}
$comprova_mat = is_array($menc_mat);
echo "comprova: ".$comprova_mat."\n";
//echo "menc_mat_f\n";
//print_r($menc_mat);
//sleep(2);
//exit;
// evita repetir
$fins = count($menc_mat);
//if( ($mc<0) ){
echo "De les ".$nom_mat." notificacions, ".$mc." ".(($mc<>1)?"són":"és")." una menció.\n";
$cont_fit = 0;
//echo $fins."\n";
for($g=0;$g<$fins;$g++) {
$id_busc = $menc_mat[$g]['id'];
$qu_busc = $menc_mat[$g]['qui'];
$men_que = $menc_mat[$g]['que'];
// echo "id_busc: ".$id_busc."\n";
$troba = array_search($id_busc, array_column($json_dec, 'id'));
// echo "troba: ".$troba."\n";
if( ($troba !== false ) ) {
// echo "La menció ".$id_busc." de ".$qu_busc." ja està al registre\n";
} else {
// if($id_busc<>0) {
$comp_info = strpos($men_que,"infobot");
$comp_imps = strpos($men_que,"impulsosbot");
$comp_orat = strpos($men_que,"oratgebot");
$comp_salu = strpos($men_que,"saludabot");
$comp_usu = strpos($men_que,"usuaribot");
if( ($id_busc<>0)&&($comp_info == false)&&($comp_salu == false)&&($comp_orat == false)&&($comp_imps == false)&&($com_usu == false) ) {
echo "NOVA MENCIÓ ".$id_busc." de ".$qu_busc."\n";
array_push($json_dec,
['id' => (int)$menc_mat[$g]['id'], 'mis_id' => (int)$menc_mat[$g]['mis_id'],
'qui' => $menc_mat[$g]['qui'], 'mencio' => $menc_mat[$g]['mencio'],
'quan' => $menc_mat[$g]['quan'], 'que' => $menc_mat[$g]['que']
]);
}
// escriu la menció al fitxer per no repetir-la
$escriu_mencions = fopen($lloc."/fitxers/mencions_r.txt", "a") or die("No puc escriure al registre!");
fwrite($escriu_mencions, $en_resposta."\n");
fclose($escriu_mencions);
$cont_fit++;
}
}
//echo "matriu després de push\n";
//print_r($json_dec);
if($cont_fit >= 1) {
// actualitza el fitxer json
// $fes_json = json_encode($json_dec, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES|JSON_OBJECT_AS_ARRAY|JSON_PRETTY_PRINT);
$fes_json = json_encode($json_dec, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT);
$escriu_f_json = fopen($lloc."/fitxers/mencions.json", "w") or die("No puc escriure al registre!");
fwrite($escriu_f_json, $fes_json);
fclose($escriu_f_json);
}
//fin if matriu de notificacions té registres
}
else {
echo "No hi han mencions noves.\n";
}
// per a fer els repas linia a linia
$maxim = count($json_dec);
$e = 0;
$reg = 0;
//$ara = strtotime("today");
//$ara = strtotime(filemtime($fitxer));
$ara = (filemtime($fitxer));
//echo $ara."\n";
echo "REPASE ".(($maxim<>1)?"ELS ".$maxim." REGISTRES":"EL REGISTRE").".\n";
for($e=0;$e<$maxim;$e++) {
$men_id = $json_dec[$e]['id'];
$men_mi = $json_dec[$e]['mis_id'];
$men_qi = $json_dec[$e]['qui'];
$men_qa = $json_dec[$e]['quan'];
$men_tp = $json_dec[$e]['mencio'];
$men_qe = $json_dec[$e]['que'];
echo "".$e." -> ".$men_id." | ".$men_mi. " -> ".$men_tp." - ".utf8_decode($men_qi)." \t-> ".$men_qa." - ".$men_qe."\n";
// pausa d'un segon
//sleep(1);
//pausa de mig segon (amb microsegons => unitat més sis ceros == segons );
//usleep(200000);
$reg++;
}
/**
if($reg>0) {
// preguntar si vols volcar-ho al fitxer .txt
echo "\nVols actualitzar el fitxer de les mencions? (Si/No)\n";
$handle = fopen ("php://stdin","r");
$line = fgets($handle);
if( (trim($line) != 'Si') ){
echo "HE ACABAT DONCS!\n";
exit;
}
fclose($handle);
echo "\n";
echo "Gràcies, els actualitze...\n";
// bolcat a fitxer .txt
echo "Actualització feta.\n";
}
**/
if($maxim > $max_linies) {
$json_dec = array_splice($json_dec,($maxim-$max_linies),$maxim);
//print_r($json_dec);
// actualitza el fitxer json
//$fes_json = json_encode($json_dec, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES|JSON_OBJECT_AS_ARRAY|JSON_PRETTY_PRINT);
$fes_json = json_encode($json_dec, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT);
$escriu_f_json = fopen($lloc."/fitxers/mencions.json", "w") or die("No puc escriure al registre!");
fwrite($escriu_f_json, $fes_json);
fclose($escriu_f_json);
}
$crmnf = microtime(true);
$tmf = $crmnf - $crmn;
echo "Temps mencions: ".round($tmf,4)."";
//$log->lwrite("Temps mencions: ".round($tmf,4)."");
?>