Twitter timeline
Ik ben op dit moment bezig met een 'Social Home' voor mijn radiostation, ik wil hierin een blokje hebben die de tweets van de omroep toont, en de mentions. De tweets krijg ik voor elkaar maar de mentions niet.
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
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
$(document).ready(function() {
// json call to twitter to request tweets containing our keyword, in this case 'sheffield'
$.getJSON("http://search.twitter.com/search.json?q=bfmstudio&callback=?", function(data) {
// loop around the result
$.each(data.results, function() {
var text = this.text;
if(text.charAt(0) != '@') {
// construct tweet and add append to our #tweets div
var tweet = $("<div></div>").addClass('tweet').html(text);
// analyse our tweet text and turn urls into working links, hash tags into search links, and @replies into profile links.
tweet.html('<div class="content">' +
tweet.html()
.replace(/((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi,'<a href="$1">$1</a>')
.replace(/(^|\s)#(\w+)/g,'$1<a href="http://search.twitter.com/search?q=%23$2">#$2</a>')
.replace(/(^|\s)@(\w+)/g,'$1<a href="http://twitter.com/$2">@$2</a>')
+ '<br /><a href="http://www.twitter.com/' + this.from_user + '/status/' + this.id_str + '" class="view" target="_blank">' + $.timeSinceTweet(this.created_at) + '</a></div>'
)
.prepend('<a href="http://www.twitter.com/' + this.from_user + '" target="_blank"><img src="' + this.profile_image_url + '" width="48" height="48" /></a>')
.appendTo('#tweets')
.fadeIn();
}
});
});
});
(function($) {
$.timeSinceTweet = function(time) {
var date = new Date(time);
var diff = ((new Date()).getTime() - date.getTime()) / 1000;
var day_diff = Math.floor(diff / 86400);
if (day_diff < 0 || day_diff >= 31 || isNaN(day_diff)) {
return "Toon tweet";
}
if(day_diff == 0) {
if(diff < 60) {
return Math.ceil(diff) + " seconden geleden";
}
else if(diff < 120) {
return "1 minuut geleden";
}
else if(diff < 3600) {
return Math.floor( diff / 60 ) + " minutes ago";
}
else if(diff < 7200) {
return "1 uur geleden";
}
else if(diff < 86400) {
return Math.floor( diff / 3600 ) + " hours ago";
}
}
if(day_diff == 1) {
return "Gisteren";
}
else if(day_diff < 7) {
return day_diff + " dagen geleden";
}
else if(day_diff < 31) {
return Math.ceil( day_diff / 7 ) + " weken geleden";
}
else {
return "Toon Tweet";
}
}
})(jQuery);
// json call to twitter to request tweets containing our keyword, in this case 'sheffield'
$.getJSON("http://search.twitter.com/search.json?q=bfmstudio&callback=?", function(data) {
// loop around the result
$.each(data.results, function() {
var text = this.text;
if(text.charAt(0) != '@') {
// construct tweet and add append to our #tweets div
var tweet = $("<div></div>").addClass('tweet').html(text);
// analyse our tweet text and turn urls into working links, hash tags into search links, and @replies into profile links.
tweet.html('<div class="content">' +
tweet.html()
.replace(/((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi,'<a href="$1">$1</a>')
.replace(/(^|\s)#(\w+)/g,'$1<a href="http://search.twitter.com/search?q=%23$2">#$2</a>')
.replace(/(^|\s)@(\w+)/g,'$1<a href="http://twitter.com/$2">@$2</a>')
+ '<br /><a href="http://www.twitter.com/' + this.from_user + '/status/' + this.id_str + '" class="view" target="_blank">' + $.timeSinceTweet(this.created_at) + '</a></div>'
)
.prepend('<a href="http://www.twitter.com/' + this.from_user + '" target="_blank"><img src="' + this.profile_image_url + '" width="48" height="48" /></a>')
.appendTo('#tweets')
.fadeIn();
}
});
});
});
(function($) {
$.timeSinceTweet = function(time) {
var date = new Date(time);
var diff = ((new Date()).getTime() - date.getTime()) / 1000;
var day_diff = Math.floor(diff / 86400);
if (day_diff < 0 || day_diff >= 31 || isNaN(day_diff)) {
return "Toon tweet";
}
if(day_diff == 0) {
if(diff < 60) {
return Math.ceil(diff) + " seconden geleden";
}
else if(diff < 120) {
return "1 minuut geleden";
}
else if(diff < 3600) {
return Math.floor( diff / 60 ) + " minutes ago";
}
else if(diff < 7200) {
return "1 uur geleden";
}
else if(diff < 86400) {
return Math.floor( diff / 3600 ) + " hours ago";
}
}
if(day_diff == 1) {
return "Gisteren";
}
else if(day_diff < 7) {
return day_diff + " dagen geleden";
}
else if(day_diff < 31) {
return Math.ceil( day_diff / 7 ) + " weken geleden";
}
else {
return "Toon Tweet";
}
}
})(jQuery);
Ik heb zelf weinig verstand van Javascript dus ik hoop dat iemand kan helpen!?! :)
- Als je dit stuk vervangt, krijg je - van elke tweet - de mentions nog eens appart te zien.
Maar ik weet niet of je zo iets bedoelt.
- Lijn 8 in jouw code snap ik niet (ik heb ze uitgeschakeld). Waarom zou je de tweets die beginnen met @ anders behandelen dan de andere?
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
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
...
// loop around the result
$.each(data.results, function() {
var text = this.text;
if(1 || text.charAt(0) != '@') { // dit is mijn manier om deze lijn code te omzeilen, voorlopig
// we leze de mentions die verbonden zijn aan deze tweet
var mentions = this.entities.user_mentions;
var mentionsString = "";
for (var j=0; j<mentions.length; j++) {
mentionsString += ' <span>@' + mentions[j].name + '</span> '; // voel je vrij om dit anders te formatteren
}
// construct tweet and add append to our #tweets div
var tweet = $("<div></div>").addClass('tweet').html(text);
// analyse our tweet text and turn urls into working links, hash tags into search links, and @replies into profile links.
tweet.html('<div class="content">' +
tweet.html()
.replace(/((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi,'<a href="$1">$1</a>')
.replace(/(^|\s)#(\w+)/g,'$1<a href="http://search.twitter.com/search?q=%23$2">#$2</a>')
.replace(/(^|\s)@(\w+)/g,'$1<a href="http://twitter.com/$2">@$2</a>')
+ '<br /><a href="http://www.twitter.com/' + this.from_user + '/status/' + this.id_str + '" class="view" target="_blank">' + $.timeSinceTweet(this.created_at) + '</a>'
+'</div>'
+ mentionsString
)
.prepend('<a href="http://www.twitter.com/' + this.from_user + '" target="_blank"><img src="' + this.profile_image_url + '" width="48" height="48" /></a>')
.appendTo('#tweets')
.fadeIn();
}
});
...
// loop around the result
$.each(data.results, function() {
var text = this.text;
if(1 || text.charAt(0) != '@') { // dit is mijn manier om deze lijn code te omzeilen, voorlopig
// we leze de mentions die verbonden zijn aan deze tweet
var mentions = this.entities.user_mentions;
var mentionsString = "";
for (var j=0; j<mentions.length; j++) {
mentionsString += ' <span>@' + mentions[j].name + '</span> '; // voel je vrij om dit anders te formatteren
}
// construct tweet and add append to our #tweets div
var tweet = $("<div></div>").addClass('tweet').html(text);
// analyse our tweet text and turn urls into working links, hash tags into search links, and @replies into profile links.
tweet.html('<div class="content">' +
tweet.html()
.replace(/((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi,'<a href="$1">$1</a>')
.replace(/(^|\s)#(\w+)/g,'$1<a href="http://search.twitter.com/search?q=%23$2">#$2</a>')
.replace(/(^|\s)@(\w+)/g,'$1<a href="http://twitter.com/$2">@$2</a>')
+ '<br /><a href="http://www.twitter.com/' + this.from_user + '/status/' + this.id_str + '" class="view" target="_blank">' + $.timeSinceTweet(this.created_at) + '</a>'
+'</div>'
+ mentionsString
)
.prepend('<a href="http://www.twitter.com/' + this.from_user + '" target="_blank"><img src="' + this.profile_image_url + '" width="48" height="48" /></a>')
.appendTo('#tweets')
.fadeIn();
}
});
...
Ik wil de mentions van een bepaald account zien, dus niet de mentions per tweet omdat we luisteraars iets te twitteren met @BFMSTUDIO
Het is trouwens een script van internet, omdat ik niet thuis ben in javascript.
Dat is leuk voor 1 tweet (of meerdere denk ik) van een bepaald account te laten zien, alleen ik wil de mentions van een account laten zien! Of is dat wel mogelijk met dat script?