Solved

How To Display Twitter Profile Picture On My Website

Posted on 2009-07-07
6
325 Views
Last Modified: 2012-05-07
Hi Everyone,

I've found interesting code at @
http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/Q_24524469.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

0
Comment
Question by:informabiz
  • 4
6 Comments
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 24805153
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

0
 

Author Comment

by:informabiz
ID: 24915606
Hi Ray,

Is there any sets of rules for names like user_id.jpg or images are named randomly ?
0
 
LVL 109

Accepted Solution

by:
Ray Paseur earned 500 total points
ID: 24915876
It can't be completely random, but it may not be very predictable.  Here is Andy Murray's "large" photo link
http://s3.amazonaws.com/twitter_production/profile_images/55512065/72990748.jpg

It looks like this much is consistent:
http://s3.amazonaws.com/twitter_production/profile_images/

After that, the file names may be something that is an aritfact of the image upload - probably carried in the Twitter data base.
0
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 25109166
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).
0
 
LVL 109

Expert Comment

by:Ray Paseur
ID: 25109302
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!  ;-(
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Author Note: Since this E-E article was originally written, years ago, formal testing has come into common use in the world of PHP.  PHPUnit (http://en.wikipedia.org/wiki/PHPUnit) and similar technologies have enjoyed wide adoption, making it possib…
Part of the Global Positioning System A geocode (https://developers.google.com/maps/documentation/geocoding/) is the major subset of a GPS coordinate (http://en.wikipedia.org/wiki/Global_Positioning_System), the other parts being the altitude and t…
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

825 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question