Twitter Api # ophalen
Ik was nieuwsgierig hoe je nou eigenlijk van Twitter berichten kunt ophalen waar bepaalde woorden in voor komen. Stel ik wil de laatste 20 tweets met PHPHulp erin, hoe doe ik dat?
Ik gebruik de Twitter API al om mijn nieuwsberichten semi-automatisch op Twitter te plaatsen, dus zou handig zijn als ik die zelfde API kan gebruiken om berichten op te halen.
En is het ook mogelijk om meerdere woorden tegelijk op te halen? Bijv alle berichten met phphulp en phpscripts?
Google helpt niet echt, maar waarschijnlijk zit ik verkeerd te zoeken.
om te zien wat het script doet: klik
code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*
* TwitStream - A jQuery plugin for the Twitter Search API
* Version 1.2
* http://kjc-designs.com/TwitStream
* Original by:
* Copyright (c) 2009 Noah Cooper
* Licensed under the GNU General Public License <http://www.gnu.org/licenses/>
*/
String.prototype.linkify=function(){
return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&;\?\/.=]+/g,function(m){
return m.link(m);
});
};
String.prototype.linkuser=function(){
return this.replace(/[@]+[A-Za-z0-9-_]+/g,function(u){
return u.link("http://twitter.com/"+u.replace("@",""));
});
};
String.prototype.linktag=function(){
return this.replace(/[]+[A-Za-z0-9-_]+/,function(t){
return t;
});
};
var showTweetLinks='none';
function fetch_tweets(elem){
elem=$(elem);
keyword=escape(elem.attr('title'));
num=elem.attr('class').split(' ').slice(-1);
var url="http://search.twitter.com/search.json?q="+keyword+"&rpp="+num+"&callback=?";
$.getJSON(url,function(json){
$(json.results).each(function(){
var tTime=new Date(Date.parse(this.created_at));
var cTime=new Date();
var sinceMin=Math.round((cTime-tTime)/60000);
if(sinceMin==0){
var sinceSec=Math.round((cTime-tTime)/1000);
if(sinceSec<10)
var since='less than 10 seconds ago';
else if(sinceSec<20)
var since='less than 20 seconds ago';
else
var since='half a minute ago';
}
else if(sinceMin==1){
var sinceSec=Math.round((cTime-tTime)/1000);
if(sinceSec==30)
var since='half a minute ago';
else if(sinceSec<60)
var since='less than a minute ago';
else
var since='1 minute ago';
}
else if(sinceMin<45)
var since=sinceMin+' minutes ago';
else if(sinceMin>44&&sinceMin<60)
var since='about 1 hour ago';
else if(sinceMin<1440){
var sinceHr=Math.round(sinceMin/60);
if(sinceHr==1)
var since='about 1 hour ago';
else
var since='about '+sinceHr+' hours ago';
}
else if(sinceMin>1439&&sinceMin<2880)
var since='1 day ago';
else{
var sinceDay=Math.round(sinceMin/1440);
var since=sinceDay+' days ago';
}
var tweetBy='<a class="tweet-user" target="_blank" href="http://twitter.com/'+this.from_user+'">@'+this.from_user+'</a> ';
if(showTweetLinks.indexOf('reply')!=-1)
tweetBy=tweetBy+' · <a class="tweet-reply" target="_blank" href="http://twitter.com/?status=@'+this.from_user+' &in_reply_to_status_id='+this.id+'&in_reply_to='+this.from_user+'">Reply</a>';
if(showTweetLinks.indexOf('view')!=-1)
tweetBy=tweetBy+' · <a class="tweet-view" target="_blank" href="http://twitter.com/'+this.from_user+'/statuses/'+this.id+'">View Tweet</a>';
if(showTweetLinks.indexOf('rt')!=-1)
tweetBy=tweetBy+' · <a class="tweet-rt" target="_blank" href="http://twitter.com/?status=RT @'+this.from_user+' '+escape(this.text.replace(/"/g,'"'))+'&in_reply_to_status_id='+this.id+'&in_reply_to='+this.from_user+'">RT</a>';
var tweet='<div class="tweet"><div class="tweet-left"><a target="_blank" href="http://twitter.com/'+this.from_user+'"><img alt="'+this.from_user+' on Twitter" src="'+this.profile_image_url+'" /></a> '+tweetBy+'<div class="bottom">'+since+'</div></div><div class="tweet-right"><p class="text">'+this.text.linkify().linkuser().linktag().replace(/<a/g,'<a target="_blank"')+'</div><br /></p><br style="clear: both;" /></div>';
elem.append(tweet);
});
});
return(false);
}
$(function(){
showTweetLinks=showTweetLinks.toLowerCase();
if(showTweetLinks.indexOf('all')!=-1)
showTweetLinks='reply,view,rt';
$('.twitterwall').each(function(){
fetch_tweets(this);
});
});
* TwitStream - A jQuery plugin for the Twitter Search API
* Version 1.2
* http://kjc-designs.com/TwitStream
* Original by:
* Copyright (c) 2009 Noah Cooper
* Licensed under the GNU General Public License <http://www.gnu.org/licenses/>
*/
String.prototype.linkify=function(){
return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&;\?\/.=]+/g,function(m){
return m.link(m);
});
};
String.prototype.linkuser=function(){
return this.replace(/[@]+[A-Za-z0-9-_]+/g,function(u){
return u.link("http://twitter.com/"+u.replace("@",""));
});
};
String.prototype.linktag=function(){
return this.replace(/[]+[A-Za-z0-9-_]+/,function(t){
return t;
});
};
var showTweetLinks='none';
function fetch_tweets(elem){
elem=$(elem);
keyword=escape(elem.attr('title'));
num=elem.attr('class').split(' ').slice(-1);
var url="http://search.twitter.com/search.json?q="+keyword+"&rpp="+num+"&callback=?";
$.getJSON(url,function(json){
$(json.results).each(function(){
var tTime=new Date(Date.parse(this.created_at));
var cTime=new Date();
var sinceMin=Math.round((cTime-tTime)/60000);
if(sinceMin==0){
var sinceSec=Math.round((cTime-tTime)/1000);
if(sinceSec<10)
var since='less than 10 seconds ago';
else if(sinceSec<20)
var since='less than 20 seconds ago';
else
var since='half a minute ago';
}
else if(sinceMin==1){
var sinceSec=Math.round((cTime-tTime)/1000);
if(sinceSec==30)
var since='half a minute ago';
else if(sinceSec<60)
var since='less than a minute ago';
else
var since='1 minute ago';
}
else if(sinceMin<45)
var since=sinceMin+' minutes ago';
else if(sinceMin>44&&sinceMin<60)
var since='about 1 hour ago';
else if(sinceMin<1440){
var sinceHr=Math.round(sinceMin/60);
if(sinceHr==1)
var since='about 1 hour ago';
else
var since='about '+sinceHr+' hours ago';
}
else if(sinceMin>1439&&sinceMin<2880)
var since='1 day ago';
else{
var sinceDay=Math.round(sinceMin/1440);
var since=sinceDay+' days ago';
}
var tweetBy='<a class="tweet-user" target="_blank" href="http://twitter.com/'+this.from_user+'">@'+this.from_user+'</a> ';
if(showTweetLinks.indexOf('reply')!=-1)
tweetBy=tweetBy+' · <a class="tweet-reply" target="_blank" href="http://twitter.com/?status=@'+this.from_user+' &in_reply_to_status_id='+this.id+'&in_reply_to='+this.from_user+'">Reply</a>';
if(showTweetLinks.indexOf('view')!=-1)
tweetBy=tweetBy+' · <a class="tweet-view" target="_blank" href="http://twitter.com/'+this.from_user+'/statuses/'+this.id+'">View Tweet</a>';
if(showTweetLinks.indexOf('rt')!=-1)
tweetBy=tweetBy+' · <a class="tweet-rt" target="_blank" href="http://twitter.com/?status=RT @'+this.from_user+' '+escape(this.text.replace(/"/g,'"'))+'&in_reply_to_status_id='+this.id+'&in_reply_to='+this.from_user+'">RT</a>';
var tweet='<div class="tweet"><div class="tweet-left"><a target="_blank" href="http://twitter.com/'+this.from_user+'"><img alt="'+this.from_user+' on Twitter" src="'+this.profile_image_url+'" /></a> '+tweetBy+'<div class="bottom">'+since+'</div></div><div class="tweet-right"><p class="text">'+this.text.linkify().linkuser().linktag().replace(/<a/g,'<a target="_blank"')+'</div><br /></p><br style="clear: both;" /></div>';
elem.append(tweet);
});
});
return(false);
}
$(function(){
showTweetLinks=showTweetLinks.toLowerCase();
if(showTweetLinks.indexOf('all')!=-1)
showTweetLinks='reply,view,rt';
$('.twitterwall').each(function(){
fetch_tweets(this);
});
});
@turmin, je gebruikt de twitter Api? waarom dan niet die documentatie er bij pakken? http://dev.twitter.com/doc/get/search
@Oetzie dit script had ik een keer gevonden en dat deed toen wat het moest doen ;P zal het binnenkort wel proberen om te zetten naar API met php en json maar de TS vroeg om iets waarmee je de search van de twitter kon ophalen, en dat kan hier wel mee ;)
Oetzie cookie op 07/05/2011 20:50:28:
@Gerhard, waarom stomme javascript? Mensen die geen javascript ondersteunen zien dan jouwn tweets niet. Haal ze gewoon op met PHP en dan een animatie effect ofzo maar dan zien mensen zonder Javascript tenminste de tweets...
@turmin, je gebruikt de twitter Api? waarom dan niet die documentatie er bij pakken? http://dev.twitter.com/doc/get/search
@turmin, je gebruikt de twitter Api? waarom dan niet die documentatie er bij pakken? http://dev.twitter.com/doc/get/search
@Gerhard: bedankt voor het delen van je script. Lijkt me inderdaad beter het via de API te doen.
@Oetzie: Werkt deze documentatie niet alleen met tweets op jou account? Ik wil graag alle tweets ophalen met een bepaald woord erin en het liefst op meerdere woorden. Ook was ik deze documentatie nog niet tegen gekomen bij mijn zoekresultaten. Ik zal even kijken of het hier mee lukt.