382 líneas
15 KiB
PHP
382 líneas
15 KiB
PHP
<?php
|
||
$tm = microtime(true);
|
||
// Comprova els arguments, en cas de no existir presenta l'ajuda.
|
||
if (!empty($_SERVER["argv"][1])){
|
||
$argument = $_SERVER["argv"][1];
|
||
// $mstg = $_SERVER["argv"][2];
|
||
} else {
|
||
// Presenta l'ajuda
|
||
echo "NO HE REBUT la variable";
|
||
exit;
|
||
}
|
||
$lloc = $argument;
|
||
// ara podrá 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");
|
||
|
||
// inicia el log
|
||
$log = new Logging();
|
||
$log->lfile(''.$log_fitxer.'');
|
||
|
||
$log->lwrite("Estàn activades les respostes a les mencions.");
|
||
if($control_memoria_utils == 1) {
|
||
$log -> lwrite ( mostra_us_memoria()." ".mostra_pic_memoria()." - ".__LINE__ );
|
||
}
|
||
|
||
// preparatius i variables comunes
|
||
$resposta = ConsultaNotificacions($token,$base_url,$limit_m,$headers);
|
||
|
||
$tmc = microtime(true);
|
||
$dcon = $tmc - $tm;
|
||
|
||
//print_r($resposta);
|
||
//exit;
|
||
$nr = count($resposta);
|
||
$menc_mat = array();
|
||
$d = 0;
|
||
for ($d = 0; $d < $nr; $d++) {
|
||
// triar les variables que volem de la matriu
|
||
$men_id = $resposta[$d]['id'];
|
||
$mencio = $resposta[$d]['type'];
|
||
$men_tp = $resposta[$d]['created_at'];
|
||
$usu_id = $resposta[$d]['account']['id'];
|
||
$usu_ac = $resposta[$d]['account']['acct'];
|
||
// $usu_no = $resposta[$d]['account']['username'];
|
||
// $usu_dp = $resposta[$d]['account']['display_name'];
|
||
|
||
if ($mencio == "mention") {
|
||
$mis_id = $resposta[$d]['status']['id'];
|
||
$mis_vis = $resposta[$d]['status']['visibility'];
|
||
$mstg = html_entity_decode(strip_tags($resposta[$d]['status']['content']));
|
||
} else { $mis_id = 0; $mstg = null; $mis_vis = 'direct'; }
|
||
// echo "".$mis_vis."-".$d."\n";
|
||
$menc_mat[] = array ( 'id' => (int)$men_id, 'mis_id' => (int)$mis_id, 'qui' => $usu_ac, 'mencio' => $mencio, 'quan' => $men_tp, 'que' => $mstg, 'visib' => $mis_vis );
|
||
}
|
||
|
||
//print_r($menc_mat);
|
||
//exit;
|
||
|
||
$nombre_matriu = count($menc_mat);
|
||
$men_resp = null;
|
||
|
||
$reg_tam = filesize("".$lloc."/fitxers/mencions_r.txt");
|
||
$reg_lin = count(file("".$lloc."/fitxers/mencions_r.txt"));
|
||
$reg_lin_bak = count(file("".$lloc."/fitxers/mencions_r.bak"));
|
||
|
||
if ( ($reg_tam == 0) || ($reg_lin < ($reg_lin_bak)) ) {
|
||
$log -> lwrite ("ALERTA! El fitxer mencions_r te ".$reg_lin." linies. Cal posar-ne més.");
|
||
$recuperar = 1;
|
||
$copia_seguretat_rec = shell_exec("cat ".$lloc."/fitxers/mencions_r.bak > ".$lloc."/fitxers/mencions_r.txt");
|
||
} else {
|
||
$recuperar = 0;
|
||
}
|
||
|
||
// llegir fitxer per evitar repeticions
|
||
$mencio_arx = shell_exec("cat ".$lloc."/fitxers/mencions_r.txt");
|
||
|
||
// verificar que un usuari fa més d'una volta la mateixa acció (?);
|
||
$e = 0;
|
||
$nm = 0;
|
||
$num_seg = 0;
|
||
$mr = 0;
|
||
for ($e = 0; $e < $nombre_matriu; $e++) {
|
||
$m_id = $menc_mat[$e]['id'];
|
||
$miss_id = $menc_mat[$e]['mis_id'];
|
||
$usuari= $menc_mat[$e]['qui'];
|
||
$mencio_t= $menc_mat[$e]['mencio'];
|
||
$temps = $menc_mat[$e]['quan'];
|
||
$mstg = $menc_mat[$e]['que'];
|
||
$mis_vis = $menc_mat[$e]['visib'];
|
||
$mencio_arx = shell_exec("cat ".$lloc."/fitxers/mencions_r.txt");
|
||
$no_repetir = strpos($mencio_arx,$miss_id);
|
||
if ($mencio_t == "mention") {
|
||
// if ( ($mencio_t == "mention") && ($mis_id <>0)) {
|
||
$no_repetir = strpos($mencio_arx,$miss_id);
|
||
// echo "no repetir: ".$e."|".$usuari."|".$no_repetir."\n";
|
||
// $log->lwrite("no repetir: ".$e."|".$usuari."|".$no_repetir."");
|
||
// sleep(2);
|
||
if( ($no_repetir === false) ) {
|
||
// echo "menció de : ".$usuari." - ".$mencio_t." - ".$miss_id."\n";
|
||
|
||
if (is_int($miss_id/7)) {
|
||
$men_resp = "Ja em disculparàs, @".$usuari." soc un bot :cli_user: amb la versió ".$bot_versio." i estic aprenent a entendre els comentaris. \nDe tota manera, moltes gràcies per la teua menció.\n🤖 #SocUnBot";
|
||
} elseif (is_int($miss_id/5)) {
|
||
$men_resp = "M'agrada molt que em menciones. Així aprendré a entendre els tuts, @".$usuari.".:cli_user:\n Soc ".$bot_nom." v".$bot_versio." :cli_user:\n🤖 #SocUnBot";
|
||
} elseif (is_int($miss_id/3)) {
|
||
$men_resp = "He vist que m'has mencionat, @".$usuari." i et done les gràcies per que així aprendré.:cli_user:\n Soc ".$bot_nom." v".$bot_versio." :cli_user:\n🤖 #SocUnBot";
|
||
} elseif (is_int($miss_id/2)) {
|
||
$men_resp = "Agraït per la menció, @".$usuari.", em serveix per aprendre el vocabulari.:cli_user:\n Soc ".$bot_nom." v".$bot_versio." :cli_user:\n🤖 #SocUnBot";
|
||
} else {
|
||
$men_resp = "Gràcies per mencionar-me i ajudar-me a entendre el llenguatge natural, @".$usuari.". Soc ".$bot_nom." i la meua versió és ".$bot_versio." :cli_user:.\n🤖 #SocUnBot";
|
||
}
|
||
|
||
// $mem_rep = "Em sembla que el teu comentari @".$usuari." és ".$sentiment."\n".
|
||
$en_resposta = $miss_id;
|
||
|
||
if ( ($men_resp != null) ) {
|
||
|
||
$conteste = rand(0,1000);
|
||
if( ($act_mencio_resp == 1)&&($conteste == 25) ){
|
||
|
||
$contestar = strpos($mstg,"comentabot");
|
||
$comp_info = strpos($mstg,"infobot");
|
||
$comp_imps = strpos($mstg,"impulsosbot");
|
||
$comp_orat = strpos($mstg,"oratgebot");
|
||
$comp_salu = strpos($mstg,"saludabot");
|
||
$comp_usu = strpos($mstg,"usuaribot");
|
||
if( ($contestar == false)&&($comp_info == false)&&
|
||
($comp_salu == false)&&($comp_orat == false)&&($comp_imps == false) &&
|
||
($comp_usu == false)
|
||
) {
|
||
|
||
// Publica a Mastodon
|
||
$dades_tut = array(
|
||
"status" => $men_resp,
|
||
"language" => $llengua,
|
||
// "visibility" => $visib_mencs,
|
||
"visibility" => $mis_vis,
|
||
"in_reply_to_id" => $en_resposta
|
||
);
|
||
|
||
//print_r($status_data);
|
||
//sleep(10);
|
||
PublicaMissatge($base_url,$headers,$dades_tut);
|
||
$log->lwrite("NOVA MENCIO: ".$men_resp." : ".$usuari." - id: ".$en_resposta." ");
|
||
|
||
// final detectar etiqueta
|
||
}
|
||
|
||
}
|
||
|
||
$contestar = strpos($mstg,"comentabot");
|
||
$comp_info = strpos($mstg,"infobot");
|
||
$comp_imps = strpos($mstg,"impulsosbot");
|
||
$comp_orat = strpos($mstg,"oratgebot");
|
||
$comp_salu = strpos($mstg,"saludabot");
|
||
$comp_usu = strpos($mstg,"usuaribot");
|
||
if( ($comp_salu == false)&&($comp_info == false)&&
|
||
($comp_imps == false)&&($comp_orat == false)&&
|
||
($comp_usu == false)
|
||
){
|
||
|
||
$decisio = TriaOpcio($en_resposta);
|
||
|
||
if( ($decisio == 1) ||
|
||
($decisio == 2) ||
|
||
($decisio == 3) ||
|
||
($decisio == 4) ||
|
||
($decisio == 5) ) {
|
||
//if(is_int($en_resposta/2)) {
|
||
FesRebloc($base_url,$en_resposta,$headers);
|
||
$heoptat = "he fet impuls";
|
||
//print_r($fav_output_status);
|
||
} elseif( ($decisio == 6) ||
|
||
($decisio == 7) ||
|
||
($decisio == 8) ||
|
||
($decisio == 9) ) {
|
||
FesFavorit($base_url,$en_resposta,$headers);
|
||
$heoptat = "he fet favorit";
|
||
} else {
|
||
FesFavorit($base_url,$en_resposta,$headers);
|
||
FesRebloc($base_url,$en_resposta,$headers);
|
||
$heoptat = "he fet impuls i favorit";
|
||
//print_r($reb_output_status);
|
||
}
|
||
|
||
} else { $heoptat = "Detectada etiqueta interna. Faig el tut de resposta"; }
|
||
|
||
// 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);
|
||
//echo "".$men_resp." - id: ".$en_resposta." ";
|
||
|
||
$mencs_tam = filesize("".$lloc."/fitxers/mencions_r.txt");
|
||
$mencs_lin = count(file("".$lloc."/fitxers/mencions_r.txt"));
|
||
$mencs_tam_b = filesize("".$lloc."/fitxers/mencions_r.bak");
|
||
$mencs_lin_b = count(file("".$lloc."/fitxers/mencions_r.bak"));
|
||
|
||
if(($mencs_tam > $mencs_tam_b)||($mencs_lin > $mencs_lin_b)) {
|
||
$copia_seguretat = exec("cat ".$lloc."/fitxers/mencions_r.txt > ".$lloc."/fitxers/mencions_r.bak", $eixida_cs, $resposta_cs);
|
||
if ($resposta_cs !=0) {
|
||
$log -> lwrite("INFO: copia de_seguretat mencions_r: ".( (($resposta_cs == 0))?"correcte":"ERRADA")."");
|
||
}
|
||
}
|
||
|
||
if( ($comp_salu == false)&&($comp_info == false)&&($comp_imps == false)&&($comp_orat == false)&&($comp_usu == false) ){
|
||
|
||
$escriu_mencions_detall = fopen($lloc."/fitxers/mencions.txt", "a") or die("No puc escriure al registre!");
|
||
fwrite($escriu_mencions_detall, $m_id.":::".$en_resposta.":::".$usuari.":::".$mencio_t.":::".$temps.":::".$mstg."\n");
|
||
fclose($escriu_mencions_detall);
|
||
|
||
$mencs_tam = filesize("".$lloc."/fitxers/mencions.txt");
|
||
$mencs_lin = count(file("".$lloc."/fitxers/mencions.txt"));
|
||
$mencs_tam_b = filesize("".$lloc."/fitxers/mencions.bak");
|
||
$mencs_lin_b = count(file("".$lloc."/fitxers/mencions.bak"));
|
||
|
||
if(($mencs_tam > $mencs_tam_b)||($mencs_lin > $mencs_lin_b)) {
|
||
$copia_seguretat = exec("cat ".$lloc."/fitxers/mencions.txt > ".$lloc."/fitxers/mencions.bak", $eixida_cs, $resposta_cs);
|
||
if ($resposta_cs !=0) {
|
||
$log -> lwrite("INFO: copia de seguretat mencions detall: ".( (($resposta_cs == 0))?"correcte":"ERRADA")."");
|
||
}
|
||
}
|
||
|
||
// echo "He escrit ". $m_id."-".$en_resposta."-".$usu_ac."-".$temps."\n";
|
||
$mr++;
|
||
}
|
||
|
||
}
|
||
$menc_mat_f[] = array( 'id' => (int)$m_id, 'mis_id' => (int)$miss_id, 'qui' => $usuari, 'mencio' => $mencio_t, 'quan' => $temps, 'que' => $mstg );
|
||
|
||
$nm++;
|
||
// echo "nm: ".$nm."\n";
|
||
$log->lwrite("NOVA MENCIO: ".$usuari." - id: ".$en_resposta." ".$mencio_t." ".$heoptat);
|
||
|
||
|
||
if( ($comp_info === false)&&($comp_salu === false)&&($comp_imps === false)&&($comp_orat === false)&&($comp_usu === false) ) {
|
||
|
||
// active VaderSentiment
|
||
// primer neteje la cadena a enviar
|
||
$mstg = html_entity_decode(strip_tags($mstg));
|
||
$mstg = str_replace(["'","`","’","\n"],' ', $mstg);
|
||
$mstg = str_replace(['#','&','"','“','”'],'', $mstg);
|
||
|
||
$log -> lwrite("envie: ".$mstg."-".$en_resposta."-".$usuari."-".$mis_vis);
|
||
$emocio_act = shell_exec("php -f ".$lloc."/proves/proves_conversa.php ".$lloc." '".$mstg."' ".$en_resposta." ".$usuari." ".$temps." ".$mencio_t." ".$m_id."");
|
||
$log -> lwrite("INFO: emocio_act ".( ($emocio_act != null)?"correcte":"ERRADA")."");
|
||
|
||
} else {
|
||
|
||
// $log -> lwrite("envie: ".$mstg."-".$en_resposta."-".$usuari."-".$mis_vis);
|
||
if($comp_info != false) {
|
||
$fertutinfobot = exec("php -f ".$lloc."/utils/bot_plus_tut_info.php ".$lloc." '".$mstg."' ".$en_resposta." ".$usuari." ".$mis_vis."" , $ftinfo_eix, $ftinfo_res );
|
||
// $log -> lwrite("PROVA: fertutinfobot ".$ftinfo_res);
|
||
$log -> lwrite("INFO: fertutinfobot ".( ($ftinfo_res == 0)?"correcte":"ERRADA")."");
|
||
// $log -> lwrite("INFO: ".$ftinfo_res." enviat: ".$mstg."-".$en_resposta."-".$usuari."-".$mis_vis."");
|
||
}
|
||
if($comp_salu != false) {
|
||
$fertutsaludabot = exec("php -f ".$lloc."/utils/bot_plus_tut_salutacio.php ".$lloc." '".$mstg."' ".$en_resposta." ".$usuari." ".$mis_vis."" , $ftsalu_eix, $ftsalu_res );
|
||
// if($ftsalu_res != 0) {
|
||
$log -> lwrite("INFO: fertutsaludabot ".( ($ftsalu_res == 0)?"correcte":"ERRADA")."");
|
||
// $log -> lwrite("INFO: ".$ftsalu_res." enviat: '".$mstg."'-".$en_resposta."-".$usuari."-".$mis_vis."");
|
||
// }
|
||
}
|
||
if($comp_imps != false) {
|
||
$fertutimpulsosbot = exec("php -f ".$lloc."/utils/bot_plus_tut_impulsos.php ".$lloc." '".$mstg."' ".$en_resposta." ".$usuari." ".$mis_vis."" , $ftimps_eix, $ftimps_res );
|
||
// if($ftimps_res != 0) {
|
||
$log -> lwrite("INFO: fertutimpulsosbot ".( ($ftimps_res == 0)?"correcte":"ERRADA")."");
|
||
// $log -> lwrite("INFO: ".$ftimps_res." enviat: '".$mstg."'-".$en_resposta."-".$usuari."-".$mis_vis."");
|
||
// }
|
||
}
|
||
if($comp_orat != false) {
|
||
$fertutoratgebot = exec("php -f ".$lloc."/utils/bot_plus_tut_oratge.php ".$lloc." '".$mstg."' ".$en_resposta." ".$usuari." ".$mis_vis."" , $ftorat_eix, $ftorat_res );
|
||
// if($ftorat_res != 0) {
|
||
$log -> lwrite("INFO: fertutoratgebot ".( ($ftorat_res == 0)?"correcte":"ERRADA")."");
|
||
// $log -> lwrite("INFO: ".$ftorat_res." enviat: '".$mstg."'-".$en_resposta."-".$usuari."-".$mis_vis."");
|
||
// }
|
||
}
|
||
if($comp_usu != false) {
|
||
$fertutusuaribot = exec("php -f ".$lloc."/utils/bot_plus_tut_usuari.php ".$lloc." '".$mstg."' ".$en_resposta." ".$usuari." ".$mis_vis."" , $ftusu_eix, $ftusu_res );
|
||
// if($ftorat_res != 0) {
|
||
$log -> lwrite("INFO: fertutusuaribot ".( ($ftusu_res == 0)?"correcte":"ERRADA")."");
|
||
// $log -> lwrite("INFO: ".$ftusu_res." enviat: '".$mstg."'-".$en_resposta."-".$usuari."-".$mis_vis."");
|
||
// }
|
||
}
|
||
|
||
}
|
||
|
||
// final missatge no es nul
|
||
}
|
||
|
||
//final no repetir
|
||
}
|
||
|
||
// final bucle for
|
||
}
|
||
|
||
// fer la matriu de les dades existents al json amb filtrat d'etiquetes
|
||
if ( ($nm > 0)&&($comp_info == false)&&($comp_salu == false)&&($comp_orat == false)&&($comp_imps == false)&&($comp_usu == false) ) {
|
||
//$usa_json = exec("php ".$lloc."/proves/proves_impulsos_json.php ".$lloc , $eix_usa_json, $resp_usa_json);
|
||
$usa_json = shell_exec("php ".$lloc."/utils/bot_plus_mencions_json.php ".$lloc);
|
||
}
|
||
|
||
if($mem_net == 1) { $menc_mat = null; $menc_mat_f = null; unset($menc_mat,$menc_mat_f); }
|
||
|
||
//retalle a un màxim de XXX linies
|
||
$fit_mencions = $lloc."/fitxers/mencions_r.txt";
|
||
$lin_men = count(file($fit_mencions));
|
||
|
||
if( $lin_men > $max_linies ) {
|
||
// $net_men0 = shell_exec("tail -".$max_linies." ".$lloc."/fitxers/mencions_r.txt | tee ".$lloc."/fitxers/mencions_r.txt");
|
||
$fitx = new SplFileObject($lloc."/fitxers/mencions_r.txt", "r");
|
||
$fitx->seek(PHP_INT_MAX);
|
||
$last_line = $fitx->key();
|
||
$lines = new LimitIterator($fitx, $last_line - $max_linies, $last_line); //n being non-zero positive integer $max_linies
|
||
// print_r(iterator_to_array($lines));
|
||
// Iterate each element
|
||
$it = iterator_to_array($lines);
|
||
|
||
$escriu_magatzem = fopen($lloc . "/fitxers/mencions_r.txt", "w") or die("No puc escriure la data!");
|
||
foreach($it as $ele){
|
||
// echo nl2br($ele . "\n");
|
||
fwrite($escriu_magatzem, $ele);
|
||
// usleep(100000);
|
||
}
|
||
fclose($escriu_magatzem);
|
||
|
||
$net_men00= shell_exec("cat ".$lloc."/fitxers/mencions_r.txt > ".$lloc."/fitxers/mencions_r.bak");
|
||
usleep(200000);
|
||
}
|
||
|
||
$fit_mencions = $lloc."/fitxers/mencions.txt";
|
||
$lin_men = count(file($fit_mencions));
|
||
|
||
if( $lin_men > $max_linies ) {
|
||
|
||
// $net_men1 = shell_exec("tail -".$max_linies." ".$lloc."/fitxers/mencions.txt | tee ".$lloc."/fitxers/mencions.txt");
|
||
$fitxs = new SplFileObject($lloc."/fitxers/mencions.txt", "r");
|
||
$fitxs->seek(PHP_INT_MAX);
|
||
$last_lin = $fitxs->key();
|
||
$lines = new LimitIterator($fitxs, $last_lin - $max_linies, $last_lin); //n being non-zero positive integer $max_linies
|
||
// print_r(iterator_to_array($lines));
|
||
// Iterate each element
|
||
$it = iterator_to_array($lines);
|
||
|
||
$escriu_magatzem = fopen($lloc . "/fitxers/mencions.txt", "w") or die("No puc escriure la data!");
|
||
foreach($it as $ele){
|
||
// echo nl2br($ele . "\n");
|
||
fwrite($escriu_magatzem, $ele);
|
||
// usleep(100000);
|
||
}
|
||
fclose($escriu_magatzem);
|
||
|
||
$net_men1 = shell_exec("cat ".$lloc."/fitxers/mencions.txt > ".$lloc."/fitxers/mencions.bak");
|
||
//}
|
||
$men_tam = filesize("".$lloc."/fitxers/mencions.txt");
|
||
$men_lin = count(file("".$lloc."/fitxers/mencions.txt"));
|
||
$men_lin_bak = count(file("".$lloc."/fitxers/mencions.bak"));
|
||
if($men_tam == 0) {
|
||
$recupera = shell_exec("php ".$lloc."/utils_cli/bot_plus_cli_mencions_json_cli_refer.php ".$lloc);
|
||
}
|
||
if ($men_lin_bak <= $men_lin) {
|
||
$cop_men0 = shell_exec("cat ".$lloc."/fitxers/mencions_r.txt > ".$lloc."/fitxers/mencions_r.bak");
|
||
$cop_men1 = shell_exec("cat ".$lloc."/fitxers/mencions.txt > ".$lloc."/fitxers/mencions.bak");
|
||
}
|
||
}
|
||
|
||
$tmf = microtime(true);
|
||
$dm = $tmf - $tm;
|
||
//echo "Temps mencions: ".round($dm,4)."";
|
||
$log->lwrite("Temps mencions: ".round($dm,4)." segons");
|
||
|
||
// afegir aqui i arrancar els impulsos?
|
||
// buidar variables
|
||
if($mem_net == 1) {
|
||
$resposta = null; $lin_men = null; $reg_lin = null; $reg_lin_bak = null; $mencs_lin = null; $mencs_lin_b = null;
|
||
unset($resposta,$lin_men,$reg_lin,$reg_lin_bak,$mencs_lin,$mencs_lin_b);
|
||
}
|
||
if($control_memoria_utils == 1) {
|
||
$log -> lwrite ( mostra_us_memoria()." ".mostra_pic_memoria()." - ".__LINE__ );
|
||
}
|
||
?>
|