• Home (current)
  • वर्तमान निदेशक => /home/honehdyv/yours-toclaim.com/wp-content/plugins/wp-automatic/
  • सूचना एवं अपलोड
    Info Server
Indian Cyber Force
Folders रचयन्तु सञ्चिकां रचयन्तु RansomWeb लॉगआउट
Current File : /home/honehdyv/yours-toclaim.com/wp-content/plugins/wp-automatic/core.twitter.php
<?php

// Main Class
require_once 'core.php';

Class WpAutomaticTwitter extends wp_automatic{


function twitter_fetch_items($keyword,$camp ){

	//report
	  echo "<br>So I should now get some tweets from Twitter for Search :" . $keyword;

	//verify twitter token
	$wp_automatic_tw_consumer = trim( get_option('wp_automatic_tw_consumer',''));
	$wp_automatic_tw_secret = trim( get_option('wp_automatic_tw_secret',''));

	if( ($wp_automatic_tw_consumer) == '' || $wp_automatic_tw_consumer == ''){
		  echo '<br>Twitter consumer key and secret key are required, please visit the settings page and add it';
		return false;
	}
		
	// 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;
			}

		}

	}elseif( ! in_array( 'OPT_IT_CACHE' , $camp_opt ) ){
		$start =1;
		echo '<br>Cache disabled resetting index to 1';
	}


	//generating token if not exists
	$wp_automatic_tw_token = get_option('wp_automatic_tw_token','');

	if(trim($wp_automatic_tw_token) == ''){
			
		echo '<br>Generating a new twitter access token...';			
		$concated = urlencode($wp_automatic_tw_consumer) . ':'. urlencode($wp_automatic_tw_secret);
			
		$concatedBase64 = base64_encode($concated);

		//curl get
		$x='error';
		$url='https://api.twitter.com/oauth2/token';
			
		curl_setopt($this->ch,CURLOPT_HTTPHEADER,array("Authorization:Basic $concatedBase64" , "Content-Type:application/x-www-form-urlencoded;charset=UTF-8."));
			
		//curl post
		curl_setopt($this->ch, CURLOPT_URL, $url);
		curl_setopt($this->ch, CURLOPT_POST, true);
		curl_setopt($this->ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
		$exec=curl_exec($this->ch);
		
		 
		$x=curl_error($this->ch);
			
		if(stristr($exec, 'bearer')){

			$token_json = json_decode($exec);
			$wp_automatic_tw_token = $token_json->access_token;

			if(trim($wp_automatic_tw_token) == ''){
				  echo '<br>Can not extract twitter token from twitter response:'.$exec;
			}else{
				update_option('wp_automatic_tw_token', $wp_automatic_tw_token);
			}


		}else{
			  echo '<br>Response from twitter does not contain the expected token:'.$exec;
			return false;
		}
			
	}

	//good we now have a valid twitter token
	  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 );
 
	//building the twitter url
	$url='https://api.twitter.com/1.1/search/tweets.json?tweet_mode=extended&q='.urlencode(trim($keyword));

	if(stristr($keyword, 'from:')){
		
		$userKey = str_replace('from:', '', $keyword);
		
		$url = 	$url='https://api.twitter.com/1.1/statuses/user_timeline.json?tweet_mode=extended&screen_name='.urlencode(trim($userKey));
		
	}
	
	//language
	if(in_array('OPT_TW_COUNTRY', $camp_opt)){
			
		$cg_tw_lang = $camp_general['cg_tw_lang'];
			
		if(trim($cg_tw_lang) != ''){
			$url.='&lang='.trim($cg_tw_lang);
		}
	}

		
	//pagination
	// get requrest url from the zero index
	if( $start == 1 ){

		//use first base query


	}else{

		//not first page get the bookmark
		$wp_tw_next_max_id = get_post_meta ($camp->camp_id,'wp_twitter_next_max_id'.md5($keyword),1);

		if(trim($wp_tw_next_max_id) == ''){
			  echo '<br>No new page max id';
				
		}else{
			  echo '<br>max_id:'.$wp_tw_next_max_id;
			$url = $url ."&max_id=".$wp_tw_next_max_id ;
		}

	}

	//report url
	 echo '<br>Twitter url:'.$url;
		
	//skip ssl
	curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, false);
	
	//authorize
	curl_setopt($this->ch,CURLOPT_HTTPHEADER,array("Authorization: Bearer $wp_automatic_tw_token"));
	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);

	
	//validating reply
	if(stristr($exec, 'search_metadata')   || (stristr($keyword, 'from:') && stristr($exec, '{')  ) ){
		//valid reply

		//handle pins
		$arr = json_decode($exec);
	 
		if(stristr($keyword, 'from:')){
			$items = $arr;			
		}else{
			$items = $arr->statuses;
		}
			
		//reverse
		if(in_array('OPT_PT_REVERSE', $camp_opt)){
			  echo '<br>Reversing order';
			$items = array_reverse($items);
		}
			
		  echo '<ol>';

		//loop pins
		$i = 0;
		$max_id = 99999999999999999999999999999999999999;
		
		 
		
		foreach ($items as $item){
			
			
			$itm = array();
			
			$i++;
		 
			//max_id
			if($item->id < $max_id)
			$max_id = $item->id;
			$max_id_str = $item->id_str;
			
			//report
			$itemUrl = 'https://twitter.com/'.$item->user->screen_name.'/statuses/'.$item->id_str ;
		    echo '<li>'.$itemUrl;

			//check if retweet
			if(in_array('OPT_TW_RT',$camp_opt)){
				if(isset($item->retweeted_status)){
					  echo '<-- Retweet skipping...';
					continue;
				}
			}
			
			//check if reply to
			if(in_array('OPT_TW_RE',$camp_opt)){
				if(isset($item->in_reply_to_user_id) && trim($item->in_reply_to_user_id) != '' ){
					if($item->in_reply_to_user_id != $item->user->id)
					  echo '<-- Reply skipping...';
					continue;
				}
			}
				
			//build item\
			
			//If RT, replace the status with the original tweet
			if(isset($item->retweeted_status)){
				$item = $item->retweeted_status;
			}
			
			// HASHTAG
			if(in_array('OPT_TW_TAG', $camp_opt)){
				if ( count($item->entities->hashtags) > 0 ){
					$hashtags = $item->entities->hashtags;
					$hashtagsArr = array();
					foreach ($hashtags as $hashtag){
						$hashtagsArr[] =  $hashtag->text;
					}
					
					$itm['item_hashtags'] = implode(',', $hashtagsArr);
					
				}
			}
			 
			$itm['item_id']  = $item->id;
			$itm['item_url'] = 'https://twitter.com/'.$item->user->screen_name.'/statuses/'.$item->id_str ;
			$itm['item_description'] = $item->full_text;
			
			
			//fix &amp;
			$itm['item_description'] = str_replace('&amp;', '&', $itm['item_description']);
			
			$itm['item_description'] =  $this->hyperlink_this( $itm['item_description']);
			 
			//original post link
			$original_post_url =  '';
			$original_post_url = isset($item->entities->urls[0]->expanded_url) ? $item->entities->urls[0]->expanded_url : '' ;
			
		 
			if(trim($original_post_url) == ''){
				$original_post_url = $itm['item_url'];
			}
			
			$itm['item_original_link'] = $original_post_url ; 
				
			//check images
			$itm['item_image'] ='';
			$all_imgs = '';
			if(isset($item->entities->media[0])){

				$media_img =$item->entities->media[0];

				if($media_img->type == 'photo'){
					//good let's append it
					$all_imgs.= '<img src="'.$media_img->media_url_https.'" /><br>' ;
					$itm['item_image'] = $media_img->media_url_https;
				}
					
			}
				
			$itm['item_retweet_count'] = $item->retweet_count;
			$itm['item_favorite_count'] = $item->favorite_count;
			$itm['item_author_id'] = $item->user->id_str;
			$itm['item_author_name'] = $item->user->name;
			$itm['item_author_screen_name'] = $item->user->screen_name;
			$itm['item_author_description'] = $item->user->description;
			$itm['item_author_url'] = $item->user->url;
				
			if(trim($itm['item_author_url']) == ''){
				$itm['item_author_url'] = 'https://twitter.com/intent/user?user_id='.$itm['item_author_id'];
			}
				
			$itm['item_author_profile_image'] = str_replace('normal', '200x200', $item->user->profile_image_url  )  ;
			$itm['item_author_profile_background_image'] = $item->user->profile_background_image_url;
			$itm['item_created_at'] = $item->created_at;

			// VIDEO
			$itm['item_video_url'] = '';
			if(isset($item->extended_entities)){
				if(isset($item->extended_entities->media)){
					if(isset($item->extended_entities->media[0]->type) && ($item->extended_entities->media[0]->type == 'video' || $item->extended_entities->media[0]->type == 'animated_gif'  )  ){
						$vidURL =  'https://twitter.com/'.$itm['item_author_screen_name'].'/status/'.$itm['item_id'];
						$itm['item_video_url'] = $vidURL;
					}
				}
			}
			
			// More images if exist
			if(isset($item->extended_entities)){
				if(isset($item->extended_entities->media)){
					foreach ($item->extended_entities->media as $media_item){
						if($media_item->type == 'photo'){
							if(! stristr($all_imgs, $media_item->media_url_https)){
								$all_imgs.= '<br><img src="' . $media_item->media_url_https . '"/>';
							}
						}
					}
				}
			}
			
			
			$itm['item_description'] = $all_imgs . '<br><br>' . $itm['item_description'];
			
			//expand URLs
			if(  in_array('OPT_TW_EXPAND', $camp_opt) ){
				
				if(isset($item->entities->urls)){
					
					foreach ($item->entities->urls as $single_url){
						
						$itm['item_description'] = str_replace( 'href="' . $single_url->url . '"' , 'href="'. $single_url->expanded_url . '"' , $itm['item_description'] );
						$itm['item_description'] = str_replace( '>' . $single_url->url . '<' , '>' .  $single_url->display_url . '<' , $itm['item_description'] );
						  
					}
					
				}
				
			}
			 
			$data = base64_encode(serialize ( $itm ));

			if( $this->is_execluded($camp->camp_id, $itm['item_url']) ){
				  echo '<-- Execluded';
				continue;
			}
			
			//check if old
			if( in_array('OPT_YT_DATE', $camp_opt)     ){
				if($this->is_link_old($camp->camp_id,  strtotime(  $item->created_at  ) )){
					  echo '<--old post execluding...';
					continue;
				}else{
					  echo ' <- created:'. $item->created_at ;
				}
			}

			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' ,'tw_{$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 .' Tweets found & cached';

		//check if nothing found so deactivate
		if($i == 0 || ($i==1 && $max_id == $wp_tw_next_max_id) ){
			
			echo '<br>No new tweets found ';
			echo '<br>Keyword has no more tweets 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_twitter_next_max_id'.md5($keyword));
		
		}else{

			//get max id
			if($max_id != 0){
				echo '<br>Updating max ID '.$max_id_str;
				update_post_meta($camp->camp_id, 'wp_twitter_next_max_id'.md5($keyword), $max_id_str ) ;
					
			}else{
					
				echo '<br>No pagination found deleting next page index';
				delete_post_meta($camp->camp_id, 'wp_twitter_next_max_id'.md5($keyword));
			
			}

		}

	}else{
			
		//no valid reply
		  echo '<br>No Valid reply for twitter search <br>'.$exec;
			
	}



}
	
//Twitter
function twitter_get_post($camp){
		
	//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;
				
			// getting links from the db for that keyword
			$query = "select * from {$this->wp_prefix}automatic_general where item_type=  'tw_{$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='tw_{$camp->camp_id}_$keyword' ";
				$this->db->query ( $query_delete );
					
				//get new links
				$this->twitter_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>Tweet ('. $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
				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;
 
						
						//remove links 
						$cleanContent = preg_replace('{<a .*?a>}' , '' , $temp['item_description'] );
						$cleanContent = $this->removeEmoji( $this->strip_urls( strip_tags($cleanContent) ));
						
						 
						
						if(function_exists('mb_substr')){
							$newTitle = ( mb_substr($cleanContent , 0,$cg_it_title_count));
						}else{
							$newTitle = ( substr( $cleanContent , 0,$cg_it_title_count));
						}
							
						// Clean RT's RT @GoogleStreetArt:
						if( stristr($newTitle, 'RT') && in_array('OPT_IT_TITLE_CLEAN', $camp_opt)){
							  echo '<br>Cleaning RT';
							$newTitle = preg_replace('{RT @.*?: }', '', $newTitle);
						}
							
						if(in_array('OPT_GENERATE_TW_DOT', $camp_opt)){
							$temp['item_title'] = ($newTitle);
						}else{
							$temp['item_title'] = ($newTitle).'...';
						}
						  echo '<br>Generated title:'.$temp['item_title'];
							
							
					}else{
							
						$temp['item_title'] = '(notitle)';
							
					}
						
				}
					
					
				//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_IT_CACHE', $camp_opt )) {
					 
					echo '<br>Cache disabled claring cache ...';
					$query = "delete from {$this->wp_prefix}automatic_general where item_type='tw_{$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_instagram_next_max_id'.md5($keyword));

				}
					
				

				//if card OPT_TW_CARDS
				if(in_array('OPT_TW_CARDS', $camp_opt) || stristr($camp->camp_post_content, 'item_embed') ){
					
					$item_id = $temp['item_id'];

					//getting card embed https://api.twitter.com/1/statuses/oembed.json?url=https://twitter.com/zzz/status/463440424141459456

					  echo '<br>Getting embed code from twitter...';

					//curl get
					$x='error';
					$url='https://api.twitter.com/1/statuses/oembed.json?url=https://twitter.com/zzz/status/463440424141459456';
					$url= str_replace('463440424141459456', $item_id, $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, 'widgets.js')){

						$json_embed = json_decode($exec);
							
						$embed_html = $json_embed->html;
							
						if(trim($embed_html) !=''){
							
							$temp['item_embed']=$embed_html;
							
							if(in_array('OPT_TW_CARDS', $camp_opt) ) {
								$temp['item_description']=$embed_html;
							}
							
							
						}else{
							  echo '<br>Can not extract embed html.';
						}
							
							
					}else{
						  echo '<br>Non expected embed reply.';
					}
						
				
				}
					
				//Auto embed video 
				$temp['item_video_embed'] = '';
				if(in_array('OPT_TW_VID_EMBED', $camp_opt) && ! stristr(($camp->camp_post_content), 'item_video_url') && trim($temp['item_video_url']) != ''  ){
					 
					$vidEmbed = '<blockquote class="twitter-video"><a href="'.$temp['item_video_url'].'"></a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
				';
					
					$temp['item_video_embed'] = $vidEmbed;
					
					$temp['item_description'] = $temp['item_description'] . $vidEmbed; 
				}
				
				//Fix date timezone
				$temp['item_created_at'] = get_date_from_gmt(  gmdate('Y-m-d H:i:s' ,strtotime($temp['item_created_at'] ) )   ) ;

				 
				
				//external image from shared links
				if(trim($temp['item_image']) == '' && trim($temp['item_original_link']) != '' && ! stristr($temp['item_original_link'], 'twitter.com') ){
					echo '<br>Extracting image from external link:'.$temp['item_original_link'];
					
					//curl get 
					$x='error';
					curl_setopt($this->ch, CURLOPT_HTTPGET, 1);
					curl_setopt($this->ch, CURLOPT_URL, trim( $temp['item_original_link'] ));
					
					if(stristr($temp['item_original_link'], 'bit.ly'))
					curl_setopt($this->ch,CURLOPT_ENCODING,'gzip, deflate, br');
					
					$exec=curl_exec($this->ch);
					$x=curl_error($this->ch);
					
					 
				 
					if( stristr($exec, 'twitter:image') || stristr($exec, 'og:image') ){
						preg_match('{twitter:image" content="(.*?)"}', $exec,$imgMatchs);
						
						 
						
						if( isset($imgMatchs[1]) && trim($imgMatchs[1]) == '') preg_match('{og:image" content="(.*?)"}', $exec,$imgMatchs);
						
						
						if( isset($imgMatchs[1]) &&  trim($imgMatchs[1]) != ''  ){
							$temp['item_image'] = $imgMatchs[1] ;
							$temp['item_description'] = '<img src="'.$imgMatchs[1] .'"/><br><br>'.$temp['item_description'];
						}
 						
					}
					
					 
					
				}
			 
				return $temp;
					
			} else {
					
				  echo '<br>No links found for this keyword';
			}
		} // if trim
	} // foreach keyword
		
		
		
}

}
Btooom! Chapter 74 - Btooom! Manga Online
Skip to content
Btooom! Manga Online
Read Btooom! Manga Online in High Quality

Primary Menu

  • Btooom!
  • Btooom! Chapter 1
  • Btooom! Chapter 121.2
  • Privacy Policy
  • Hot Mangas
    • The Worn and Torn Newbie
    • The World After the Fall

Breadcrumbs

  • Home
  • Comics
  • Btooom! Chapter 74

Btooom! Chapter 74

Btooom!

Btooom Manga

Read Btooom! Manga Online. Enjoy Reading Btooom characters

You Are Reading Btooom! Chapter 74 Manga Online


Tagged Btoom, Btooom, Btooom! manga, Himiko, Kiyoshi Taira, Kōsuke Kira, Masashi Miyamoto, Nobutaka Oda, Ryōta Sakamoto

Post navigation

Previous Previous: Btooom! Chapter 73
Next Next: Btooom! Chapter 75

Subsidiary Sidebar

About

Btooom! follows the adventures of Ryōta Sakamoto, an unemployed and isolated young man who is one of the world’s top players in the titular video game. After Ryōta is nominated to participate in the real-life version of the game, he becomes trapped inside it and meets his love interest Himiko, who was his in-game wife.

Latest Chapters

  • Btooom! Chapter 121.2
  • Btooom! Chapter 121
  • Btooom! Chapter 120.2
  • Btooom! Chapter 120
  • Btooom! Chapter 119
  • Btooom! Chapter 118
  • Btooom! Chapter 117
  • Btooom! Chapter 116
  • Btooom! Chapter 115
  • Btooom! Chapter 114
© 2022 Read Btooom Manga. | Privacy Policy | DMCA