2023-05-24 10:42:52 +02:00
< ? 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. " );
2024-08-21 20:54:10 +02:00
if ( $control_memoria_utils == 1 ) {
$log -> lwrite ( mostra_us_memoria () . " " . mostra_pic_memoria () );
}
2023-05-24 10:42:52 +02:00
$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! " );
2024-08-21 20:54:10 +02:00
fwrite ( $escriu_d , " " . $usu . " -|- " . $usu_nom . " -|- " . $usu_act . " \n " );
2023-05-24 10:42:52 +02:00
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);
2024-08-21 20:54:10 +02:00
$fes_json = json_encode ( $seguidors_matriu , JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT );
2023-05-24 10:42:52 +02:00
$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 ];
2024-08-21 20:54:10 +02:00
$usu_nou_m = explode ( " -|- " , $usu_nou );
2023-05-24 10:42:52 +02:00
// 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";
2024-08-21 20:54:10 +02:00
// $log->lwrite("NOU SEGUIDOR: (".$seguidors.") ".$usu." ".$usu_nom."");
$log -> lwrite ( " NOU SEGUIDOR: ( " . ( $nseg_ant + 1 ) . " ) " . $usu . " " . $usu_nom . " " );
2023-05-24 10:42:52 +02:00
// envie un missatge de benvinguda
$moment = strtotime ( " now " );
2024-08-21 20:54:10 +02:00
if ( is_int ( $moment / 3 )) {
if ( is_int ( $seguidors / 10 )) {
$publicacio = " Xé que bò! @ " . $usu_act . " :paisoscat:🌍. Ets la que fa " . $seguidors . " de la llista de persones seguidores. Sóc un compte automàtic. Confie en que gaudisques dels continguts. \n Pots enviar-me un tut amb la etiqueta #saludabot per conèixer més utilitats. \n " . $bot_nom . " v " . $bot_versio . " " ;
} else {
$publicacio = " Xé que bò! @ " . $usu_act . " :paisoscat:🌍. Sóc un compte automàtic. Confie en que gaudisques dels continguts. \n Pots enviar-me un tut amb la etiqueta #saludabot per conèixer més utilitats. \n " . $bot_nom . " v " . $bot_versio . " " ;
}
} elseif ( is_int ( $moment / 2 )) {
2023-05-24 10:42:52 +02:00
if ( is_int ( $seguidors / 10 )) {
2024-08-21 20:54:10 +02:00
$publicacio = " Gràcies per seguir-me @ " . $usu_act . " :paisoscat:🌍. Ets la que fa " . $seguidors . " de la llista de persones seguidores. Sóc un compte automàtic. Confie en que gaudisques dels continguts. \n Si vols saber més detalls, envia'm un tut amb #saludabot \n " . $bot_nom . " v " . $bot_versio . " " ;
2023-05-24 10:42:52 +02:00
} else {
2024-08-21 20:54:10 +02:00
$publicacio = " Gràcies per seguir-me @ " . $usu_act . " :paisoscat:🌍. Sóc un compte automàtic. Confie en que gaudisques dels continguts. \n Si vols saber més detalls, envia'm un tut amb #saludabot \n " . $bot_nom . " v " . $bot_versio . " " ;
2023-05-24 10:42:52 +02:00
}
} else {
if ( is_int ( $seguidors / 10 )) {
2024-08-21 20:54:10 +02:00
$publicacio = " Ei! @ " . $usu_act . " Ets la que fa " . $seguidors . " de les persones seguidores. Has arribat a un compte automàtic. \n Publique l'actualitat :paisoscat: 🌍 i m'alegra que ho compartisques. \n Podràs saber més detalls quan m'envies un tut amb #saludabot \n " . $bot_nom . " v " . $bot_versio . " " ;
2023-05-24 10:42:52 +02:00
} else {
2024-08-21 20:54:10 +02:00
$publicacio = " Ei! @ " . $usu_act . " Has arribat a un compte automàtic. \n Publique l'actualitat 🌍 :paisoscat: i m'alegra que ho compartisques. \n Podràs saber més detalls quan m'envies un tut amb #saludabot \n " . $bot_nom . " v " . $bot_versio . " " ;
2023-05-24 10:42:52 +02:00
}
}
$tut_dades = array (
" status " => $publicacio ,
" language " => $llengua ,
" visibility " => $visib_benv
);
PublicaMissatge ( $base_url , $headers , $tut_dades );
2024-08-21 20:54:10 +02:00
$nseg_ant ++ ;
2023-05-24 10:42:52 +02:00
// 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! " );
2024-08-21 20:54:10 +02:00
fwrite ( $escriu_d , $usu . " -|- " . $usu_nom . " -|- " . $usu_act . " \n " );
2023-05-24 10:42:52 +02:00
fclose ( $escriu_d );
}
}
2024-08-21 20:54:10 +02:00
// final benvinguda
2023-05-24 10:42:52 +02:00
// 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 ];
2024-08-21 20:54:10 +02:00
$seg_ant_m = explode ( " -|- " , $seg_ant );
2023-05-24 10:42:52 +02:00
// 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 . " \n Grà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. \n Tal volta més endavant vulgues tornar @ " . $seg_ant_a . " \n Grà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 . " \n Grà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";
2024-08-21 20:54:10 +02:00
if ( $mem_net == 1 ) {
$seg_bot = null ; $seg_mat = null ; $eixida_seg_ant = null ;
unset ( $seg_bot , $seg_mat , $eixida_seg_ant );
}
if ( $control_memoria_utils == 1 ) { $log -> lwrite ( mostra_us_memoria () . " " . mostra_pic_memoria () ); }
2023-05-24 10:42:52 +02:00
?>