605 líneas
26 KiB
PHP
605 líneas
26 KiB
PHP
<?php
|
|
// autor @bonobo@mastodont.cat
|
|
// A partir de :
|
|
// https://www.daniweb.com/programming/web-development/code/216997/export-rss-1-0-or-2-0-feeds-to-an-array
|
|
// Inici el document
|
|
$temps = microtime(true);
|
|
|
|
//defineix on es troba el fitxer a executar
|
|
$lloc = realpath(dirname(__FILE__));
|
|
|
|
include("configuracio/bot_plus_cfg.php");
|
|
include("lib/exportrss.php");
|
|
include("utils/bot_plus_funcions.php");
|
|
//if ($act_etiquetes == 1) {
|
|
require_once("utils/bot_plus_etiquetes.php");
|
|
//}
|
|
require_once("lib/logger.php");
|
|
// inicia el log
|
|
$log = new Logging();
|
|
//$log->lfile("/var/log/mastodon_bot.log");
|
|
$log->lfile("".$log_fitxer."");
|
|
|
|
if ( ($log_detall == "DETALLAT") || ($log_detall == "COMPLET") ) {
|
|
$log -> lwrite ("INICIE ".$bot_nom." ".$bot_versio."");
|
|
$log -> lwrite ("Entre a ".$lloc." per a iniciar el procés.");
|
|
} else {
|
|
$log -> lwrite ("INICIE ".$bot_nom." ".$bot_versio."");
|
|
}
|
|
// guarda la opció de visib_tut a un fitxer
|
|
// Escriu la opció de visib_tut al fitxer (cal per reiniciar les opcions de visib_tut de les publicacions)
|
|
$vis_escr = fopen($lloc . "/fitxers/compte_vis.txt", "w") or die("No puc obrir el contador!");
|
|
if ($log_detall == "DETALLAT") { $log -> lwrite ($lloc . "/fitxers/compte_vis.txt "); }
|
|
fwrite($vis_escr, $visib_tut);
|
|
fclose($vis_escr);
|
|
|
|
|
|
// bucle de microsites
|
|
$pt = 0;
|
|
$f = 0;
|
|
// Nombre segons les fonts. (1,2 o 3 màxim definides a cfg primer)
|
|
for ($f = 0; $f<$fitxers_nombre; $f++) {
|
|
if ($f == 0) { $fitxer = $fitxer0; }
|
|
if ($f == 1) { $fitxer = $fitxer1; }
|
|
if ($f == 2) { $fitxer = $fitxer2; }
|
|
if ($f == 3) { $fitxer = $fitxer3; }
|
|
// Obtenim la font XML/RSS 2.0
|
|
$feed = new ExportRSS($fitxer , "2.0");
|
|
$channel = $feed->get_channel_data();
|
|
// fer detecció de la errada i enviar un correu si falla.
|
|
/**
|
|
if($act_correu == 1) {
|
|
$msg = "Errada en obtindre font RSS".>$f."";
|
|
enviaCorreu($elmeucompte,"| ".$bot_nom." v".$bot_versio." |",$msg,$elremitent);
|
|
}
|
|
**/
|
|
// variables per a fer la matriu del que arriba del fitxer XML/RSS 2.0
|
|
$i = 0;
|
|
$j = 0;
|
|
$n = 0;
|
|
$llista = array();
|
|
foreach ($feed->get_data() as $item) {
|
|
$id = $i;
|
|
$titol = $item['title'];
|
|
$data = $item['date'];
|
|
$descripcio = $item['description'];
|
|
$enllac = $item['link'];
|
|
// prepare els filtres per generar la matriu
|
|
// filtre les URL que continguen estes paraules
|
|
// (str_contains($enllac,"programes")) ||
|
|
if ( (str_contains($enllac, $p0)) ||
|
|
(str_contains($enllac, $p1)) ||
|
|
(str_contains($enllac, $p2)) ||
|
|
(str_contains($enllac, $p3)) ||
|
|
(str_contains($enllac, $p4)) ||
|
|
(str_contains($enllac, $p5)) ||
|
|
(str_contains($enllac, $p6)) ||
|
|
(str_contains($enllac, $p7)) ||
|
|
(str_contains($enllac, $p8)) ||
|
|
(str_contains($enllac, $p9)) ||
|
|
(str_contains($enllac, $p10)) ||
|
|
(str_contains($enllac, $p11)) ||
|
|
(str_contains($enllac, $p12)) ||
|
|
(str_contains($enllac, $p13)) ||
|
|
(str_contains($enllac, $p14)) ||
|
|
(str_contains($enllac, $p15)) ||
|
|
(str_contains($enllac, $p16)) ) {
|
|
if ( (strpos($enllac,$np0) == false)||(strpos($enllac,$np1)) ) {
|
|
$tria = 1;
|
|
$n++;
|
|
} else {
|
|
$tria = 0;
|
|
}
|
|
} else { $tria = 0; }
|
|
//genere la matriu amb les dades filtrades
|
|
if ($tria == 1) {
|
|
$llista[] = array(
|
|
"id"=>$id,
|
|
"num"=>$n,
|
|
"titol"=>(string) $item["title"],
|
|
"descripcio"=>(string) $item["description"],
|
|
"enllac"=>(string) $item["link"],
|
|
"pub"=>(string) $item["date"]
|
|
);
|
|
$j++;
|
|
}
|
|
$i++;
|
|
}
|
|
// cronometre
|
|
$temps1 = microtime(true);
|
|
if ( ($log_detall == "DETALLAT") || ($log_detall == "COMPLET") ) {
|
|
$log -> lwrite ("Generada la matriu de RSS".$f."");
|
|
$duradaa = $temps1 - $temps;
|
|
if($duradaa < 60) { $duradaa = round($duradaa,4); $nomt = "segons"; }
|
|
else { $duradaa = date("i:s",$duradaa); $nomt = "minuts"; }
|
|
$log -> lwrite("Temps matriu: ".$duradaa." ".$nomt."");
|
|
}
|
|
if ($log_detall == "COMPLET") {
|
|
$log -> lwrite ("La matriu RSS".$f." conté ".$j." registres.");
|
|
} else {
|
|
if ( ($log_detall == "COMPLET") || ($log_detall == "DETALLAT") ) {
|
|
$log -> lwrite ("Generada la matriu de RSS".$f."");
|
|
}
|
|
}
|
|
|
|
if (count($llista) === 0) {
|
|
$log->lwrite("ERRADA: no he pugut generar la matriu de la font RSS. Acabe esta execució.");
|
|
$errada_tecnica = shell_exec("/usr/bin/php -f ".$lloc."/utils/bot_plus_erradatecnica.php ".$lloc."");
|
|
$log -> lwrite ("FINAL!! ".$bot_nom." ".$bot_versio."");
|
|
exit;
|
|
}
|
|
|
|
// a voltes (?!) el fitxer registre queda buit. No sé el motiu.
|
|
// per evitar-ho verifique el tamany i si és 0 o menor de max_linies inclou les darreres de la matriu llevat de la primera
|
|
$reg_tam = filesize("".$lloc."/fitxers/dates.txt");
|
|
$reg_lin = count(file("".$lloc."/fitxers/dates.txt"));
|
|
|
|
if (($reg_tam == 0) || ($reg_lin < ($max_linies-$max_linies_ad)) ) {
|
|
$log -> lwrite ("ALERTA! El fitxer de dates te ".$reg_lin." linies. Cal posar dates abans de la comparació.");
|
|
$recuperar = 1;
|
|
} else { $recuperar = 0; }
|
|
// if (($reg_tam == 0) || ($reg_lin < ($max_linies-$max_linies_ad)) ) {
|
|
if ($recuperar == 1) {
|
|
// $log -> lwrite ("ALERTA! El fitxer de dates te ".$reg_lin." linies. Cal posar dates abans de la comparació.");
|
|
// per recuperar dades de les diferents fonts rss ?
|
|
$reg_lin = count(file("".$lloc."/fitxers/dates.txt"));
|
|
if ($reg_lin < ($max_linies-10)) {
|
|
$c = 1;
|
|
// guarda les dates de les publicació de la matriu en el dates.txt
|
|
// utilitze $j que és el comptador de les dades de la matriu ja filtrada si no fa registres buits
|
|
for( $c = 1; $c<$j ; $c++ ) {
|
|
$escriu_magatzem = fopen($lloc . "/fitxers/dates.txt", "a") or die("No puc escriure al registre!");
|
|
fwrite($escriu_magatzem, strtotime($llista[$c]['pub'])." ".$llista[$c]['pub']."\n");
|
|
fclose($escriu_magatzem);
|
|
//$log -> lwrite ("Escrita linia ".$c." data ".strtotime($llista[$c]['pub'])." ".$llista[$c]['pub']." ");
|
|
}
|
|
// }
|
|
// recuperar la còpia de seguretat
|
|
$copia_seguretat_rec = shell_exec("cat ".$lloc."/fitxers/dates.bak >> ".$lloc."/fitxers/dates.txt");
|
|
// $copia_seguretat_rec_url = shell_exec("cat ".$lloc."/fitxers/urls_pub.bak >> ".$lloc."/fitxers/urls_pub.txt");
|
|
}
|
|
} else {
|
|
// $log -> lwrite ("El fitxer registre OK.");
|
|
// $log -> lwrite("INFO: comprovar: ".(($resposta_comprovar == 0)?"correcte":"ERRADA")." - url_hist: ".((($url_hist!=null) )?"correcte":"ERRADA")."");
|
|
if ( ($log_detall == "DETALLAT") || ($log_detall == "COMPLET") ) {
|
|
// echo "El fitxer de registre té un tamany de ".$reg_tam." bytes.";
|
|
$log -> lwrite ("El fitxer de registre té tamany de ".$reg_tam." bytes.");
|
|
}
|
|
}
|
|
|
|
$url_tam = filesize("".$lloc."/fitxers/urls_pub.txt");
|
|
$url_lin = count(file("".$lloc."/fitxers/urls_pub.txt"));
|
|
$url_tam_b = filesize("".$lloc."/fitxers/urls_pub.bak");
|
|
$url_lin_b = count(file("".$lloc."/fitxers/urls_pub.bak"));
|
|
|
|
if ( ($url_tam == 0) || ($url_lin < (($max_linies+$max_linies_ad)-10)) ) {
|
|
$log -> lwrite ("ALERTA! El fitxer de url te ".$url_lin." linies. Cal posar-ne més.");
|
|
if ($url_lin_b >= $url_lin) {
|
|
$copia_seguretat_rec_url = shell_exec("cat ".$lloc."/fitxers/urls_pub.bak >> ".$lloc."/fitxers/urls_pub.txt");
|
|
$c = 1;
|
|
// guarda les dates de les publicació de la matriu en el dates.txt
|
|
// utilitze $j que és el comptador de les dades de la matriu ja filtrada si no fa registres buits
|
|
for( $c = 1; $c<$j ; $c++ ) {
|
|
$escriu_url = fopen($lloc . "/fitxers/urls_pub.txt", "a") or die("No puc escriure al registre!");
|
|
fwrite($escriu_url, $llista[$c]['enllac']."\n");
|
|
fclose($escriu_url);
|
|
//$log -> lwrite ("Escrita linia ".$c." data ".strtotime($llista[$c]['pub'])." ".$llista[$c]['pub']." ");
|
|
}
|
|
} else {
|
|
if ( ($log_detall == "DETALLAT") || ($log_detall == "COMPLET") ) {
|
|
$log -> lwrite ("El fitxer de urls té un tamany de ".$url_tam." bytes.");
|
|
}
|
|
}
|
|
}
|
|
// generar cadena comprovar amb les dates recuperades
|
|
// $comprovar = shell_exec("cat ".$lloc."/fitxers/dates.txt");
|
|
$comprovar = exec("cat ".$lloc."/fitxers/dates.txt",$eixida_comprovar,$resposta_comprovar);
|
|
$comprovar = implode(" ",$eixida_comprovar);
|
|
// $comp_bo = is_string($comprovar);
|
|
// $log -> lwrite("valor comp_bo: ".$comp_bo."");
|
|
$url_hist = shell_exec("cat ".$lloc."/fitxers/urls_pub.txt");
|
|
$url_hist = preg_replace('/[^A-Za-z0-9\-]/','',$url_hist);
|
|
$url_hist = preg_replace('/https/',' ',$url_hist);
|
|
//// $log -> lwrite("INFO: comprovar: ".((($comprovar !== null)||($comprovar !== false))?"correcte":"ERRADA")." - url_hist: ".((($url_hist!=null) )?"correcte":"ERRADA")."");
|
|
//// $log -> lwrite("INFO: comprovar: ".((($resposta_comprovar == 0)&&($comp_bo == 1))?"correcte":"ERRADA")." - url_hist: ".((($url_hist!=null) )?"correcte":"ERRADA")."");
|
|
// $log -> lwrite("INFO: comprovar: ".(($resposta_comprovar == 0)?"correcte":"ERRADA")." - url_hist: ".(($url_hist!=null)?"correcte":"ERRADA")."");
|
|
|
|
$reg_fit = "".$lloc."/fitxers/dates.txt";
|
|
$reg_lin = count(file($reg_fit));
|
|
if ( ($log_detall == "COMPLET") || ($log_detall == "DETALLAT") ) {
|
|
$log -> lwrite ("Abans ".$reg_fit." té ".$reg_lin." linies.");
|
|
}
|
|
|
|
// cadena per trobar la data de les darreres publicades
|
|
// si troba la cadena amb strpos NO publica, si no la troba, PUBLICA
|
|
$c = 0;
|
|
$n = $j-1;
|
|
$w = 0;
|
|
$p = 0;
|
|
$verifica = 0;
|
|
for( $c = 0; $c<$n ; $c++ ) {
|
|
|
|
// cadena numerica de temps per comparar
|
|
$rss_ara = strtotime($llista[$c]['pub']);
|
|
$rssu_ara = $llista[$c]['enllac'];
|
|
$rssu_ara = preg_replace('/[^A-Za-z0-9\-]/','',$rssu_ara);
|
|
$rssu_ara = preg_replace('/https/',' ',$rssu_ara);
|
|
$rsst_ara = $llista[$c]['titol']." ".$llista[$c]['descripcio']." ".$llista[$c]['enllac']." ";
|
|
if ( ($log_detall == "COMPLET") || ($log_detall == "DETALLAT") ) {
|
|
// echo "rss_ara: ".$rss_ara."\n";
|
|
$log -> lwrite ("Contingut de rss_ara: ".$rss_ara);
|
|
}
|
|
// $verifica = strpos($comprovar,$rss_ara);
|
|
$verifica = strpos($comprovar,$rss_ara);
|
|
$mira_url = strpos($url_hist,$rssu_ara);
|
|
if ( ($log_detall == "COMPLET") ) {
|
|
// echo "Contingut de verifica num: ".$c." - ".$verifica."\n";
|
|
$log -> lwrite ("Contingut de verifica num: ".$c." - ".$verifica);
|
|
$log -> lwrite ("Contingut de mira_url num: ".$c."|".$rssu_ara."|".$mira_url);
|
|
}
|
|
// Obre el fitxer del compte per trobar el nombre guardat i generar new_count (si no fa error)
|
|
$compt_lle = fopen($lloc . "/fitxers/compte_pub.txt", "r") or die("No puc obrir el contador!");
|
|
$compt_dar = fread($compt_lle,filesize($lloc . "/fitxers/compte_pub.txt"));
|
|
if ( ($log_detall == "COMPLET") || ($log_detall == "DETALLAT") ) {
|
|
// echo "<br>Últim registre: " . $compt_dar;
|
|
$log -> lwrite ("Últim registre: " . $compt_dar . " (5)");
|
|
}
|
|
fclose($compt_lle);
|
|
$compt_nou = $compt_dar;
|
|
// Defineix la visib_tut segons el contador
|
|
$count_factor = $compt_nou/$public_freq;
|
|
|
|
// incloure aqui filtre d'un mes per publicar (ara on està fa falsos positius(?)
|
|
if (($verifica !== false) || ($mira_url !== false)) {
|
|
// if ($verifica !== false) {
|
|
// posar aqui la generació de count_factor?
|
|
// echo "No publica num : ".$c." ".$llista[$c]['titol']."\n";
|
|
if ( ($log_detall == "COMPLET") || ($log_detall == "DETALLAT") ) {
|
|
$log -> lwrite ("No publica num: ".$c." ".$llista[$c]['titol']);
|
|
}
|
|
if($act_etiquetes == 1) {
|
|
if ( ($log_detall == "COMPLET") || ($log_detall == "DETALLAT") ) {
|
|
$log -> lwrite("Etiqueta triada: ".MstEtiquetes($rsst_ara)." ");
|
|
}
|
|
}
|
|
} else {
|
|
// echo "PUBLICA -> (rss".$f.") nº:".$c." ".$llista[$c]['titol']."\n";
|
|
$log -> lwrite ("PUBLICA (rss".$f.") num: ".$c." ".$llista[$c]['titol']);
|
|
//guarda la data de la publicació en el dates.txt
|
|
$escriu_magatzem = fopen($lloc . "/fitxers/dates.txt", "a") or die("No puc escriure la data!");
|
|
fwrite($escriu_magatzem, strtotime($llista[$c]['pub'])." ". $llista[$c]['pub']."\n");
|
|
fclose($escriu_magatzem);
|
|
//guarda la URL de la publicació en el urls_pub.txt
|
|
$escriu_url = fopen($lloc . "/fitxers/urls_pub.txt", "a") or die("No puc escriure la url!");
|
|
fwrite($escriu_url, $llista[$c]['enllac']."\n");
|
|
fclose($escriu_url);
|
|
// genera la publicació (activació d'etiquetes o no)
|
|
if ($act_etiquetes == 1) {
|
|
$publicacio = $llista[$c]['titol']." \n".$llista[$c]['descripcio']." ".MstEtiquetes($rsst_ara)." \n".$llista[$c]['enllac']."";
|
|
$log -> lwrite("Etiqueta triada: ".MstEtiquetes($rsst_ara)."");
|
|
} else {
|
|
$publicacio = $llista[$c]['titol']."\n".$llista[$c]['descripcio']."\n".$llista[$c]['enllac']."";
|
|
$log -> lwrite("Etiqueta proposada: ".MstEtiquetes($rsst_ara)."");
|
|
}
|
|
// Defineix la visib_tut segons el nombre indicat en la configuració
|
|
// Obre el fitxer del compte per trobar el nombre guardat
|
|
$compt_nou=$compt_dar+1;
|
|
// echo "<br>Nou registre: " . $compt_nou;
|
|
if ( ($log_detall == "COMPLET") || ($log_detall == "DETALLAT") ) {
|
|
$log -> lwrite ("Nou registre: " .$compt_nou . " (6)");
|
|
}
|
|
// Escriu el nou nombre al fitxer
|
|
$compt_esc = fopen($lloc . "/fitxers/compte_pub.txt", "w") or die("No puc obrir el contador!");
|
|
if ( ($log_detall == "DETALLAT") ) {
|
|
$log -> lwrite ($lloc . "/fitxers/compte_pub.txt");
|
|
}
|
|
fwrite($compt_esc, $compt_nou);
|
|
fclose($compt_esc);
|
|
// Defineix la visib_tut segons el contador
|
|
$count_factor = $compt_nou/$public_freq;
|
|
if ( ($log_detall == "DETALLAT") ) {
|
|
$log -> lwrite ("count_factor: " .$count_factor. " (8)");
|
|
$log -> lwrite ("resultat filtre: ".is_int($count_factor)." (9)");
|
|
}
|
|
// reinicia la opció de visib_tut des del fitxer de txt
|
|
$vis_ll = fopen($lloc . "/fitxers/compte_vis.txt", "r") or die("No puc obrir el contador!");
|
|
$vis_lect = fread($vis_ll,filesize($lloc . "/fitxers/compte_vis.txt"));
|
|
if ( ($log_detall == "COMPLET") || ($log_detall == "DETALLAT") ) {
|
|
// echo "<br>Visibilitat des del fitxer: " . $vis_lect;
|
|
$log -> lwrite ("Visibilitat des del fitxer: " . $vis_lect . " (10)");
|
|
}
|
|
fclose($vis_ll);
|
|
|
|
// recupera segons la configuració
|
|
$visib_tut = $vis_lect;
|
|
if ( ($log_detall == "COMPLET") || ($log_detall == "DETALLAT") ) {
|
|
$log -> lwrite("Variable visib_tut cfg: ".$visib_tut."");
|
|
}
|
|
if(is_int($count_factor)){
|
|
if ( ($log_detall == "COMPLET") || ($log_detall == "DETALLAT") ) {
|
|
// echo "<br>Visibilitat: " . $visib_tut ."\n";
|
|
$log -> lwrite ("Visibilitat: " .$visib_tut . " (11)");
|
|
}
|
|
}else{
|
|
$visib_tut="unlisted";
|
|
if ( ($log_detall == "COMPLET") || ($log_detall == "DETALLAT") ) {
|
|
// echo "<br>Visibilitat: " . $visib_tut ."\n";
|
|
$log -> lwrite ("Visibilitat: " .$visib_tut . " (12)");
|
|
}
|
|
}
|
|
|
|
if( (strtotime("now") - $rss_ara) < 1900800 ) {
|
|
|
|
// Publica a Mastodon
|
|
// passat per cfg
|
|
// $headers = [
|
|
// "Authorization: Bearer " . $token
|
|
// ];
|
|
|
|
$dades_tut = array(
|
|
"status" => $publicacio,
|
|
"language" => $llengua,
|
|
"visibility" => $visib_tut
|
|
);
|
|
|
|
PublicaMissatge($base_url,$headers,$dades_tut);
|
|
|
|
$p++;
|
|
$pt++;
|
|
sleep($espera_tut+30);
|
|
|
|
}
|
|
$w++;
|
|
// final if 1 mes
|
|
}
|
|
//final publicació (else)
|
|
}
|
|
|
|
// dronometre
|
|
$temps2 = microtime(true);
|
|
$duradab = $temps2 - $temps1;
|
|
if ($p >= 1) {
|
|
// escriu la data de la darrera publicació
|
|
$data_tam = filesize($lloc."/fitxers/data_pub.txt");
|
|
// echo "data_tam: ".$data_tam."\n";
|
|
$data_esc = fopen($lloc . "/fitxers/data_pub.txt", "w+") or die("No puc obrir el contador!");
|
|
$data_ant = fread($data_esc,filesize("".$lloc ."/fitxers/data_pub.txt"));
|
|
$data_nova = strtotime("now");
|
|
|
|
fwrite($data_esc, $data_nova);
|
|
fclose($data_esc);
|
|
$log -> lwrite("data_pub actualitzada: ".$data_nova );
|
|
// TriaOpcio($data_nova);
|
|
// $log -> lwrite("prova de TriaOpcio: ".TriaOpcio($data_nova)."" );
|
|
|
|
// $log -> lwrite("data_pub actualitzada: ".$data_nova." | ".date("d-m-Y H:i:s",$data_nova) );
|
|
|
|
/**
|
|
// Torna a llegir el fitxer data_pub (moure davat execució?)
|
|
$data_lle = fopen($lloc . "/fitxers/data_pub.txt", "r") or die("No puc obrir la darrera data!");
|
|
$data_ant = fread($data_lle,filesize($lloc . "/fitxers/data_pub.txt"));
|
|
$data_com = strtotime($espera_coment);
|
|
$data_ara = strtotime("now");
|
|
$data_dif = ($data_com - $data_ara);
|
|
$data_ina = ($data_ara - $data_ant);
|
|
fclose($data_lle);
|
|
**/
|
|
// per tallar l'execució si dura més de 10 minuts i evita solapar execucions
|
|
if ($duradab > 540) { exit; }
|
|
if($duradab < 60) { $duradab = round($duradab,4); $nomt = "segons"; }
|
|
else { $duradab = date("i:s",$duradab); $nomt = "minuts"; }
|
|
$log->lwrite("He publicat ".$p." ".(($p<>1)?"novetats":"novetat")." (rss".$f.") en ".$duradab." ".$nomt."." );
|
|
if ( ($log_detall == "COMPLET") || ($log_detall == "DETALLAT") ) {
|
|
// $log -> lwrite("Temps publicació: ".$duradab." ".($duradab < 60)? "segons.":"minuts.")."" );
|
|
$log -> lwrite("Temps publicació: ".$duradab." ".$nomt."." );
|
|
}
|
|
} else {
|
|
// echo "NO he publicat res (rss".$f .").\n";
|
|
if ( ($log_detall == "COMPLET") || ($log_detall == "DETALLAT") ) {
|
|
$log -> lwrite ("NO he publicat res (rss".$f.").");
|
|
}
|
|
}
|
|
|
|
// final for multimicrosite
|
|
}
|
|
/**
|
|
// dronometre
|
|
$temps2 = microtime(true);
|
|
$duradab = $temps2 - $temps1;
|
|
|
|
$log->lwrite("Temps RSS".$f." i publicació: ".round($duradab,4)."");
|
|
**/
|
|
//retalle a un màxim de $max_linies
|
|
$registre = "".$lloc."/fitxers/dates.txt";
|
|
$linies = count(file($registre));
|
|
$urls_reg = "".$lloc."/fitxers/urls_pub.txt";
|
|
$lin_urls = count(file($urls_reg));
|
|
|
|
if ( ($linies > $max_linies) || ($lin_urls > ($max_linies+$max_linies_ad)) || ($pt >= 1) ){
|
|
// actualitze el fitxer de registre
|
|
// per a que siguen les primeres cal canviar tail per head
|
|
// retalla dates
|
|
$neteja = shell_exec("tail -".$max_linies." ".$lloc."/fitxers/dates.txt | sort | uniq | tee ".$lloc."/fitxers/dates.txt");
|
|
// $neteja = exec("tail -".$max_linies." ".$lloc."/fitxers/dates.txt | sort | uniq | tee ".$lloc."/fitxers/dates.txt", $eixida_n, $resposta_n);
|
|
if ( ($neteja == null)||($neteja == false) ) {
|
|
// $log -> lwrite("ALERTA: Ha fallat la neteja de dates.txt");
|
|
$log -> lwrite("INFO: neteja: ".(($neteja != null)?"correcte":"ERRADA")."");
|
|
$msg = "INFO: neteja: ".(($neteja != null)?"correcte":"ERRADA")."";
|
|
if($act_correu == 1) {
|
|
enviaCorreu($elmeucompte,"| ".$bot_nom." v".$bot_versio." |",$msg,$elremitent);
|
|
}
|
|
}
|
|
// còpia de seguretat dates
|
|
$dat_a = shell_exec("wc -l ".$lloc."/fitxers/dates.txt | awk '{print $1}'");
|
|
// $dat_a = exec("wc -l ".$lloc."/fitxers/dates.txt | awk '{print $1}'", $eixida_dat_a, $resposta_dat_a);
|
|
if ($dat_a == null) {
|
|
$log -> lwrite("INFO: dat_a: ".(($dat_a != null)?"correcte":"ERRADA")."");
|
|
}
|
|
$dat_an = explode("\n", $dat_a);
|
|
$dat_b = shell_exec("wc -l ".$lloc."/fitxers/dates.bak | awk '{print $1}'");
|
|
// $dat_b = exec("wc -l ".$lloc."/fitxers/dates.bak | awk '{print $1}'", $eixida_dat_b, $resposta_dat_b);
|
|
if ($dat_b == null) {
|
|
$log -> lwrite("INFO: dat_b: ".(($dat_b != null)?"correcte":"ERRADA")."");
|
|
}
|
|
$dat_bn = explode("\n", $dat_b);
|
|
// $log->lwrite("".$dat_an[0].":".$dat_bn[0]."");
|
|
if ($dat_an >= $dat_bn) {
|
|
// $copia_seguretat_dat = shell_exec("sort ".$lloc."/fitxers/dates.txt > ".$lloc."/fitxers/dates.bak");
|
|
$copia_seguretat_dat = exec("cat ".$lloc."/fitxers/dates.txt > ".$lloc."/fitxers/dates.bak", $eixida_cs, $resposta_cs);
|
|
// if (($copia_seguretat_dat !=null) || ($copia_seguretat_dat !=false)) {
|
|
// $log -> lwrite("INFO: copia_seguretat_dat contesta: ".( (($copia_seguretat_dat != null)||($copia_seguretat_dat != false))?"correcte":"ERRADA")."");
|
|
if ($resposta_cs !=0) {
|
|
$log -> lwrite("INFO: copia_seguretat_dat: ".( (($resposta_cs == 0))?"correcte":"ERRADA")."");
|
|
}
|
|
}
|
|
// retalla urls
|
|
// $net_url = exec("tail -".($max_linies + $max_linies_ad)." ".$lloc."/fitxers/urls_pub.txt | tee ".$lloc."/fitxers/urls_pub.txt", $eixida_nu,$resposta_nu);
|
|
$net_url = shell_exec("tail -".($max_linies + $max_linies_ad)." ".$lloc."/fitxers/urls_pub.txt | tee ".$lloc."/fitxers/urls_pub.txt");
|
|
if ( ($net_url == null)||($net_url == false) ){
|
|
$log -> lwrite("INFO: net_url: ".(($net_url != null)?"correcte":"ERRADA")."");
|
|
$msg = "INFO: net_url: ".(($net_url != null)?"correcte":"ERRADA")."";
|
|
if($act_correu == 1) {
|
|
enviaCorreu($elmeucompte,"| ".$bot_nom." v".$bot_versio." |",$msg,$elremitent);
|
|
}
|
|
}
|
|
//fer còpia de seguretat urls
|
|
$urls_a = shell_exec("wc -l ".$lloc."/fitxers/urls_pub.txt | awk '{print $1}'");
|
|
// $urls_a = exec("wc -l ".$lloc."/fitxers/urls_pub.txt | awk '{print $1}'",$eixida_urls_a,$resposta_urls_a);
|
|
if ($urls_a == null) {
|
|
$log -> lwrite("INFO: urls_a: ".((($urls_a !=null)||($urls_a != false)) ?"correcte":"ERRADA")."");
|
|
}
|
|
$urls_an = explode("\n", $urls_a);
|
|
$urls_b = shell_exec("wc -l ".$lloc."/fitxers/urls_pub.bak | awk '{print $1}'");
|
|
// $urls_b = exec("wc -l ".$lloc."/fitxers/urls_pub.bak | awk '{print $1}'",$eixida_urls_a,$resposta_urls_b);
|
|
if ($urls_b == null) {
|
|
$log -> lwrite("INFO: urls_b: ".((($urls_b !=null)||($urls_b != false)) ?"correcte":"ERRADA")."");
|
|
}
|
|
$urls_bn = explode("\n", $urls_b);
|
|
if ($urls_an >= $urls_bn) {
|
|
// $copia_seguretat_url = shell_exec("cat ".$lloc."/fitxers/urls_pub.txt > ".$lloc."/fitxers/urls_pub.bak");
|
|
$copia_seguretat_url = exec("cat ".$lloc."/fitxers/urls_pub.txt > ".$lloc."/fitxers/urls_pub.bak", $eixida_csu, $resposta_csu);
|
|
if ($resposta_csu !=0) {
|
|
$log -> lwrite("INFO: copia_seguretat_url: ".(($resposta_csu == 0)?"correcte":"ERRADA")."");
|
|
}
|
|
}
|
|
} else {
|
|
echo "El fitxers de dates i urls OK.\n";
|
|
// $log -> lwrite ("Els fitxer de dates ".$cop_seg_dat." i el de urls ".$cop_seg_url.".");
|
|
}
|
|
// cronometre
|
|
$temps3 = microtime(true);
|
|
if ( ($log_detall == "COMPLET") || ($log_detall == "DETALLAT") ) {
|
|
$duradad = $temps3 - $temps2;
|
|
$log -> lwrite("Temps retall registre: ".round($duradad,4)." segons.");
|
|
}
|
|
// $neteja = shell_exec("tail -". $w ." " . $lloc . "/fitxers/dates.txt | tee ".$lloc."/fitxers/dates.txt");
|
|
if ( ($log_detall == "COMPLET") || ($log_detall == "DETALLAT") ) {
|
|
// echo "Retalle el registre.\n";
|
|
$log -> lwrite ("Retalle el registre.");
|
|
if ( ($log_detall == "COMPLET") ) {
|
|
// echo "El fitxer de registre té ".$linies." línies, el retalle i deixe les ".$max_linies." darreres dates\n";
|
|
$log -> lwrite ("El fitxer de registre té ".$linies." línies, el retalle i deixe les ".$max_linies." darreres dates.");
|
|
}
|
|
}
|
|
|
|
// per donar la benvinguda als nous seguidors
|
|
if ($act_bencom == 1) {
|
|
// $log -> lwrite("Arranque benvinguda.");
|
|
// $gracies = shell_exec("/usr/bin/php -f ".$lloc."/utils/bot_plus_benvinguda.php ".$lloc."");
|
|
$gracies = exec("/usr/bin/php -f ".$lloc."/utils/bot_plus_benvinguda.php ".$lloc."", $eixida_gr, $resposta_gr);
|
|
// per verificar que exec funciona correctament
|
|
if ($resposta_gr != 0) {
|
|
$log -> lwrite("INFO: benvinguda: ".(($resposta_gr == 0)?"correcte":"ERRADA")."");
|
|
$msg = "INFO: benvinguda: ".(($resposta_gr == 0)?"correcte":"ERRADA")."";
|
|
if($act_correu == 1) {
|
|
enviaCorreu($elmeucompte,"| ".$bot_nom." v".$bot_versio." |",$msg,$elremitent);
|
|
}
|
|
}
|
|
}
|
|
$temps4 = microtime(true);
|
|
|
|
if ( ($log_detall == "COMPLET") || ($log_detall == "DETALLAT") ) {
|
|
$duradae = $temps4 - $temps3;
|
|
if ($duradae < 60) { $duradae = round($duradae,4); $nomt = "segons"; }
|
|
else { $duradae = date("i:s",$duradae); $nomt = "minuts"; }
|
|
$log -> lwrite("Temps benvinguda: ".$duradae." ".$nomt."");
|
|
}
|
|
// contestar a les mencions
|
|
if ($act_mencio == 1) {
|
|
// $resp_mencio = shell_exec("/usr/bin/php -f ".$lloc."/utils/bot_plus_mencions.php ".$lloc);
|
|
$resp_mencio = exec("/usr/bin/php -f ".$lloc."/utils/bot_plus_mencions.php ".$lloc."", $eixida_menc, $resposta_menc);
|
|
// per verificar que exit ha funcionat
|
|
if ($resposta_menc !=0) {
|
|
$log -> lwrite("INFO: mencions: ".(($resposta_menc == 0)?"correcte":"ERRADA")."");
|
|
$msg = "INFO: mencions: ".(($resposta_menc == 0)?"correcte":"ERRADA")."";
|
|
if($act_correu == 1) {
|
|
enviaCorreu($elmeucompte,"| ".$bot_nom." v".$bot_versio." |",$msg,$elremitent);
|
|
}
|
|
}
|
|
}
|
|
|
|
// fer comentrais segons el temps d'inactivitat
|
|
// calcul del temps d'inactivitat aqui(?)
|
|
|
|
// activar comentari (private) als seguidors després d'un temps d'inactivitat
|
|
// llegir data de la darrera publicació
|
|
$data_lle = fopen($lloc . "/fitxers/data_pub.txt", "r") or die("No puc obrir la darrera data!");
|
|
$data_ant = fread($data_lle,filesize($lloc . "/fitxers/data_pub.txt"));
|
|
$data_com = strtotime($espera_coment);
|
|
$data_ara = strtotime("now");
|
|
$data_dif = ($data_com - $data_ara);
|
|
$data_ina = ($data_ara - $data_ant);
|
|
fclose($data_lle);
|
|
|
|
// per verificar dades enviades a bot_plus_comentaris
|
|
// $log->lwrite("".$lloc."|".$data_ina."|".$data_dif."");
|
|
if ($act_coment == 1) {
|
|
// $log -> lwrite("Estan activats els comentaris.");
|
|
if ( ($log_detall == "COMPLET") || ($log_detall == "DETALLAT") ) {
|
|
$log -> lwrite("La publicació és ".$visib_com."");
|
|
}
|
|
// $com = shell_exec("/usr/bin/php -f ".$lloc."/utils/bot_plus_comentaris.php ".$lloc." ".$data_ina." ".$data_dif."");
|
|
$com = exec("/usr/bin/php -f ".$lloc."/utils/bot_plus_comentaris.php ".$lloc." ".$data_ina." ".$data_dif."", $eixida_com, $resposta_com);
|
|
// per verificar que exec ha funcionat
|
|
if ($resposta_com != 0) {
|
|
$log -> lwrite("INFO: comentaris: ".(($resposta_com == 0)?"correcte":"ERRADA")."");
|
|
$msg = "INFO: comentaris: ".(($resposta_com == 0)?"correcte":"ERRADA")."";
|
|
if($act_correu == 1) {
|
|
enviaCorreu($elmeucompte,"| ".$bot_nom." v".$bot_versio." |",$msg,$elremitent);
|
|
}
|
|
}
|
|
}
|
|
// cronometre
|
|
$temps5 = microtime(true);
|
|
if ( ($log_detall == "COMPLET") || ($log_detall == "DETALLAT") ) {
|
|
$duradac = $temps5 - $temps4;
|
|
if($duradac < 60) { $duradac=round($duradac,4); $nomt="segons"; }
|
|
else { $duradac=date("i:s",$duradac); $nomt="minuts"; }
|
|
$log -> lwrite("Temps comentari: ".$duradac." ".$nomt.".");
|
|
}
|
|
|
|
if ($act_impuls == 1) {
|
|
$com = exec("/usr/bin/php -f ".$lloc."/utils/bot_plus_impulsos.php ".$lloc." ", $eixida_imp, $resposta_imp);
|
|
// per verificar que exec ha funcionat
|
|
if ($resposta_imp != 0) {
|
|
$log -> lwrite("INFO: impulsos: ".(($resposta_imp == 0)?"correcte":"ERRADA")."");
|
|
$msg = "INFO: impulsos: ".(($resposta_imp == 0)?"correcte":"ERRADA")."";
|
|
if($act_correu == 1) {
|
|
enviaCorreu($elmeucompte,"| ".$bot_nom." v".$bot_versio." |",$msg,$elremitent);
|
|
}
|
|
}
|
|
}
|
|
|
|
$log -> lwrite("He fet ".$pt." ".(($pt<>1)?"publicacions":"publicació")." en total.");
|
|
$temps6 = microtime(true);
|
|
$durada = $temps6 - $temps;
|
|
//$log -> lwrite("Temps total: ".date("i:s",$durada)." minuts | ".round($durada,4)." segons ");
|
|
$log -> lwrite("Temps total: ".(($durada>60)?date("i:s",$durada)." minuts | ".round($durada,4)." segons ":"".round($durada,4)." segons ")."");
|
|
//echo "FINAL\n";
|
|
$log -> lwrite ("FINAL!! ".$bot_nom." ".$bot_versio."");
|
|
echo "Final manual. \n";
|
|
//final
|
|
if ($durada > 570) {
|
|
exit;
|
|
}
|
|
?>
|