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).""); ?>