PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /home/trave494/topmoviesreview.kerihosting.com/wp-content/plugins/wp-automatic/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : /home/trave494/topmoviesreview.kerihosting.com/wp-content/plugins/wp-automatic/core.tiktok.php |
<?php // Main Class require_once 'core.php'; class WpAutomatictiktok extends wp_automatic { function tiktok_get_post($camp) { //random user agent curl_setopt ( $this->ch, CURLOPT_USERAGENT, $this->randomUserAgent() ); // ini keywords $camp_opt = unserialize ( $camp->camp_options ); $keywords = explode ( ',', $camp->camp_keywords ); $camp_general = unserialize ( base64_decode ( $camp->camp_general ) ); // looping keywords foreach ( $keywords as $keyword ) { $keyword = trim ( $keyword ); // update last keyword update_post_meta ( $camp->camp_id, 'last_keyword', trim ( $keyword ) ); // when valid keyword if (trim ( $keyword ) != '') { // record current used keyword $this->used_keyword = $keyword; echo '<br>Let\'s post a TikTok Video for the key:' . $keyword; // getting links from the db for that keyword $query = "select * from {$this->wp_prefix}automatic_general where item_type= 'tt_{$camp->camp_id}_$keyword' "; $res = $this->db->get_results ( $query ); // when no links lets get new links if (count ( $res ) == 0) { // clean any old cache for this keyword $query_delete = "delete from {$this->wp_prefix}automatic_general where item_type='tt_{$camp->camp_id}_$keyword' "; $this->db->query ( $query_delete ); // get new links $this->tiktok_fetch_items ( $keyword, $camp ); // getting links from the db for that keyword $res = $this->db->get_results ( $query ); } // check if already duplicated // deleting duplicated items $item_count = count ( $res ); for($i = 0; $i < $item_count; $i ++) { $t_row = $res [$i]; $t_data = unserialize ( base64_decode ( $t_row->item_data ) ); $t_link_url = $t_data ['item_url']; echo '<br>Link:' . $t_link_url . '<-published:' . $t_data ['item_created_date']; // check if older than a specific date // check if older than minimum date if (in_array ( 'OPT_YT_DATE', $camp_opt )) { if ($this->is_link_old ( $camp->camp_id, strtotime ( $t_data ['item_created_date'] ) )) { unset ( $res [$i] ); echo '<--old post execluding...'; $query = "delete from {$this->wp_prefix}automatic_general where id={$t_row->id}"; $this->db->query ( $query ); continue; } } // check if link is duplicated if ($this->is_duplicate ( $t_link_url )) { // duplicated item let's delete unset ( $res [$i] ); echo '<br>tiktok pic (' . $t_data ['item_title'] . ') found cached but duplicated <a href="' . get_permalink ( $this->duplicate_id ) . '">#' . $this->duplicate_id . '</a>'; // delete the item $query = "delete from {$this->wp_prefix}automatic_general where id={$t_row->id}"; $this->db->query ( $query ); } else { break; } } // end for // check again if valid links found for that keyword otherwise skip it if (count ( $res ) > 0) { // lets process that link $ret = $res [$i]; $temp = unserialize ( base64_decode ( $ret->item_data ) ); // generating title if (@trim ( $temp ['item_title'] ) == '') { if (in_array ( 'OPT_IT_AUTO_TITLE', $camp_opt )) { echo '<br>No title generating...'; $cg_it_title_count = $camp_general ['cg_it_title_count']; if (! is_numeric ( $cg_it_title_count )) $cg_it_title_count = 80; // Clean content from tags , emoji and more $contentClean = $this->removeEmoji ( strip_tags ( strip_shortcodes ( $this->strip_urls ( $temp ['item_description'] ) ) ) ); // remove hashtags if (in_array ( 'OPT_TT_NO_TTL_TAG', $camp_opt )) { $contentClean = preg_replace ( '{#\S*}', '', $contentClean ); } // remove mentions if (in_array ( 'OPT_TT_NO_TTL_MEN', $camp_opt )) { $contentClean = preg_replace ( '{@\S*}', '', $contentClean ); } if (function_exists ( 'mb_substr' )) { $newTitle = (mb_substr ( $contentClean, 0, $cg_it_title_count )); } else { $newTitle = (substr ( $contentClean, 0, $cg_it_title_count )); } $temp ['item_title'] = in_array ( 'OPT_GENERATE_TW_DOT', $camp_opt ) ? ($newTitle) : ($newTitle) . '...'; } else { $temp ['item_title'] = '(notitle)'; } } // report link echo '<br>Found Link:' . $temp ['item_url'] . ' <-published:' . $t_data ['item_created_date']; // update the link status to 1 $query = "delete from {$this->wp_prefix}automatic_general where id={$ret->id}"; $this->db->query ( $query ); // if cache not active let's delete the cached videos and reset indexes if (! in_array ( 'OPT_IT_CACHE', $camp_opt )) { echo '<br>Cache disabled claring cache ...'; $query = "delete from {$this->wp_prefix}automatic_general where item_type='tt_{$camp->camp_id}_$keyword' "; $this->db->query ( $query ); // reset index $query = "update {$this->wp_prefix}automatic_keywords set keyword_start =1 where keyword_camp={$camp->camp_id}"; $this->db->query ( $query ); delete_post_meta ( $camp->camp_id, 'wp_tiktok_next_max_id' . md5 ( $keyword ) ); } $temp['item_embed'] = '<blockquote class="tiktok-embed" cite="'. $temp['item_url'] .'" data-video-id="' . $temp['item_id'] . '" style="max-width: 605px;min-width: 325px;" ><section> </section> </blockquote> <script async src="https://www.tiktok.com/embed.js"></script>'; // remove hashtags if (in_array ( 'OPT_TT_NO_CNT_TAG', $camp_opt )) { $temp ['item_description'] = preg_replace ( '{#\S*}', '', $temp ['item_description'] ); } // fix date $temp ['item_created_date'] = get_date_from_gmt ( $temp ['item_created_date'] ); if(in_array('OPT_IT_CACHE', $camp_opt)){ echo '<br>Cache enabled, lets retrive fresh images...'; //curl get $x='error'; curl_setopt( $this->ch, CURLOPT_HTTPGET, 1); curl_setopt( $this->ch, CURLOPT_URL, $temp['item_url'] ); $exec=curl_exec( $this->ch ); $x=curl_error($this->ch); //"originCover":"https:/ preg_match ( '!"originCover":"(.*?)"!' , $exec , $matches); if(isset($matches[1]) && trim($matches[1]) != '' ){ echo '<-- found cover pic'; $temp ['item_img'] = wp_automatic_fix_json_part( $matches[1] ); }else{ echo '<-- cover pic not found'; } //"avatarThumb" preg_match ( '!"avatarThumb":"(.*?)"!' , $exec , $matches); if(isset($matches[1]) && trim($matches[1]) != '' ){ echo '<-- found profile pic'; $temp ['item_user_profile_pic'] = wp_automatic_fix_json_part( $matches[1] ); }else{ echo '<-- profile pic not found'; } } // item images ini $temp ['item_images'] = '<img src="' . $temp ['item_img'] . '" />'; return $temp; } else { echo '<br>No links found for this keyword'; } } // if trim } // foreach keyword } function tiktok_fetch_items($keyword, $camp) { // report echo "<br>So I should now get some items from tiktok for keyword :" . $keyword; //random user agent $random_agent = $this->randomUserAgent(); curl_setopt ( $this->ch, CURLOPT_USERAGENT, $random_agent ); // ini options $camp_opt = unserialize ( $camp->camp_options ); if (stristr ( $camp->camp_general, 'a:' )) $camp->camp_general = base64_encode ( $camp->camp_general ); $camp_general = unserialize ( base64_decode ( $camp->camp_general ) ); $camp_general = array_map ( 'wp_automatic_stripslashes', $camp_general ); // get start-index for this keyword $query = "select keyword_start ,keyword_id from {$this->wp_prefix}automatic_keywords where keyword_name='$keyword' and keyword_camp={$camp->camp_id}"; $rows = $this->db->get_results ( $query ); $row = $rows [0]; $kid = $row->keyword_id; $start = $row->keyword_start; if ($start == 0) $start = 1; if ($start == - 1) { echo '<- exhausted keyword'; if (! in_array ( 'OPT_IT_CACHE', $camp_opt )) { $start = 1; echo '<br>Cache disabled resetting index to 1'; } else { // check if it is reactivated or still deactivated if ($this->is_deactivated ( $camp->camp_id, $keyword )) { $start = 1; } else { // still deactivated return false; } } } else { if (! in_array ( 'OPT_IT_CACHE', $camp_opt )) { $start = 1; echo '<br>Cache disabled resetting index to 1'; } } echo ' index:' . $start; // update start index to start+1 $nextstart = $start + 1; $query = "update {$this->wp_prefix}automatic_keywords set keyword_start = $nextstart where keyword_id=$kid "; $this->db->query ( $query ); // pagination if ( $start == 1 ) { // use first base query $wp_tiktok_next_max_id = 0; echo ' Posting from the first page...'; } else { // not first page get the bookmark $wp_tiktok_next_max_id = get_post_meta ( $camp->camp_id, 'wp_tiktok_next_max_id' . md5 ( $keyword ), 1 ); if (trim ( $wp_tiktok_next_max_id ) == '') { echo '<br>No new page max id'; $wp_tiktok_next_max_id = 0; } else { if (in_array ( 'OPT_IT_CACHE', $camp_opt )) { echo '<br>max_id:' . $wp_tiktok_next_max_id; } else { $start = 1; echo '<br>Cache disabled resetting index to 1'; $wp_tiktok_next_max_id = 0; } } } // if specific user posting if (in_array ( 'OPT_TT_USER', $camp_opt )) { $cg_tt_user = trim ( $camp_general ['cg_tt_user'] ); echo '<br>Specific user:' . $cg_tt_user; $qkeyword_md5 = '__' . md5($cg_tt_user); // prepare keyword $challenge_id = get_post_meta( $camp->camp_id , $qkeyword_md5 , true ); //get challenge if empty if(trim($challenge_id) == '' ){ //get the challenge echo '<br>Getting the challenge ID for the user.... ' ; //curl get $x='error'; $url='https://www.tiktok.com/@' .$cg_tt_user ; curl_setopt($this->ch, CURLOPT_HTTPGET, 1); curl_setopt($this->ch, CURLOPT_URL, trim($url)); $exec=curl_exec($this->ch); //tiktok-verify-page if( true || stristr($exec, 'tiktok-verify-page') ){ echo '<br>Found TikTok capacha page... using auto proxy...'; $new_exec = $this->wp_automatic_auto_proxy($url, 'secUid'); if( strpos($new_exec, 'secUid' ) ){ $exec = $new_exec; } } //"secUid":"MS4wLjABAAAAb6sufevCrDdNOnNRH7uwM_esGiD5sfScJxGfEQBsDyW6K10YJcwlvGR-lzqMBidP" preg_match('!"secUid":"(.*?)"!' , $exec , $challenges_found); if(isset($challenges_found[1]) && trim($challenges_found[1]) != ''){ add_post_meta( $camp->camp_id , $qkeyword_md5 , $challenges_found[1] ); $challenge_id = $challenges_found[1]; echo '<-- Found:' . $challenge_id; }else{ echo '<-- Not Found'; echo $exec; } } //get by user $random_agent_enc = urlencode($random_agent); echo '<br>Random agent:'.$random_agent; $tik_url = "https://m.tiktok.com/api/post/item_list/?aid=1988&app_name=tiktok_web&device_platform=web&referer=&root_referer=https:%2F%2Fwww.google.com%2F&user_agent=Mozilla%2F5.0+(Macintosh%3B+Intel+Mac+OS+X+10_14_6)+AppleWebKit%2F537.36+(KHTML,+like+Gecko)+Chrome%2F88.0.4324.96+Safari%2F537.36&cookie_enabled=true&screen_width=1280&screen_height=800&browser_language=en-US&browser_platform=MacIntel&browser_name=Mozilla&browser_version=5.0+(Macintosh%3B+Intel+Mac+OS+X+10_14_6)+AppleWebKit%2F537.36+(KHTML,+like+Gecko)+Chrome%2F88.0.4324.96+Safari%2F537.36&browser_online=true&ac=3g&timezone_name=Africa%2FCairo&page_referer=https:%2F%2Fwww.tiktok.com%2Ftag%2Fforyoupage%3Flang%3Den&priority_region=&verifyFp=verify_kkdzsf0j_twyzymaf_rj0P_4sMu_A03Z_PyrC1RBW8ssF&appId=1233®ion=EG&appType=m&isAndroid=false&isMobile=false&isIOS=false&OS=mac&did=6873144183268607493&count=30&cursor=$wp_tiktok_next_max_id&secUid=$challenge_id&language=en&_signature=_02B4Z6wo00d014helegAAIDBhMNkfYr8pPuIXpFAAIJ642" ; $tik_url = "https://m.tiktok.com/api/post/item_list/?aid=1988&app_name=tiktok_web&device_platform=web&referer=&root_referer=https:%2F%2Fwww.google.com%2F&user_agent=$random_agent_enc&cookie_enabled=true&screen_width=1280&screen_height=800&browser_language=en-US&browser_platform=MacIntel&browser_name=Mozilla&browser_version=5.0+(Macintosh%3B+Intel+Mac+OS+X+10_14_6)+AppleWebKit%2F537.36+(KHTML,+like+Gecko)+Chrome%2F88.0.4324.96+Safari%2F537.36&browser_online=true&ac=3g&timezone_name=Africa%2FCairo&page_referer=https:%2F%2Fwww.tiktok.com%2Ftag%2Fforyoupage%3Flang%3Den&priority_region=&verifyFp=verify_kkdzsf0j_twyzymaf_rj0P_4sMu_A03Z_PyrC1RBW8ssF&appId=1233®ion=EG&appType=m&isAndroid=false&isMobile=false&isIOS=false&OS=mac&did=6873144183268607493&count=30&cursor=$wp_tiktok_next_max_id&secUid=$challenge_id&language=en&_signature=_02B4Z6wo00d014helegAAIDBhMNkfYr8pPuIXpFAAIJ642" ; } else { // prepare keyword $qkeyword = trim(str_replace ( ' ', '', $keyword )); $qkeyword = str_replace ( '#', '', $qkeyword ); $qkeyword_md5 = '__' . md5($qkeyword); $challenge_id = get_post_meta( $camp->camp_id , $qkeyword_md5 , true ); //get challenge if empty if(trim($challenge_id) == '' ){ //get the challenge echo '<br>Getting the challenge ID for the term.... ' ; //curl get $x='error'; $url='https://www.tiktok.com/tag/' .$qkeyword ; curl_setopt($this->ch, CURLOPT_HTTPGET, 1); curl_setopt($this->ch, CURLOPT_URL, trim($url)); $exec=curl_exec($this->ch); preg_match('!challenge/detail/(\d*)!' , $exec , $challenges_found); if(isset($challenges_found[1]) && is_numeric($challenges_found[1])){ add_post_meta( $camp->camp_id , $qkeyword_md5 , $challenges_found[1] ); $challenge_id = $challenges_found[1]; echo '<-- Found:' . $challenge_id; } } //get by keyword $tik_url = "https://m.tiktok.com/api/challenge/item_list/?aid=1988&app_name=tiktok_web&device_platform=web&referer=&root_referer=https:%2F%2Fwww.google.com%2F&user_agent=Mozilla%2F5.0+(Macintosh%3B+Intel+Mac+OS+X+10_14_6)+AppleWebKit%2F537.36+(KHTML,+like+Gecko)+Chrome%2F88.0.4324.96+Safari%2F537.36&cookie_enabled=true&screen_width=1280&screen_height=800&browser_language=en-US&browser_platform=MacIntel&browser_name=Mozilla&browser_version=5.0+(Macintosh%3B+Intel+Mac+OS+X+10_14_6)+AppleWebKit%2F537.36+(KHTML,+like+Gecko)+Chrome%2F88.0.4324.96+Safari%2F537.36&browser_online=true&ac=3g&timezone_name=Africa%2FCairo&page_referer=https:%2F%2Fwww.tiktok.com%2F%3Flang%3Den&priority_region=&verifyFp=verify_kkdzsf0j_twyzymaf_rj0P_4sMu_A03Z_PyrC1RBW8ssF&appId=1233®ion=EG&appType=m&isAndroid=false&isMobile=false&isIOS=false&OS=mac&did=6873144183268607493&challengeID=$challenge_id&count=30&cursor=$wp_tiktok_next_max_id&_signature=_02B4Z6wo00901oZG7CQAAIDAitsds2tULt6GR-iAAMGN65" ; } //get //curl get echo '<br>Loading:' . $tik_url; $x='error'; curl_setopt($this->ch, CURLOPT_HTTPGET, 1); curl_setopt($this->ch, CURLOPT_URL, trim($tik_url)); $exec=curl_exec($this->ch); $x=curl_error($this->ch); $items = array(); if( strpos($exec, 'itemList') ){ $json_arr = json_decode($exec); $items = $json_arr->itemList; // reverse if (in_array ( 'OPT_TT_REVERSE', $camp_opt )) { echo '<br>Reversing order'; $items = array_reverse ( $items ); } echo '<ol>'; // loop items $i = 0; foreach ( $items as $item ) { //echo '<pre>'; //print_r($item); // clean itm unset ( $itm ); // report https://www.tiktok.com/@kelly_bove/video/6855066585514659077 // build item $itm ['item_id'] = $item->id; $itm ['item_url'] = 'https://www.tiktok.com/@' . $item->author->uniqueId . '/video/' . $item->id; echo '<li>' . $itm ['item_url']; $itm ['item_description'] = $item->desc; $itm ['video_view_count'] = $item->stats->playCount; $itm ['item_img'] = $item->video->originCover; $itm ['item_img_width'] = $item->video->width; $itm ['item_img_height'] = $item->video->height; $itm ['item_user_id'] = $item->author->id; $itm ['item_created_time'] = $item->createTime; // item date $itm ['item_created_date'] = date ( 'Y-m-d H:i:s', $item->createTime ); $itm ['item_likes_count'] = $item->stats->diggCount; $itm ['item_user_username'] = $item->author->uniqueId; $itm ['item_user_link'] = 'https://www.tiktok.com/@' .$item->author->uniqueId; // full name $itm ['item_user_name'] = $item->author->nickname;; $itm ['item_user_profile_pic'] = $item->author->avatarThumb; //item_tags $all_tags = array(); if(isset($item->challenges)){ foreach($item->challenges as $new_tag){ $all_tags[] = $new_tag->title; } } $itm ['item_tags'] = implode(',', $all_tags); // comments postponed /* $commentsArray = array (); $itm ['item_comments'] = $commentsArray; */ $data = base64_encode ( serialize ( $itm ) ); $i ++; if ($this->is_execluded ( $camp->camp_id, $itm ['item_url'] )) { echo '<-- Execluded'; continue; } // check if old $was_there_old_items = false; if (in_array ( 'OPT_YT_DATE', $camp_opt )) { if ($this->is_link_old ( $camp->camp_id, strtotime ( $itm ['item_created_date'] ) )) { unset ( $items [$i] ); echo '<--old post execluding...'; $was_there_old_items = true; continue; } } if (! $this->is_duplicate ( $itm ['item_url'] )) { $query = "INSERT INTO {$this->wp_prefix}automatic_general ( item_id , item_status , item_data ,item_type) values ( '{$itm['item_id']}', '0', '$data' ,'tt_{$camp->camp_id}_$keyword') "; $this->db->query ( $query ); } else { echo ' <- duplicated <a href="' . get_edit_post_link ( $this->duplicate_id ) . '">#' . $this->duplicate_id . '</a>'; } echo '</li>'; } echo '</ol>'; echo '<br>Total ' . $i . ' pics found & cached'; // check if nothing found so deactivate if ($i == 0) { echo '<br>No new items got found '; echo '<br>Keyword have no more items deactivating...'; $query = "update {$this->wp_prefix}automatic_keywords set keyword_start = -1 where keyword_id=$kid "; $this->db->query ( $query ); if (! in_array ( 'OPT_NO_DEACTIVATE', $camp_opt )) $this->deactivate_key ( $camp->camp_id, $keyword ); // delete bookmark value delete_post_meta ( $camp->camp_id, 'wp_tiktok_next_max_id' . md5 ( $keyword ) ); } else { // get max id if (isset ( $json_arr->hasMore ) && $json_arr->hasMore == 1) { echo '<br>Updating max_id:' . $json_arr->cursor; update_post_meta ( $camp->camp_id, 'wp_tiktok_next_max_id' . md5 ( $keyword ), $json_arr->cursor); } else { echo '<br>No pagination found deleting next page index'; delete_post_meta ( $camp->camp_id, 'wp_tiktok_next_max_id' . md5 ( $keyword ) ); // disable queries for an hour if cache disabled if (in_array ( 'OPT_IT_CACHE', $camp_opt )) { $query = "update {$this->wp_prefix}automatic_keywords set keyword_start = -1 where keyword_id=$kid "; $this->db->query ( $query ); if (! in_array ( 'OPT_NO_DEACTIVATE', $camp_opt )) $this->deactivate_key ( $camp->camp_id, $keyword ); // delete bookmark value delete_post_meta ( $camp->camp_id, 'wp_tiktok_next_max_id' . md5 ( $keyword ) ); } } } } else { // no valid reply echo '<br>No Valid reply for tiktok search <br>' . $exec; } } }