lfile(''.$log_fitxer.''); $log->lwrite("Estàn activades les estadistiques dels impulsos."); // preparatius i variables comunes $resposta = ConsultaNotificacions($token,$base_url,$limit_i,$headers); $tcc = microtime(true); $dcon = $tcc - $tc; $temps_imp = strtotime("now"); $espera_ob = fopen($lloc . "/fitxers/impulsos_temps.txt", "r") or die("No puc obrir la darrera data!"); $espera_ll = fread($espera_ob,filesize($lloc . "/fitxers/impulsos_temps.txt")); $espera_imp = $espera_ll; fclose($espera_ob); // prova //$espera_imp = strtotime("now"); $temps_ini = $espera_imp - 604800; $nr = count($resposta); $menc_mat = array(); $d = 0; for ($d = 0; $d < $nr; $d++) { // triar les variables que volem de la matriu $men_id = $resposta[$d]['id']; $impuls = $resposta[$d]['type']; $quan = $resposta[$d]['created_at']; $qui = $resposta[$d]['account']['acct']; if(!isset($resposta[$d]['status']['id'])) { $mis_id = 0; } else { $mis_id = $resposta[$d]['status']['id']; } if ( ($impuls == "reblog")||($impuls == "favourite") ) { $menc_mat[] = array ( 'id' => $men_id, 'mis_id' => $mis_id, 'qui' => $qui, 'impuls' => $impuls, 'fet' => $quan ); } } $nrm = count($menc_mat); $imp_resp = null; // llegir fitxer per evitar repeticions $impuls_arx = exec("cat ".$lloc."/fitxers/impulsos.txt", $eix_imp, $resp_imp); $eix_imp = implode(" ",$eix_imp); // verificar que un usuari fa més d'una volta la mateixa acció $e = 0; $nm = 0; $num_seg = 0; $mr = 0; for ($e = 0; $e < $nrm; $e++) { $m_id = $menc_mat[$e]['id']; $miss_id = $menc_mat[$e]['mis_id']; $usuari= $menc_mat[$e]['qui']; $impuls_t= $menc_mat[$e]['impuls']; $quan_m = $menc_mat[$e]['fet']; $quan_str = strtotime($quan_m); $impuls_arx = shell_exec("cat ".$lloc."/fitxers/impulsos.txt"); $no_repetir = strpos($eix_imp,$m_id); // if ( ($impuls_t == "reblog") ) { if (($impuls_t == "reblog")||($impuls_t == "favourite" )) { $no_repetir = strpos($eix_imp, $m_id); // escriu la menció al fitxer per no repetir-la if($no_repetir === false) { // per que siga només a partir de la data i hora de reinici if($quan_str >= $temps_ini) { $escriu_impulsos = fopen($lloc."/fitxers/impulsos.txt", "a") or die("No puc escriure al registre!"); fwrite($escriu_impulsos, $m_id." ".$usuari." ".$impuls_t." ".$miss_id." ".$quan_m."\n"); fclose($escriu_impulsos); $log->lwrite("NOU IMPULS: ".$m_id." ".$usuari." ".$impuls_t." ".$miss_id." ".$quan_m.""); $imp_mat[] = array ( 'id' => (int)$m_id, 'mis_id' => (int)$miss_id, 'qui' => $usuari, 'impuls' => $impuls_t, 'quan' => $quan_m ); $nm++; } } } } if($nm > 0) { $log-> lwrite("He escrit ".$nm." ".(($nm<>1)?"registres":"registre")."."); // fer la matriu de les dades existents al json //$usa_json = exec("php ".$lloc."/proves/proves_impulsos_json.php ".$lloc , $eix_usa_json, $resp_usa_json); $usa_json = shell_exec("php ".$lloc."/proves/proves_impulsos_json.php ".$lloc); // incloure les novetats a la matriu /** // actualitza el fitxer json $fes_json = json_encode($json_dec, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES|JSON_OBJECT_AS_ARRAY); $escriu_f_json = fopen($lloc."/fitxers/impulsos.json", "w") or die("No puc escriure al registre!"); fwrite($escriu_f_json, $fes_json); fclose($escriu_f_json); **/ } if( (filesize($lloc."/fitxers/impulsos.txt"))> (filesize($lloc."/fitxers/impulsos.bak")) ) { $fil_seg = shell_exec("cat ".$lloc."/fitxers/impulsos.txt > ".$lloc."/fitxers/impulsos.bak"); } $impp = 0; $favp = 0; // aqui if de temps if($temps_imp >= $espera_imp) { //recupera còpia de seguretat, si escau if( (filesize($lloc."/fitxers/impulsos.txt")) == 0 ) { $fil_seg = shell_exec("cat ".$lloc."/fitxers/impulsos.bak > ".$lloc."/fitxers/impulsos.txt"); } // 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); // fer el gràfic amb les dades recopilades $fer_grafic_imp = shell_exec($lloc."/utils/bot_plus_fergrafic_imp.php ".$lloc); // pujar gràfic // puja imatge a mastodont $pub_cent = "."; $pub_img = $lloc."/grafic/grafic_imp.png"; $fitxer_tipus = mime_content_type($pub_img); $publica_img = array( "file" => $pub_img, "type"=> $fitxer_tipus, "description" => 'Gràfic impulsos dels '.($nseg_ant).' seguidors.' ); $publ_img = json_encode($publica_img); $status_data = array( "status" => $pub_cent, "text" => $pub_cent, "language" => $llengua, "visibility" => $visib_com ); $pub_img = $lloc."/grafic/grafic_imp.png"; $fitxer_tipus = mime_content_type($pub_img); $fitxer_prep = curl_file_create($pub_img, $fitxer_tipus, 'file'); $publica_img = [ 'file' => $fitxer_prep, 'description' => 'Gràfic impulsos dels '.($nseg_ant).' seguidors.', 'text' => $pub_cent, 'status' => 'missatge amb imatge des del bot' ]; // pujada de la imatge $ch_status = curl_init(); curl_setopt($ch_status, CURLOPT_URL, $base_url . "/api/v2/media"); curl_setopt($ch_status, CURLOPT_POST, 1); curl_setopt($ch_status, CURLOPT_POSTFIELDS, $publica_img); curl_setopt($ch_status, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch_status, CURLOPT_HTTPHEADER, $headers); $output_status = json_decode(curl_exec($ch_status),true); curl_close ($ch_status); echo "\n\nresposta media : \n"; print_r ($output_status); $imat_mst = $output_status['id']; $imat_url = $output_status['url']; // arreplegar dades imatge pujada sleep(1); $bot_status = curl_init(); curl_setopt($bot_status, CURLOPT_URL, $base_url . "/api/v1/media/".$imat_mst.""); curl_setopt($bot_status, CURLOPT_RETURNTRANSFER, true); curl_setopt($bot_status, CURLOPT_HTTPHEADER, $headers); $resposta = (curl_exec($bot_status)); $resposta_json = json_decode(curl_exec($bot_status)); curl_close ($bot_status); // var_dump($resposta); // echo "resposta\n"; // print_r($resposta); $resposta = json_decode($resposta,true); // echo "\n\nresposta json_decode\n"; // print_r($resposta); echo "obtenció dades media: \n"; print_r($resposta_json); sleep(1); $im_id = $resposta['id']; $im_url = $resposta['url']; $im_type = $resposta['type']; $im_desc = $resposta['description']; $img_bis = $lloc."/grafic/grafic_imp.png"; $imatge_adj = array('file' => $im_url, 'type' => $im_type, 'description' => $im_desc); $imatge_adj_json = json_encode($imatge_adj); function http_build_query_for_curl( $arrays, &$new = array(), $prefix = null ) { if ( is_object( $arrays ) ) { $arrays = get_object_vars( $arrays ); } foreach ( $arrays AS $key => $value ) { $k = isset( $prefix ) ? $prefix . '[' . $key . ']' : $key; if ( is_array( $value ) OR is_object( $value ) ) { http_build_query_for_curl( $value, $new, $k ); } else { $new[$k] = $value; } } } //arsort($act_mat_ord); // reblogs //$impuls_resum = exec("cat ".$lloc."/fitxers/impulsos.txt | awk '{print $2}'", $eix_ir, $resp_ir ); $impuls_resum = exec("cat ".$lloc."/fitxers/impulsos.txt | grep 'reblog' | awk '{print $2}'", $eix_ir, $resp_ir ); $mat_reb = array_count_values($eix_ir); $a = 0; arsort($mat_reb); foreach ($mat_reb as $clau => $valor) { $mat_reb_f[] = array('nom' => $clau, 'nombre' => $valor); $a++; } $us_imp = array_values($mat_reb_f)[0]['nom']; $nu_imp = array_values($mat_reb_f)[0]['nombre']; // quants tenen els mateix nombre que el primer? $acabaa = count($mat_reb_f); for($i=0;$i<$acabaa;$i++) { if($mat_reb_f[$i]['nombre'] == $nu_imp) { $mat_reb_fp[] = array('article' => $clau, 'nombre' => $valor); } } $tuts_imp_primers = count($mat_reb_fp); // favorits $favorits_resum = exec("cat ".$lloc."/fitxers/impulsos.txt | grep 'favourite' | awk '{print $2}'", $eix_fr, $resp_fr ); $mat_fav = array_count_values($eix_fr); $b = 0; arsort($mat_fav); foreach ($mat_fav as $clau => $valor) { $mat_fav_f[] = array('nom' => $clau, 'nombre' => $valor); // echo "favorits: ".$clau."->".$valor."\n"; $b++; } $us_fav = array_values($mat_fav_f)[0]['nom']; $nu_fav = array_values($mat_fav_f)[0]['nombre']; // quants tenen els mateix nombre que el primer? $acabaf = count($mat_fav_f); for($i=0;$i<$acabaf;$i++) { if($mat_fav_f[$i]['nombre'] == $nu_fav) { $mat_fav_fp[] = array('article' => $clau, 'nombre' => $valor); } } $tuts_fav_primers = count($mat_fav_fp); //està activat missatges als usuaris? if($act_impuls_usu == 1) { $nrmr = rand(2,3); // impulsos for($f = 0; $f<$nrmr; $f++) { $us_imp = array_values($mat_reb_f)[$f]['nom']; $nu_imp = array_values($mat_reb_f)[$f]['nombre']; $imp_resp = "Moltes gràcies @".$us_imp." per impulsar ".$nu_imp." ".(($nu_imp<>1)?"publicacions":"publicació")." des del ".date('d/m/Y', $temps_ini).". 👏 \n#SocUnBot 🤖 \n".$bot_nom." ".$bot_versio.""; $log -> lwrite ($imp_resp); // publicar $imp_dades = array( "status" => $imp_resp, "language" => $llengua, "visibility" => $visib_imp_usu ); PublicaMissatge($base_url,$headers,$imp_dades); $impp++; } // favorits for($g = 0; $g<$nrmr; $g++) { $us_fav = array_values($mat_fav_f)[$g]['nom']; $nu_fav = array_values($mat_fav_f)[$g]['nombre']; $fav_resp = "Moltes gràcies @".$us_fav." per fer favorit a ".$nu_fav." ".(($nu_fav<>1)?"publicacions":"publicació")." des del ".date('d/m/Y', $temps_ini).". 👏 \n#SocUnBot 🤖 \n".$bot_nom." ".$bot_versio.""; $log -> lwrite ($fav_resp); // publicar $fav_dades = array( "status" => $fav_resp, "language" => $llengua, "visibility" => $visib_imp_usu ); PublicaMissatge($base_url,$headers,$imp_dades); $favp++; } //final activació missatges impulsos i favorits als usuaris } // reblog //$public_resum = shell_exec("cat ".$lloc."/fitxers/impulsos.txt | awk '{print $4}'" ); $public_resum = shell_exec("cat ".$lloc."/fitxers/impulsos.txt | grep 'reblog' | awk '{print $4}'" ); $pub_resum = explode("\n",$public_resum); $mat_res = array_count_values($pub_resum); $c = 0; arsort($mat_res); foreach ($mat_res as $clau => $valor) { echo "$clau = $valor\n"; $mat_res_f[] = array('article' => $clau, 'nombre' => $valor); $c++; } $mes_comp_id = array_values($mat_res_f)[0]['article']; $mes_comp_vl = array_values($mat_res_f)[0]['nombre']; // favorits $public_resum_f = shell_exec("cat ".$lloc."/fitxers/impulsos.txt | grep 'favourite' | awk '{print $4}'" ); $pub_resum_f = explode("\n",$public_resum_f); $mat_res_f = array_count_values($pub_resum_f); $d = 0; arsort($mat_res_f); foreach ($mat_res_f as $clau => $valor) { // echo "favorits_resum: ". $clau. "=". $valor."\n"; $mat_res_fa[] = array('article' => $clau, 'nombre' => $valor); $d++; } $mes_fav_id = array_values($mat_res_fa)[0]['article']; $mes_fav_vl = array_values($mat_res_fa)[0]['nombre']; // 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($tuts_imp_primers == 1) { $comp_miss = "Este és el tut ⬆️ que mes heu compartit, ".$mes_comp_vl." ".(($mes_comp_vl<>1)?"voltes":"volta").", des del ".date('d/m/Y',$temps_ini).".\n". "Moltes gràcies!\n\n". "Estadístiques 📈 \n". "Tuts favorits -> ".$d." tuts\n". "Els han marcat -> ".$b." persones.\n". "🎖️ Qui més favorits n'ha fet ".$nu_fav."\n". "El tut que més n'ha rebut ".$mes_fav_vl."\n". "Ha participat un ".round( (($b/$nseg_ant)*100), 2 )."% sobre el total dels seguidors.\n". "Tuts impulsats -> ".$c." tuts\n". "Els han impulsat -> ".$a." persones.\n". "🥇 Qui més ha impulsat n'ha fet ".$nu_imp." impulsos.\n". "Ha participat un ".round( (($a/$nseg_ant)*100), 2 )."% sobre el total dels seguidors.\n". "#ResumSetmanal #SocUnBot \n".$bot_nom." v".$bot_versio.""; } else { $comp_miss = "Este és un dels ".$tuts_imp_primers ." tuts ⬆️ que mes heu compartit, ".$mes_comp_vl." ".(($mes_comp_vl<>1)?"voltes":"volta").", des del ".date('d/m/Y',$temps_ini).".\n". "Moltes gràcies!\n\n". "Estadístiques 📈 \n". "Tuts favorits -> ".$d." tuts\n". "Els han marcat -> ".$b." persones.\n". "🎖️ Qui més favorits n'ha fet ".$nu_fav."\n". "El tut que més n'ha rebut ".$mes_fav_vl."\n". "Ha participat un ".round( (($b/$nseg_ant)*100), 2 )."% sobre el total dels seguidors.\n". "Tuts impulsats -> ".$c." tuts\n". "Els han impulsat -> ".$a." persones.\n". "🥇 Qui més ha impulsat n'ha fet ".$nu_imp." impulsos.\n". "Ha participat un ".round( (($a/$nseg_ant)*100), 2 )."% sobre el total dels seguidors.\n". "#ResumSetmanal #SocUnBot \n".$bot_nom." v".$bot_versio.""; } $tut = $comp_miss; $log -> lwrite($comp_miss); if($act_impuls_resum == 1) { $status_data2 = array( "status" => $tut, "language" => $llengua, "visibility" => $visib_com ); $tut_matriu = array( "status" => $tut, "text" => $tut, "language" => $llengua, "media_ids[]" => $im_id, "visibility" => $visib_cent, "sensitive" => null, "spoiler_text" => null, "in_reply_to_id" => $mes_comp_id ); http_build_query_for_curl( $tut_matriu, $tut_dades ); // PublicaMissatge($headers,$base_url,$tut_dades); $pub_text_imat = curl_init(); curl_setopt($pub_text_imat, CURLOPT_URL, $base_url . "/api/v1/statuses"); curl_setopt($pub_text_imat, CURLOPT_POST, 1); curl_setopt($pub_text_imat, CURLOPT_POSTFIELDS, $tut_dades); curl_setopt($pub_text_imat, CURLOPT_RETURNTRANSFER, true); curl_setopt($pub_text_imat, CURLOPT_HTTPHEADER, $headers); $resposta_img_txt = json_decode(curl_exec($pub_text_imat),true); curl_close ($pub_text_imat); //exit; $mr++; // executa activitat dels seguidors $activitat_seguidors = shell_exec("/usr/bin/php -f ".$lloc."/proves/proves_activitat_seguidors.php ".$lloc.""); // final si estadistiques està encés } // final if per publicar (caldrà descomentar-lo) } else { $temps_cal = ($espera_imp - $temps_imp); if( ($nm > 0) && (($espera_imp - $temps_imp)>= 86400) ) { $log -> lwrite("Manquen per publicar ".gmdate("d",$temps_cal)." dies i ".gmdate("H:i:s",$temps_cal)." hores"); } if(($espera_imp - $temps_imp)<= 86400) { $log->lwrite("".( gmdate("d",$temps_cal)<>1 ? "Manquen ".gmdate('d',$temps_cal)." dies i ".gmdate('H:i:s',$temps_cal)." hores.":"No manca cap dia i ".gmdate('H:i:s',$temps_cal)." hores.").""); } } //echo "propera publicació: ".$espera_imp." | ".date('r',$espera_imp)."\n"; // condició publicar per refer el fitxer de temps if( ($impp >= 1)||($mr==1)||($favp >=1) ) { //reinicie el fitxer una volta publique el missatge $buida_imp = shell_exec(": > ".$lloc."/fitxers/impulsos.txt"); $buida_imp_cp = shell_exec(": > ".$lloc."/fitxers/impulsos.bak"); $buida_json = file_put_contents($lloc."/fitxers/impulsos.json", json_encode([])); // crea el fitxer per fer el compte de temps $data_ara = strtotime("now"); $data_conv = strtotime("1 week"); $data_dif = $data_ara - $data_conv; $data_cal = $data_ara + $data_dif; $data_conv = ($data_conv + rand(-300,300)); // escriu el fitxer per saber quan publicar $escriu_imp_t = fopen($lloc."/fitxers/impulsos_temps.txt", "w") or die("No puc escriure al registre!"); fwrite($escriu_imp_t, $data_conv); fclose($escriu_imp_t); } $tcf = microtime(true); $dc = $tcf - $tc; $log->lwrite("Temps impulsos: ".round($dc,4).""); ?>