323 líneas
13 KiB
PHP
323 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";
|
|
?>
|