PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /home/trave494/demo2024feb.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/demo2024feb.kerihosting.com/wp-content/plugins/wp-automatic/core.soundcloud.php |
<?php // Main Class require_once 'core.php'; class WpAutomaticSoundCloud extends wp_automatic { /** * function sound_get_post */ function sound_get_post($camp) { // API client id $wp_automatic_sc_client = $this->get_soundcloud_key (); // If no API setup Don't post if (trim ( $wp_automatic_sc_client ) == '') { echo '<br>SoundCloud API key is required,please visit the settings page and add it'; return false; } // ini keywords and options $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; // getting links from the db for that keyword $query = "select * from {$this->wp_prefix}automatic_general where item_type= 'sc_{$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='sc_{$camp->camp_id}_$keyword' "; $this->db->query ( $query_delete ); // get new links $this->sound_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 $res_count = count ( $res ); for($i = 0; $i < $res_count; $i ++) { $t_row = $res [$i]; $t_data = unserialize ( base64_decode ( $t_row->item_data ) ); $t_link_url = $t_data ['item_url']; if ($this->is_duplicate ( $t_link_url )) { // duplicated item let's delete unset ( $res [$i] ); echo '<br>SoundCloud item (' . $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; } } // 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 // report link echo '<br>Found Link:' . $temp ['item_url']; // 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 items and reset indexes if (! in_array ( 'OPT_SC_CACHE', $camp_opt )) { echo '<br>Cache disabled claring cache ...'; $query = "delete from {$this->wp_prefix}automatic_general where item_type='sc_{$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 ); } $temp ['item_embed'] = '<iframe width="100%" height="450" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/' . $temp ['item_id'] . '&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&visual=true"></iframe>'; return $temp; } else { echo '<br>No links found for this keyword'; } } // if trim } // foreach keyword } /** * function sound_fetch_items * * @param unknown $camp */ function sound_fetch_items($keyword, $camp) { // report echo "<br>So I should now get some sounds from SoundCloud for keyword :" . $keyword; // 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_SC_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; } } } // soundcloud offset parameter starts from zero, 50 , 100 if ($start == 1) $start = 0; echo ' index:' . $start; // update start index to start+1 $nextstart = $start + 50; $query = "update {$this->wp_prefix}automatic_keywords set keyword_start = $nextstart where keyword_id=$kid "; $this->db->query ( $query ); $wp_automatic_sc_client = $this->get_soundcloud_key (); // if specific user posting if (in_array ( 'OPT_SC_USER', $camp_opt )) { $cg_sc_user_playlist = $camp_general ['cg_sc_user_playlist']; $author = $camp_general ['cg_sc_user']; if (! is_numeric ( $author )) { // getting correct author id $md5_author = md5 ( $author ); $possible_author = get_post_meta ( $camp->camp_id, $md5_author, true ); if (is_numeric ( $possible_author )) { echo '<br>Setting author to:' . $possible_author; $author = $possible_author; } else { $possible_url = $author; if (! stristr ( $possible_url, 'http' )) { $possible_url = "https://soundcloud.com/" . $possible_url; } // curl get $x = 'error'; $url = $possible_url; echo '<br>Loading:' . $possible_url; curl_setopt ( $this->ch, CURLOPT_HTTPGET, 1 ); curl_setopt ( $this->ch, CURLOPT_URL, trim ( $url ) ); $exec = curl_exec ( $this->ch ); $x = curl_error ( $this->ch ); // "soundcloud://users:42301153" "soundcloud://playlists:64167521" preg_match ( '!"soundcloud://' . $cg_sc_user_playlist . 's:(.*?)"!' , $exec, $found_possible_user_matches ); if (isset ( $found_possible_user_matches [1] ) && trim ( $found_possible_user_matches[1] ) != '') { echo '<br>Found Numeric ID:' . $found_possible_user_matches [1]; update_post_meta ( $camp->camp_id, $md5_author, $found_possible_user_matches [1] ); $author = $found_possible_user_matches [1]; }else{ echo '<--Did not find the ID, please add a numeric ID instead of the URL'; } } } if ($cg_sc_user_playlist == 'user') { $url = "http://api-v2.soundcloud.com/users/" . trim ( $author ) . "/tracks"; // pagination URL $pagination_url = get_post_meta ( $camp->camp_id, 'wp_automatic_' . trim ( $author ) . '_next', true ); echo '<br>Pagination found:' . $pagination_url; if (trim ( $pagination_url ) != '' && in_array ( 'OPT_SC_CACHE', $camp_opt )) $url = $pagination_url; } else { $url = "http://api-v2.soundcloud.com/playlists/" . trim ( $author ) . '?representation=full'; } } else { if (in_array ( 'OPT_SC_TAG_SEARCH', $camp_opt )) { $url = "https://api-v2.soundcloud.com/search/tracks?q=&filter.genre_or_tag=" . urlencode ( trim ( $keyword ) ) . "&sort=popular&app_version=1607422960&app_locale=en"; } else { $url = "http://api.soundcloud.com/tracks/?q=" . urlencode ( trim ( $keyword ) ); $url = "https://api-v2.soundcloud.com/search/tracks?q=" . urlencode ( trim ( $keyword ) ) . "&facet=genre&app_version=1606721975&app_locale=en"; } } // authentication if (stristr ( $url, '?' )) { $url = $url . '&client_id=' . trim ( $wp_automatic_sc_client ); } else { $url = $url . '?client_id=' . trim ( $wp_automatic_sc_client ); } // pagination // if playlist there is no pagination it retuns them all if (! stristr ( $url, '/playlists/' ) && ! stristr ( $url, '/users/' )) { $url = $url . '&limit=50&linked_partitioning=true&offset=' . $start; } else { echo '<br>Posting from playlist/user, skipping pagination'; } // date limit // published after filter 2014-3-10 00:00:00 if (in_array ( 'OPT_YT_DATE', $camp_opt )) { $beforeDate = $camp_general ['cg_yt_dte_year'] . "-" . $camp_general ['cg_yt_dte_month'] . "-" . $camp_general ['cg_yt_dte_day'] . " 00:00:00"; $url .= "&created_at[from]=" . urlencode ( $beforeDate ); } // report url echo '<br>SoundCloud url:' . $url; curl_setopt ( $this->ch, CURLOPT_HTTPGET, 1 ); curl_setopt ( $this->ch, CURLOPT_URL, trim ( $url ) ); curl_setopt ( $this->ch, CURLOPT_ENCODING, "" ); $exec = curl_exec ( $this->ch ); $x = curl_error ( $this->ch ); // validating reply if (stristr ( $exec, '{"' )) { // valid reply // handle pins $arr = json_decode ( $exec ); // sounds get if (stristr ( $url, '/playlists/' )) { $items = $arr->tracks; $final_list = array (); $playlist_tracks_ids = ''; foreach ( $items as $item ) { $ids [] = $item->id; } for($i = 0; $i < count ( $ids ); $i = $i + 50) { $id_patchs [] = array_slice ( $ids, $i, 50 ); } foreach ( $id_patchs as $id_patch_arr ) { $playlist_tracks_ids = implode ( ',', $id_patch_arr ); // curl get $x = 'error'; $url = 'https://api-v2.soundcloud.com/tracks?ids=' . urlencode ( $playlist_tracks_ids ) . '&client_id=' . trim ( $wp_automatic_sc_client ); echo '<br>Tracks list Call:' . $url; curl_setopt ( $this->ch, CURLOPT_HTTPGET, 1 ); curl_setopt ( $this->ch, CURLOPT_URL, trim ( $url ) ); $exec = curl_exec ( $this->ch ); $x = curl_error ( $this->ch ); if (stristr ( $exec, 'artwork_url' )) { $new_list = json_decode ( $exec ); $final_list = array_merge ( $final_list, $new_list ); echo '<--- ' . count ( $new_list ) . ' tracks returned'; } } $items = $final_list; } else { $items = $arr->collection; } // if reversion order if (in_array ( 'OPT_SC_REVERSE', $camp_opt )) { echo '<br>Reversing order'; $items = array_reverse ( $items ); } echo '<ol>'; // loop pins $i = 0; foreach ( $items as $item ) { $itm ['item_url'] = $item->permalink_url; echo '<li>' . $itm ['item_url']; $itm ['item_id'] = $item->id; $itm ['item_likes_count'] = $item->likes_count; $itm ['item_purchase_url'] = $item->purchase_url; $itm ['item_thumbnail'] = $item->artwork_url; $itm ['item_thumbnail'] = str_replace ( '-large', '-t500x500', $itm ['item_thumbnail'] ); $itm ['item_comment_count'] = $item->comment_count; $itm ['item_title'] = $item->title; $itm ['item_description'] = $item->description; $itm ['item_favoritings_count'] = isset($item->favoritings_count) ? $item->favoritings_count : '' ; $itm ['item_genre'] = $item->genre; $itm ['item_playback_count'] = $item->playback_count; $itm ['item_reposts_count'] = $item->reposts_count; $itm ['item_tags'] = $item->tag_list; $itm ['item_created_at'] = $item->created_at; $itm ['item_duration'] = $item->duration; $itm ['item_duration'] = number_format ( $item->duration / 60000, 2 ); $itm ['item_user_id'] = $item->user_id; $itm ['item_user_link'] = $item->user->permalink_url; $itm ['item_user_thumbnail'] = $item->user->avatar_url; $itm ['item_user_thumbnail'] = str_replace ( '-large', '-t500x500', $itm ['item_user_thumbnail'] ); $itm ['item_user_username'] = $item->user->username; $itm ['item_download_url'] = isset($item->download_url) ? $item->download_url : ''; if (trim ( $itm ['item_download_url'] ) != '') { $itm ['item_download_url'] = $itm ['item_download_url'] . '?client_id=376f225bf427445fc4bfb6b99b72e0bf'; } $data = base64_encode ( serialize ( $itm ) ); if ($this->is_execluded ( $camp->camp_id, $itm ['item_url'] )) { echo '<-- Execluded'; 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' ,'sc_{$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>'; $i ++; } echo '</ol>'; echo '<br>Total ' . $i . ' items found & cached'; // pagination URL if (in_array ( 'OPT_SC_USER', $camp_opt ) && $cg_sc_user_playlist == 'user') { if (isset ( $arr->next_href ) && trim ( $arr->next_href ) != '') { echo '<br>Next page URL:' . $arr->next_href; update_post_meta ( $camp->camp_id, 'wp_automatic_' . trim ( $author ) . '_next', $arr->next_href ); } } // check if nothing found so deactivate if ($i == 0) { echo '<br>No new sounds found '; if (in_array ( 'OPT_SC_USER', $camp_opt ) && $cg_sc_user_playlist == 'user') { // delete next page for user if no next page available if ((! isset ( $arr->next_href ) || trim ( $arr->next_href ) == '')) { delete_post_meta ( $camp->camp_id, 'wp_automatic_' . trim ( $author ) . '_next' ); echo '<br>Keyword have no more sounds 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 ); } } else { echo '<br>Keyword have no more sounds 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 ); } } } else { // no valid reply echo '<br>No Valid reply for sounds search from SoundCloud<br>' . $exec; } } }