bot_plus/utils/bot_plus_benvinguda.php
2023-05-24 10:42:52 +02:00

324 líneas
13 KiB
PHP

<?php
$tempsbc = microtime(true);
// actualitza la llista de seguidors i fa comiat en privat als que ja no esstan
// Comprova els arguments, en cas de no existir presenta l'ajuda.
if (!empty($_SERVER["argv"][1])){
$argument = $_SERVER["argv"][1];
} else {
// Presenta l'ajuda
echo "NO HE REBUT la variable";
exit;
}
$lloc = $argument;
$limit = 80;
// 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("Arranque la benvinguda.");
$seg_bot = ConsultaSeguidors($base_url,$id_cmpt,$headers);
$seguidors = $seg_bot;
// recuperar fitxer de seguretat si falla
$nseg_a = filesize($lloc."/fitxers/seg_cont.txt");
if ($nseg_a == 0) {
$recupera = shell_exec("cat ".$lloc."/fitxers/seg_cont.bak > ".$lloc."/fitxers/seg_cont.txt");
$nseg_b = filesize($lloc."/fitxers/seg_cont.txt");
if($nseg_b == 0) {
$fes_seg = fopen($lloc."/fitxers/seg_cont.txt", "w") or die("No puc escriure al registre!");
fwrite($fes_seg, 10);
fclose($fes_seg);
}
}
// llegeix el nombre de seguidors
$nseg_lle = fopen($lloc."/fitxers/seg_cont.txt", "r") or die("No puc obrir el nombre seguidors!");
$nseg_ant = fread($nseg_lle,filesize($lloc."/fitxers/seg_cont.txt"));
fclose($nseg_lle);
if($seguidors <> $nseg_ant) {
$voltes = ($seguidors/$limit);
// for per fer els fitxers de seguidors actual
$enlla_seg = 0;
$link = 0;
$r = 0;
$seguidors_matriu[]=array();
for ($r=0;$r<$voltes;$r++) {
// echo "r: ".$r." - ";
// echo " ".$limit."\n";
$conn_seg = curl_init();
$header = $headers;
if ($r == 0) {
$url = $base_url."/api/v1/accounts/".$id_cmpt."/followers?limit=".$limit;
curl_setopt($conn_seg, CURLOPT_URL, $url);
} else {
$patro = array("<",">",";");
$seguent_net = str_replace($patro,"", $link);
// echo $seguent_net."\n";
curl_setopt($conn_seg, CURLOPT_URL, $seguent_net);
}
curl_setopt($conn_seg, CURLOPT_RETURNTRANSFER, true);
curl_setopt($conn_seg, CURLOPT_HEADER, $header);
$data = curl_exec($conn_seg);
$data_json = json_decode($data,true);
curl_close($conn_seg);
list($header, $body) = explode("\r\n\r\n", $data, 2);
preg_match_all('/(.*?link): (.*?)\s+/', $header, $matches, PREG_PATTERN_ORDER);
$linkNom = $matches[1][0];
$link = $matches[2][0];
// echo "the value of ".$linkNom." is ".$link."\n".
// "the value of the link is ".$linkNom.":". $link."\n";
// Define the $response_headers array for later use
$resposta_caps = [];
// Get the first line (The Status Code)
$line = strtok($header, "\r\n");
$status_code = trim($line);
// Parse the string, saving it into an array instead
while (($line = strtok("\r\n")) !== false) {
if(false !== ($matches = explode(':', $line, 2))) {
$resposta_caps["{$matches[0]}"] = trim($matches[1]);
}
}
// print_r($resposta_caps);
// echo "només link:\n". $resposta_caps['link']."\n";
$enlla_seg = $resposta_caps['link'];
$seg_mat = json_decode($body, true);
// print_r($seg_mat);
$reg_seg = count(json_decode($body),true);
//echo "registres obtinguts: ".$reg_seg."\n";
if($r == 0) {
$buida_id = fopen($lloc."/fitxers/seguidors_act.txt", "w") or die ("No trobe seguidors_act");
fclose($buida_id);
$buida_dt = fopen($lloc."/fitxers/seguidors_detall_act.txt", "w") or die ("No trobe seguidors_detall_act");
fclose($buida_dt);
$buida_dt_json = fopen($lloc."/fitxers/seguidors_detall_act.json", "w") or die ("No trobe seguidors_detall_act_json");
fclose($buida_dt_json);
}
$t=0;
for($t=0;$t<$reg_seg;$t++) {
$usu = $seg_mat[$t]['id'];
$usu_nom = $seg_mat[$t]['display_name'];
$usu_act = $seg_mat[$t]['acct'];
$usu_ori = $seg_mat[$t]['created_at'];
$usu_pub = $seg_mat[$t]['last_status_at'];
if( ($usu != null)||($usu != false)&&(!empty($usu) ) ){
//guarda la id del novingut amb w el reinici amb a afegeix al final
$escriu_f = fopen($lloc."/fitxers/seguidors_act.txt", "a") or die("No puc escriure al registre!");
fwrite($escriu_f, $usu."\n");
fclose($escriu_f);
//guarda la id i els detalls del novingut
$escriu_d = fopen($lloc."/fitxers/seguidors_detall_act.txt", "a") or die("No puc escriure al registre!");
fwrite($escriu_d, "".$usu."-".$usu_nom."-".$usu_act."\n");
fclose($escriu_d);
}
//$seguidors_matriu[] = array('usuari'=>$usu,'nom'=>$usu_nom,'acct'=>$usu_act);
$seguidors_matriu[] = array('usuari'=>(int)$usu,'nom'=>utf8_encode($usu_nom),'acct'=>$usu_act, 'creat'=>$usu_ori, "ult_pub"=>$usu_pub);
//final bucle matriu
}
// final bucle per fer fitxers
}
//print_r($seguidors_matriu);
// guarda fitxer filtrat en format json
//$fes_json = json_encode($seguidors_matriu);
$fes_json = json_encode($seguidors_matriu, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
$escriu_d_json = fopen($lloc."/fitxers/seguidors_detall_act.json", "a") or die("No puc escriure al registre!");
fwrite($escriu_d_json, $fes_json);
fclose($escriu_d_json);
//if($seguidors > $nseg_ant) {
// BENVINGUDA compare la matriu actual amb el fitxer de seguidors existent per fer la benvinguda.
// si està a l'actual i no al de seguidors, ha de ser benvinguda
// per fe la benvinguda compare el fitxer de seguidors amb els nous.
// si no hi és al fitxer seguidors, es fa la benvinguda y s'escriu al fitxer.
// obrir fitxer de seguidors per evitar duplicats
$segu_arx = shell_exec("cat ".$lloc."/fitxers/seguidors.txt");
// echo "segu_arx: ".$segu_arx."\n";
// fer matriu amb els actuals
$segu_nou = exec("cat ".$lloc."/fitxers/seguidors_detall_act.txt", $eixida_seg_nou, $resp_seg_nou);
$lin = exec("wc -l ".$lloc."/fitxers/seguidors_detall_act.txt | awk '{print $1}'", $eix_lin, $resp_lin);
$s = 0;
$reg_seg = ((count($seguidors_matriu))-1);
for ($s=0;$s<$reg_seg;$s++) {
// una altra opció: convertir en matriu cada linia del fitxer act
$usu_nou = $eixida_seg_nou[$s];
$usu_nou_m = explode("-",$usu_nou);
// triat a partir del fitxer
$usu = $usu_nou_m[0];
$usu_nom = $usu_nou_m[1];
$usu_act = $usu_nou_m[2];
// triats a partir de la matriu
// $usu = $seguidors_matriu[$s]['usuari'];
// $usu_nom = $seguidors_matriu[$s]['nom'];
// $usu_act = $seguidors_matriu[$s]['acct'];
$no_rep = strpos($segu_arx,$usu);
// echo $s." - usu: ".$usu." - usu_nom: ".$usu_nom." - usu_act: ".$usu_act." ".date('r')." -> ".$no_rep." :: \n";
if( ($no_rep !== false) ) {
// echo "NOU: ".$s." - usu: ".$usu." - usu_nom: ".$usu_nom." - usu_act: ".$usu_act." -> ".$no_rep." :: \n";
// echo "NO escric al fitxer.\n";
} else {
// echo $s." usu: ". $usu." ".$usu_nom." NOU!! :: \n";
$log->lwrite("NOU SEGUIDOR: (".$seguidors.") ".$usu." ".$usu_nom."");
// envie un missatge de benvinguda
$moment = strtotime("now");
if (is_int($moment/2)) {
if (is_int($seguidors/10)) {
$publicacio = "Gràcies per seguir-me @".$usu_act." :paisoscat:🌍. Ets el seguidor/a que fa ".$seguidors.". Sóc un compte automàtic. Confie en que gaudisques dels continguts.\n".$bot_nom." v".$bot_versio."";
} else {
$publicacio = "Gràcies per seguir-me @".$usu_act." :paisoscat:🌍. Sóc un compte automàtic. Confie en que gaudisques dels continguts.\n".$bot_nom." v".$bot_versio."";
}
} else {
if (is_int($seguidors/10)) {
$publicacio = "Ei! @".$usu_act." Ets el seguidor/a que fa ".$seguidors.". Has arribat a un compte automàtic. \nPublique l'actualitat :paisoscat: 🌍 i m'alegra que ho compartisques.\n".$bot_nom." v".$bot_versio."";
} else {
$publicacio = "Ei! @".$usu_act." Has arribat a un compte automàtic. \nPublique l'actualitat 🌍 :paisoscat: i m'alegra que ho compartisques.\n".$bot_nom." v".$bot_versio."";
}
}
$tut_dades = array(
"status" => $publicacio,
"language" => $llengua,
"visibility" => $visib_benv
);
PublicaMissatge($base_url,$headers,$tut_dades);
// guarda la id del novingut
$escriu_f = fopen($lloc."/fitxers/seguidors.txt", "a") or die("No puc escriure al registre!");
fwrite($escriu_f, $usu."\n");
fclose($escriu_f);
//guarda la id i els detalls del novingut
//(el desactive per mantindre els registres antics i contrastar amb els actuals al comiat)
$escriu_d = fopen($lloc."/fitxers/seguidors_detall.txt", "a") or die("No puc escriure al registre!");
fwrite($escriu_d, $usu."-".$usu_nom."-".$usu_act."\n");
fclose($escriu_d);
}
}
//final benvinguda
//}
//if($seguidors < $nseg_ant) {
// comparar fitxer registre amb actual per fer comiat
// es compara el fitxer existent amb l'actualitzat
// ha de ser del fitxer detall que ara es guardarà amb guionets per fer explode correctament
$cadena_seg_nou = shell_exec("cat ".$lloc."/fitxers/seguidors_act.txt");
$seg_ant_fitx = exec("cat ".$lloc."/fitxers/seguidors_detall.txt",$eixida_seg_ant,$resposta_seg_nou);
// print_r($eixida_seg);
$w = 0;
$maxim = count($eixida_seg_ant);
for($w=0;$w<$maxim;$w++) {
$seg_ant = $eixida_seg_ant[$w];
$seg_ant_m = explode("-",$seg_ant);
// print_r($seg_ant_m);
$seg_ant_v = $seg_ant_m[0];
$seg_ant_n = $seg_ant_m[1];
$seg_ant_a = $seg_ant_m[2];
$hafugit = strpos($cadena_seg_nou,$seg_ant_v);
if( ($hafugit === false) ) {
// echo "FUIG: [".$w."] ".$seg_nou." | ".$seg_ant_v." -> ".$hafugit." :: \n";
// echo "el seguidor ".$seg_nou." ja no està a les dades obtingudes ara. \n";
// echo $w." - ".$seg_nou." li envie un missatge directe de comiat ->".$hafugit." \n";
$moment = strtotime("now");
if(is_int($moment/7)) {
$txt_msstg = "Confie que vulgues tornar @".$seg_ant_a."\nGràcies pel temps de seguiment compartit. Que et vaja tot molt bé.\n#SocUnBot.\n".$bot_nom." v".$bot_versio."";
} elseif (is_int($moment/5)) {
$txt_msstg = "Em sap greu ".$seg_ant_n." que deixes el seguiment del compte.\nTal volta més endavant vulgues tornar @".$seg_ant_a."\nGràcies pel temps de seguiment compartit.\n#SocUnBot.\n".$bot_nom." v".$bot_versio."";
} elseif (is_int($moment/3)) {
$txt_msstg = "Fins a la propera ".$seg_ant_n.". M`ha agradat el temps que has seguit el compte, @".$seg_ant_a."\n#SocUnBot.\n".$bot_nom." v".$bot_versio."";
} elseif (is_int($moment/2)) {
$txt_msstg = "Gràcies pel temps compartit ".$seg_ant_n.". M'alegrarà que tornes a seguir-me @".$seg_ant_a."\n#SocUnBot.\n".$bot_nom." v".$bot_versio."";
} else {
$txt_msstg = "Fins la propera ".$seg_ant_n.". Ja en retrobarem quan et vinga de gust @".$seg_ant_a."\nGràcies pel temps de seguiment compartit.\n#SocUnBot.\n".$bot_nom." v".$bot_versio."";
}
$log->lwrite("NOU COMIAT: (".$seguidors.") ".$seg_ant_n." ".$seg_ant_a." ".$seg_ant_v."");
$dades_tut = array(
"status" => $txt_msstg,
"language" => $llengua,
"visibility" => $visib_comi
);
PublicaMissatge($base_url,$headers,$dades_tut);
}
else {
// echo "RES A FER. \n";
}
}
//fin comiat
//}
// validar els usuaris i copiar els _act sense el sufix
$detall_vell = filesize($lloc."/fitxers/seguidors_detall.txt");
$detall_nou = filesize($lloc."/fitxers/seguidors_detall_act.txt");
$ids_vell = filesize($lloc."/fitxers/seguidors.txt");
$ids_nou = filesize($lloc."/fitxers/seguidors_act.txt");
//echo $detall_vell.":".$detall_nou."|".$ids_vell.":".$ids_nou."\n";
//echo "fin comiat!! \n";
if ( ($detall_vell<>$detall_nou) || ($ids_vell<>$ids_nou) ) {
$actualitzaA = shell_exec("cat ".$lloc."/fitxers/seguidors_detall_act.txt > ".$lloc."/fitxers/seguidors_detall.txt");
$actualitzaB = shell_exec("cat ".$lloc."/fitxers/seguidors_act.txt > ".$lloc."/fitxers/seguidors.txt");
}
// actualitze el fitxer de nombre de seguidors
if(($seguidors == null)||($seguidors == false)) { $seguidors = 12; }
$esc_seg = fopen($lloc."/fitxers/seg_cont.txt", "w") or die("No puc escriure al registre!");
fwrite($esc_seg, $seguidors);
fclose($esc_seg);
// faig còpia de seguretat
$copia_seg = shell_exec("cat ".$lloc."/fitxers/seg_cont.txt > ".$lloc."/fitxers/seg_cont.bak");
//final benvinguda i comiat
}
// llegeix el nombre de seguidors
$ncent_lle = fopen($lloc."/fitxers/cents_cont.txt", "r") or die("No puc obrir el nombre seguidors!");
$ncent_ant = fread($ncent_lle,filesize($lloc."/fitxers/cents_cont.txt"));
fclose($ncent_lle);
if ( (is_int($seguidors/10)) && ($ncent_ant < $seguidors) && ($act_cents ==1) ){
$cents = shell_exec("/usr/bin/php -f ".$lloc."/utils/bot_plus_cents.php ".$lloc."");
}
// actualitza el nombre del seguidors si es més gran que l'existent
if ($ncent_ant < $seguidors) {
$escriu_cent = fopen($lloc."/fitxers/cents_cont.txt", "w") or die("No puc escriure al registre!");
fwrite($escriu_cent, $seguidors);
fclose($escriu_cent);
}
$tempsbcf = microtime(true);
$dur_bc = $tempsbcf - $tempsbc;
$log->lwrite("Temps de benvinguda i comiat: ". round($dur_bc,4)." segons.");
//echo "Temps de benvinguda i comiat: ". round($dur_bc,4)." segons.\n";
//echo "FIN \n";
?>