Link to home
Start Free TrialLog in
Avatar of informabiz
informabiz

asked on

How To Display Twitter Profile Picture On My Website

Hi Everyone,

I've found interesting code at @
https://www.experts-exchange.com/questions/24524469/How-can-I-show-twitter-on-my-website-from-an-RSS-feed.html?sfQueryTermInfo=1+twitter

I can display the timeline but i can not display the image (profile image of selected person)

Can someone help?
<?php
$name = 'andy_murray';
if( !file_exists("twitter$name.cache.txt") || filemtime("twitter$name.cache.txt") < time() - 300 ) {
    file_put_contents("twitter$name.cache.txt", file_get_contents("http://twitter.com/statuses/user_timeline/$name.rss"));
}
$items = simplexml_load_string( file_get_contents("http://twitter.com/statuses/user_timeline/$name.rss") )->xpath("/rss/channel/item/title[not(starts-with(.,\"$name: @\"))]/..");
echo '<?xml version="1.0" encoding="UTF-8"?>';
?>
    <h1><a typeof="foaf:OnlineAccount" rel="foaf:accountServiceHomepage" resource="http://www.twitter.com/" property="foaf:accountName" href="http://twitter.com/<?php echo 
 
$name; ?>/">
<?php echo $name; ?></a></h1>
<div id="myTwitter">
<?php
	foreach( $items as $tweet) {
		$diff = Timesince(strtotime($tweet->pubDate));
		$link = $tweet->link;
		$post = preg_replace( '|([^\s])\s+([^\s]+)\s*$|', '$1&nbsp;$2',
						htmlentities(str_replace(array('&lt;','&gt;'),array('<','>'),
						substr($tweet->description, strlen("$name: "))),ENT_QUOTES,'UTF-8'));
		echo "<span style=\"display:none;\">"; 		
		echo date("d/m/Y H:s",strtotime($tweet->pubDate));
		echo "<a href=$link>$post</a>";
		echo "Posted: ".$diff;
		echo "</span>";
	}
?>
</div>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function(){$("span").hide();(f=function(){$("span:hidden:first").fadeIn(600,f);})();});
//]]>
</script>
 
<?php
function Timesince($original) {  
     // array of time period chunks  
     $chunks = array(  
     array(60 * 60 * 24 * 365 , 'year'),  
     array(60 * 60 * 24 * 30 , 'month'),  
     array(60 * 60 * 24 * 7, 'week'),  
     array(60 * 60 * 24 , 'day'),  
     array(60 * 60 , 'hour'),  
     array(60 , 'min'),  
     array(1 , 'sec'),  
     );  
   
     $today = time(); /* Current unix time  */  
     $since = $today - $original;  
   
     // $j saves performing the count function each time around the loop  
     for ($i = 0, $j = count($chunks); $i < $j; $i++) {  
   
     $seconds = $chunks[$i][0];  
     $name = $chunks[$i][1];  
   
     // finding the biggest chunk (if the chunk fits, break)  
     if (($count = floor($since / $seconds)) != 0) {  
         break;  
     }  
     }  
   
     $print = ($count == 1) ? '1 '.$name : "$count {$name}s";  
   
     if ($i + 1 < $j) {  
     // now getting the second item  
     $seconds2 = $chunks[$i + 1][0];  
     $name2 = $chunks[$i + 1][1];  
   
     // add second item if its greater than 0  
     if (($count2 = floor(($since - ($seconds * $count)) / $seconds2)) != 0) {  
         $print .= ($count2 == 1) ? ', 1 '.$name2 : " $count2 {$name2}s";  
     }  
     }  
     return $print;  
 }  
?>

Open in new window

Avatar of Ray Paseur
Ray Paseur
Flag of United States of America image

On my twitter account, these are the images of me.

http://s3.amazonaws.com/twitter_production/profile_images/299888078/Ray_Paseur_normal.png
http://s3.amazonaws.com/twitter_production/profile_images/299888078/Ray_Paseur_bigger.png
http://s3.amazonaws.com/twitter_production/profile_images/299888078/Ray_Paseur.png

When I use this link:
http://s3.amazonaws.com/twitter_production/profile_images/299888078/andy_murray.png
... I get an XML file that sends an error message.  See code snippet.

So it would appear that you need to extract the Twitter name as well as the subdirectory key from the /profile_images/ directory.

Sorry if that is not much help, but at least it helps establish a pattern,  Best, ~Ray
<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Key>profile_images/299888078/andy_murray.png</Key>
<RequestId>607621F47FD061F2</RequestId>

<HostId>
qmkz7cY8EOZOnediXfic7dJAL3spfJyQyjfc7o1C0pn8QkfoNzdtOSkr5IPxLAu9
</HostId>
</Error>

Open in new window

Avatar of informabiz
informabiz

ASKER

Hi Ray,

Is there any sets of rules for names like user_id.jpg or images are named randomly ?
ASKER CERTIFIED SOLUTION
Avatar of Ray Paseur
Ray Paseur
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Not sure what to do about this.  I believe our Asker is looking for information that Twitter may not want to make public, so there may be no good way to answer the Q.  Twitter has an API (and I would post a link here, but Twitter is down at the moment - a not uncommon situation).
Worth a look http://status.twitter.com/

I recently developed some automated Twitter interface code.  I am now in the process of revising and strengthening the error recover components!  ;-(