bot_plus/utils_cli/bot_plus_cli_impulsos_json_cli.php

182 líneas
5,4 KiB
PHP

2024-08-22 00:19:46 +02:00
<?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");
//$fitxer = $lloc."/fitxers/mencions.json";
$fitxer = $lloc."/fitxers/impulsos.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;
$imp_mat_nova = ConsultaNotificacions($token,$base_url,$limit_m,$headers);
//print_r($imp_mat_nova);
//exit;
$nom_mat = count($imp_mat_nova);
echo "A la instància he repassat les darreres ".$nom_mat." ".(($nom_mat<>1)?"notificacions":"notificació")."\n";
// fer matriu de mencions noves
$imp_mat = array();
if($nom_mat>=1) {
// llegir fitxer de temps
$temps_imp = strtotime("now");
$espera_ob = fopen($lloc . "/fitxers/impulsos_temps.txt", "r") or die("No puc obrir la darrera data!");
$espera_ll = fread($espera_ob,filesize($lloc . "/fitxers/impulsos_temps.txt"));
$espera_imp = $espera_ll;
fclose($espera_ob);
$temps_ini = $espera_imp - 604800;
$mc = 0;
for($f=0;$f<$nom_mat;$f++) {
$men_id = $imp_mat_nova[$f]['id'];
$men_tip = $imp_mat_nova[$f]['type'];
$men_qui = $imp_mat_nova[$f]['account']['acct'];
$men_qua = $imp_mat_nova[$f]['created_at'];
// $men_mid = $imp_mat_nova[$f]['status']['id'];
if( ($men_tip == "reblog")||($men_tip == "favourite") ){
if ( strtotime($men_qua) >= $temps_ini ) {
$men_mid = $imp_mat_nova[$f]['status']['id'];
$imp_mat[] = array ( 'id' => (int)$men_id, 'mis_id' => (int)$men_mid, 'qui' => $men_qui, 'mencio' => $men_tip, 'quan' => $men_qua );
$mc++;
}
// sleep(2);
}
/** else {
// $imp_mat[] = array ( );
$imp_mat[] = array ( 'id' => (int)0, 'mis_id' => (int)0, 'qui' => null, 'mencio' => null, 'quan' => null );
}
**/
}
//print_r($imp_mat);
//exit;
$comprova_mat = is_array($imp_mat);
echo "comprova: ".$comprova_mat."\n";
//echo "menc_mat_f\n";
//print_r($imp_mat);
//sleep(2);
//exit;
// evita repetir
$fins = count($imp_mat);
//if( ($mc<0) ){
echo "De les ".$nom_mat." notificacions, ".$mc." ".(($mc<>1)?"són":"és")." un impuls.\n";
$cont_fit = 0;
//echo $fins."\n";
for($g=0;$g<$fins;$g++) {
$id_busc = $imp_mat[$g]['id'];
$qu_busc = $imp_mat[$g]['qui'];
$tp_busc = $imp_mat[$g]['mencio'];
// echo "id_busc: ".$id_busc."\n";
$troba = array_search($id_busc, array_column($json_dec, 'id'));
// echo "troba: ".$troba."\n";
if( ($troba !== false ) ) {
// echo "El ".$tp_busc." ".$id_busc." de ".$qu_busc." ja està al registre\n";
} else {
if($id_busc<>0) {
echo "NOU IMPULS: ".$tp_busc." ".$id_busc." de ".$qu_busc."\n";
array_push($json_dec,
['id' => (int)$imp_mat[$g]['id'], 'mis_id' => (int)$imp_mat[$g]['mis_id'],
'qui' => $imp_mat[$g]['qui'], 'mencio' => $imp_mat[$g]['mencio'],
'quan' => $imp_mat[$g]['quan']
]);
}
$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/impulsos.json", "w") or die("No puc escriure al registre!");
fwrite($escriu_f_json, $fes_json);
fclose($escriu_f_json);
} else {
echo "No hi ha impulsos nous.\n";
}
//fin if matriu de notificacions té registres
}
// per a fer els repas linia a linia
$maxim = count($json_dec);
$e=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'];
echo "".$e." -> ".$men_id." | ".$men_mi. " -> ".$men_tp." \t- ".utf8_decode($men_qi)." \t-> ".$men_qa."\n";
// pausa d'un segon
//sleep(1);
//pausa de mig segon (amb microsegons => unitat més sis ceros == segons );
//usleep(200000);
}
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/impulsos.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 de revisió dels impulsos: ".round($tmf,4)."";
//$log->lwrite("Temps mencions: ".round($tmf,4)."");
?>