379 líneas
12 KiB
PHP
379 líneas
12 KiB
PHP
|
<?php
|
||
|
$crrss = microtime(true);
|
||
|
|
||
|
if (!empty($_SERVER["argv"][1])){
|
||
|
$argument = $_SERVER["argv"][1];
|
||
|
if (!empty($_SERVER["argv"][2])){
|
||
|
$opcio = $_SERVER["argv"][2];
|
||
|
} else {
|
||
|
$opcio = null;
|
||
|
echo "Has de indicar la opció:\n".
|
||
|
" a -> afegir\n b -> esborrar tot\n d -> darrera publicació\n".
|
||
|
" e -> eliminar duplicats\n n -> triar un numero de registre\n".
|
||
|
" r -> repassar registres.\n";
|
||
|
exit;
|
||
|
}
|
||
|
} else {
|
||
|
// Presenta l'ajuda
|
||
|
echo "NO HE REBUT la variable\n";
|
||
|
echo "Cal el directori on s'executa el bot_plus.\n";
|
||
|
exit;
|
||
|
}
|
||
|
$lloc = $argument;
|
||
|
|
||
|
// ara pot carregar la configuració i el logger
|
||
|
include("".$lloc."/configuracio/bot_plus_cfg.php");
|
||
|
include("".$lloc."/utils/bot_plus_etiquetes.php");
|
||
|
include("".$lloc."/lib/exportrss.php");
|
||
|
|
||
|
if($opcio == "a") { goto afegir; }
|
||
|
elseif($opcio == "b") { goto buidar; }
|
||
|
elseif($opcio == "d") { goto darrera; }
|
||
|
elseif($opcio == "e") { goto duplicats; }
|
||
|
elseif($opcio == "n") { goto numregistre; }
|
||
|
elseif($opcio == "r") { goto repassar; }
|
||
|
else { echo "Has de indicar la opció:\n".
|
||
|
" a -> afegir\n".
|
||
|
" b -> esborrar tot\n".
|
||
|
" d -> darrera publicació\n".
|
||
|
" n -> triar un numero de registre(1)\n".
|
||
|
" r -> repassar registres.\n";
|
||
|
exit; }
|
||
|
|
||
|
|
||
|
afegir:
|
||
|
//echo $lloc;
|
||
|
$fitxer = $lloc."/fitxers/registre.json";
|
||
|
//echo $fitxer;
|
||
|
|
||
|
//matriu a partir del fitxer
|
||
|
$json_dec = json_decode(file_get_contents($fitxer), true);
|
||
|
|
||
|
//echo "matriu fitxer\n";
|
||
|
//print_r($json_dec);
|
||
|
//echo is_array($json_dec)."\n";
|
||
|
//sleep(2);
|
||
|
$reg_arx = count($json_dec);
|
||
|
echo "L'arxiu té ".$reg_arx." ".(($reg_arx<>1)?"registres":"registre")."\n";
|
||
|
|
||
|
// connecta amb la font RSS
|
||
|
// Nombre segons les fonts. (1,2 o 3 màxim definides a cfg primer)
|
||
|
|
||
|
//$llista = array();
|
||
|
|
||
|
$i = 0;
|
||
|
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; }
|
||
|
|
||
|
// $json_dec = json_decode(file_get_contents($fitxer), true);
|
||
|
|
||
|
// Obtenim la font XML/RSS 2.0
|
||
|
$feed = new ExportRSS($fitxer , "2.0");
|
||
|
$channel = $feed->get_channel_data();
|
||
|
|
||
|
// variables per a fer la matriu del que arriba del fitxer XML/RSS 2.0
|
||
|
$j = 0;
|
||
|
$n = 0;
|
||
|
|
||
|
//print_r($feed);
|
||
|
//exit;
|
||
|
|
||
|
//matriu a partir del fitxer
|
||
|
//$json_dec = json_decode(file_get_contents($fitxer), true);
|
||
|
|
||
|
//$registre = shell_exec("wc -l fitxers/registre.json");
|
||
|
//if($registre > 1) { $reg_arx = count($json_dec); }
|
||
|
//else { $reg_arx = 0;
|
||
|
// $json_dec = array();
|
||
|
//}
|
||
|
|
||
|
foreach ($feed->get_data() as $item) {
|
||
|
$id = $i;
|
||
|
// $id = $reg_arx;
|
||
|
$titol = trim($item['title']);
|
||
|
$descripcio = trim($item['description']);
|
||
|
$enllac = $item['link'];
|
||
|
$pub = $item['date'];
|
||
|
$pub_str = strtotime($item['date']);
|
||
|
$guid = $item['guid']['isPermaLink'];
|
||
|
// $media_titol = $item['media:title'];
|
||
|
// $media_img = $item['media:content'];
|
||
|
$fontrss = $fitxer;
|
||
|
// prepare els filtres per generar la matriu
|
||
|
// filtre les URL que continguen estes paraules
|
||
|
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) == false ) ) {
|
||
|
$tria = 1;
|
||
|
$n++;
|
||
|
}
|
||
|
else { $tria = 0; }
|
||
|
|
||
|
} else { $tria = 0; }
|
||
|
|
||
|
$no_rep = in_array($pub_str, array_column($json_dec,"pub_str"));
|
||
|
|
||
|
//genere la matriu amb les dades filtrades
|
||
|
if ( ($tria == 1)&&($no_rep == false) ){
|
||
|
|
||
|
if( ((strtotime("now") - $pub_str) <= $antic_max) ) {
|
||
|
|
||
|
// echo $f."-".$id."-".$n."-".$enllac."-".$pub."-".$fontrss."\n";
|
||
|
$rsst_ara = $titol." ".$descripcio." ".$enllac;
|
||
|
$etiqueta = MstEtiquetes($rsst_ara);
|
||
|
$ara_str = strtotime('now');
|
||
|
$ara = date('d/m/Y H:i:s',$ara_str);
|
||
|
array_push($json_dec,
|
||
|
[
|
||
|
"titol" => (string)$titol,
|
||
|
"descripcio" => (string)$descripcio,
|
||
|
"enllac"=>(string)$enllac,
|
||
|
"etiqueta"=>(string)$etiqueta,
|
||
|
"pub"=>(string)$pub,
|
||
|
"pub_str"=>(int)$pub_str,
|
||
|
"publicada"=>(string)$ara,
|
||
|
// "media"=>(string)$media
|
||
|
// "media_tit"=>(string)$media_titol,
|
||
|
// "media_img"=>(string)$media_img
|
||
|
"font"=>$fontrss
|
||
|
]);
|
||
|
// }
|
||
|
usleep(240000);
|
||
|
$j++;
|
||
|
|
||
|
// print_r($json_dec);
|
||
|
$fes_json = json_encode($json_dec, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT);
|
||
|
$escriu_f_json = fopen($lloc."/fitxers/registre.json", "w") or die("No puc escriure al registre!");
|
||
|
fwrite($escriu_f_json, $fes_json);
|
||
|
fclose($escriu_f_json);
|
||
|
// unset($json_dec);
|
||
|
echo "Afegit registre ".$j." a registre.json.\n";
|
||
|
|
||
|
//filtre data màxima
|
||
|
}
|
||
|
|
||
|
}
|
||
|
$i++;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
//print_r($json_dec);
|
||
|
exit;
|
||
|
|
||
|
buidar:
|
||
|
// buidar fitxer json
|
||
|
$buida_json = file_put_contents($lloc."/fitxers/registre.json", json_encode([]));
|
||
|
echo "He buidat el fitxer registre.json\n";
|
||
|
exit;
|
||
|
|
||
|
repassar:
|
||
|
//echo $lloc;
|
||
|
$fitxer = $lloc."/fitxers/registre.json";
|
||
|
//echo $fitxer;
|
||
|
//matriu a partir del fitxer
|
||
|
$json_decc = json_decode(file_get_contents($fitxer), true);
|
||
|
|
||
|
// per a fer els repas linia a linia
|
||
|
$maxim = count($json_decc);
|
||
|
$e = 0;
|
||
|
//$reg = 0;
|
||
|
//$ara = strtotime("today");
|
||
|
//$ara = strtotime(filemtime($fitxer));
|
||
|
$ara = (filemtime($fitxer));
|
||
|
//echo $ara."\n";
|
||
|
echo "REPASE ".(($maxim<>1)?"ELS ".$maxim." REGISTRES":"EL REGISTRE").".\n";
|
||
|
|
||
|
for($e=0;$e<$maxim;$e++) {
|
||
|
$titol = $json_decc[$e]['titol'];
|
||
|
$men_mi = $json_decc[$e]['descripcio'];
|
||
|
// $men_mi = preg_replace('/\\\\n/','',$men_mi);
|
||
|
$men_mi = str_replace("\n"," ",$men_mi);
|
||
|
$men_qi = $json_decc[$e]['enllac'];
|
||
|
$men_qa = $json_decc[$e]['pub'];
|
||
|
$men_tp = $json_decc[$e]['pub_str'];
|
||
|
$men_et = $json_decc[$e]['etiqueta'];
|
||
|
$men_fn = $json_decc[$e]['font'];
|
||
|
$men_qb = $json_decc[$e]['publicada'];
|
||
|
// $us_memoria = memory_get_usage();
|
||
|
// echo "nº".$e." -> ".$titol."\n".trim($men_mi)."\n".$men_qi."\n".$men_et."\t-> ".$men_qa." - ".$men_tp."\n".$men_qb."\n".$men_fn."\n\n";
|
||
|
echo "nº registre: ".($e+1)."\n\e[1m".$titol."\e[0;96m\n".trim($men_mi)."\e[0m\n\e[4mEnllaç:\e[0m ".$men_qi."\n\e[4mEtiquetes:\e[0m ".$men_et."\n".
|
||
|
"\e[4mData RSS:\e[0m ".$men_qa." - ".$men_tp."\n\e[4mData tut\e[0m: ".$men_qb." ".date("O",$ara)."\n\e[4mFont RSS:\e[0m ".$men_fn."\n\n";
|
||
|
// echo "memoria: ".$us_memoria."\n";
|
||
|
// pausa d'un segon
|
||
|
//sleep(1);
|
||
|
//pausa de mig segon (amb microsegons => unitat més sis ceros == segons );
|
||
|
//usleep(200000);
|
||
|
// $reg++;
|
||
|
|
||
|
}
|
||
|
//unset($json_decc);
|
||
|
exit;
|
||
|
|
||
|
// darrera noticia publicada
|
||
|
darrera:
|
||
|
|
||
|
$fitxer = $lloc."/fitxers/registre.json";
|
||
|
//echo $fitxer;
|
||
|
//matriu a partir del fitxer
|
||
|
$json_decc = json_decode(file_get_contents($fitxer), true);
|
||
|
|
||
|
//print_r($json_dec);
|
||
|
//exit;
|
||
|
// per a fer els repas linia a linia
|
||
|
$maxim = count($json_decc);
|
||
|
$e = $maxim-1;
|
||
|
$reg = 0;
|
||
|
//$ara = strtotime("today");
|
||
|
//$ara = strtotime(filemtime($fitxer));
|
||
|
//$ara = (filemtime($fitxer));
|
||
|
$ara = strtotime("now");
|
||
|
//echo date("O",$ara)."\n";
|
||
|
$ndp = 4;
|
||
|
echo "Las darreres ".$ndp." publicacions han sigut:\n\n";
|
||
|
for($e=($maxim-$ndp);$e<$maxim;$e++) {
|
||
|
$titol = $json_decc[$e]['titol'];
|
||
|
$men_mi = $json_decc[$e]['descripcio'];
|
||
|
$men_qi = $json_decc[$e]['enllac'];
|
||
|
$men_qa = $json_decc[$e]['pub'];
|
||
|
$men_tp = $json_decc[$e]['pub_str'];
|
||
|
$men_et = $json_decc[$e]['etiqueta'];
|
||
|
$men_fn = $json_decc[$e]['font'];
|
||
|
$men_qb = $json_decc[$e]['publicada'];
|
||
|
// $men_qs = strtotime($json_dec[$e]['publicada']);
|
||
|
|
||
|
// echo "nº registre: ".$e."\n\e[1m".$titol."\e[0;96m\n".trim($men_mi)."\e[0m\n\e[4mEnllaç:\e[0m ".$men_qi."\n\e[4mEtiquetes:\e[0m ".$men_et."\n".
|
||
|
// "\e[4mData RSS:\e[0m ".$men_qa." - ".$men_tp."\n\e[4mData tut\e[0m: ".$men_qb."\n\e[4mFont RSS:\e[0m ".$men_fn."\n\n";
|
||
|
echo ($e+1)." - \e[1m".$titol."\e[0;96m\n".trim($men_mi)."\e[0m\n\e[4mEnllaç:\e[0m ".$men_qi."\n\e[4mEtiquetes:\e[0m ".$men_et."\n".
|
||
|
"\e[4mData RSS:\e[0m ".$men_qa." - ".$men_tp."\n\e[4mData tut\e[0m: ".$men_qb." ".date("O",$ara)."\n\e[4mFont RSS:\e[0m ".$men_fn."\n\n";
|
||
|
// pausa d'un segon
|
||
|
//sleep(1);
|
||
|
//pausa de mig segon (amb microsegons => unitat més sis ceros == segons );
|
||
|
//usleep(200000);
|
||
|
$reg++;
|
||
|
}
|
||
|
//unset($json_decc);
|
||
|
goto retallar;
|
||
|
|
||
|
numregistre:
|
||
|
|
||
|
$fitxer = $lloc."/fitxers/registre.json";
|
||
|
//echo $fitxer;
|
||
|
//matriu a partir del fitxer
|
||
|
$json_dec = json_decode(file_get_contents($fitxer), true);
|
||
|
|
||
|
//print_r($json_dec);
|
||
|
//exit;
|
||
|
// per a fer els repas linia a linia
|
||
|
$maxim = count($json_dec);
|
||
|
|
||
|
// preguntar si vols volcar-ho al fitxer .txt
|
||
|
echo "\nEscriu el nombre del registre a revisar entre 0 i ".$maxim."\n";
|
||
|
//return "\nEscriu el nombre del registre a revisar: \n";
|
||
|
$handle = fopen ("php://stdin","r");
|
||
|
$line = fgets($handle);
|
||
|
if( !is_numeric(trim($line)) ) {
|
||
|
echo "HA DE SER UN NUMERO!\n";
|
||
|
// return "HE ACABAT DONCS!\n";
|
||
|
goto numregistre;
|
||
|
} else {
|
||
|
if (trim($line)> $maxim) {
|
||
|
echo "Supera el nombre de registres.\n";
|
||
|
goto numregistre;
|
||
|
} else { goto numregistrev; }
|
||
|
}
|
||
|
fclose($handle);
|
||
|
|
||
|
numregistrev:
|
||
|
echo "\n";
|
||
|
echo "Este és el registre ".trim($line)."\n\n";
|
||
|
|
||
|
$e = trim($line);
|
||
|
$reg = 0;
|
||
|
//$ara = strtotime("today");
|
||
|
//$ara = strtotime(filemtime($fitxer));
|
||
|
$ara = (filemtime($fitxer));
|
||
|
//echo $ara."\n";
|
||
|
//echo "La darrera publicació ha sigut:\n\n";
|
||
|
//for($e=0;$e<$maxim;$e++) {
|
||
|
$titol = $json_dec[$e]['titol'];
|
||
|
$men_mi = $json_dec[$e]['descripcio'];
|
||
|
$men_qi = $json_dec[$e]['enllac'];
|
||
|
$men_qa = $json_dec[$e]['pub'];
|
||
|
$men_tp = $json_dec[$e]['pub_str'];
|
||
|
$men_et = $json_dec[$e]['etiqueta'];
|
||
|
$men_fn = $json_dec[$e]['font'];
|
||
|
$men_qb = $json_dec[$e]['publicada'];
|
||
|
|
||
|
echo "nº registre: ".($e+1)."\n\e[1m".$titol."\e[0;96m\n".trim($men_mi)."\e[0m\n\e[4mEnllaç:\e[0m ".$men_qi."\n\e[4mEtiquetes:\e[0m ".$men_et."\n".
|
||
|
"\e[4mData RSS:\e[0m ".$men_qa." - ".$men_tp."\n\e[4mData tut\e[0m: ".$men_qb."\n\e[4mFont RSS:\e[0m ".$men_fn."\n\n";
|
||
|
|
||
|
// pausa d'un segon
|
||
|
//sleep(1);
|
||
|
//pausa de mig segon (amb microsegons => unitat més sis ceros == segons );
|
||
|
//usleep(200000);
|
||
|
$reg++;
|
||
|
//}
|
||
|
|
||
|
//goto retallar;
|
||
|
|
||
|
duplicats:
|
||
|
|
||
|
$fitxer = $lloc."/fitxers/registre.json";
|
||
|
//echo $fitxer;
|
||
|
//matriu a partir del fitxer
|
||
|
$json_dec = json_decode(file_get_contents($fitxer), true);
|
||
|
$maxim = count($json_dec);
|
||
|
|
||
|
$ids = array_column($json_dec, 'enllac');
|
||
|
$ids = array_unique($ids);
|
||
|
$mat_nova = array_filter($json_dec, function ($clau, $valor) use ($ids) {
|
||
|
return in_array($valor, array_keys($ids));
|
||
|
}, ARRAY_FILTER_USE_BOTH);
|
||
|
|
||
|
print_r($mat_nova);
|
||
|
|
||
|
goto retallar;
|
||
|
|
||
|
retallar:
|
||
|
|
||
|
$fitxer = $lloc."/fitxers/registre.json";
|
||
|
$json_dec = json_decode(file_get_contents($fitxer), true);
|
||
|
|
||
|
// limitar a 480 registres (fer variable?)
|
||
|
if($maxim > ($max_linies+$max_linies_ad)) {
|
||
|
$json_dec = array_splice($json_dec,($maxim-($max_linies+$max_linies_ad)),$maxim);
|
||
|
//print_r($json_dec);
|
||
|
|
||
|
// actualitza el fitxer json
|
||
|
//$fes_json = json_encode($json_dec, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES|JSON_OBJECT_AS_ARRAY|JSON_PRETTY_PRINT);
|
||
|
$fes_json = json_encode($json_dec, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT);
|
||
|
$escriu_f_json = fopen($lloc."/fitxers/registre.json", "w") or die("No puc escriure al registre!");
|
||
|
fwrite($escriu_f_json, $fes_json);
|
||
|
fclose($escriu_f_json);
|
||
|
}
|
||
|
$crmnf = microtime(true);
|
||
|
$tmf = $crmnf - $crrss;
|
||
|
echo "Temps registres: ".round($tmf,4)."\n";
|
||
|
//$log->lwrite("Temps mencions: ".round($tmf,4)."");
|
||
|
?>
|