Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

How To Display Twitter Profile Picture On My Website

Posted on 2009-07-07
6
Medium Priority
?
332 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
6 Comments
 
LVL 111

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 111

Accepted Solution

by:
Ray Paseur earned 1500 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 111

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 111

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

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

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

Many times as a report developer I've been asked to display normalized data such as three rows with values Jack, Joe, and Bob as a single comma-separated string such as 'Jack, Joe, Bob', and vice versa.  Here's how to do it. 
This article discusses four methods for overlaying images in a container on a web page
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 …
Suggested Courses

604 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