Twitter和jQuery,呈现Twitter链接。
|
我正在使用jquery ajax从twitter api中提取信息,我敢肯定有一种简单的方法,但是我找不到如何获取“ tweet”来呈现任何已发布的链接的方法。显示为链接。目前只有文字。
$.ajax({
type : \'GET\',
dataType : \'jsonp\',
url : \'http://search.twitter.com/search.json?q=nettuts&rpp=2\',
success : function(tweets) {
var twitter = $.map(tweets.results, function(obj, index) {
return {
username : obj.from_user,
tweet : obj.text,
imgSource : obj.profile_image_url,
geo : obj.geo
};
});
更新:
以下功能(插件)可以正常工作。
(function($) {
$.socialFader = function(options) {
var settings = {
tweetHolder : null,
tweetCount : 100,
fadeSpeed : 500,
tweetName: \'jquery\'
};
if (options) {
$.extend(settings, options);
};
var URL = \"http://search.twitter.com/search.json?q=\"+settings.tweetName+\"&rpp=\" + settings.tweetCount + \"&callback=?\";
function relative_time(time_value) {
var values = time_value.split(\" \");
time_value = values[1] + \" \" + values[2] + \", \" + values[5] + \" \" + values[3];
var parsed_date = Date.parse(time_value);
var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
delta = delta + (relative_to.getTimezoneOffset() * 60);
var r = \'\';
if (delta < 60) {
r = \'a minute ago\';
} else if(delta < 120) {
r = \'couple of minutes ago\';
} else if(delta < (45*60)) {
r = (parseInt(delta / 60)).toString() + \' minutes ago\';
} else if(delta < (90*60)) {
r = \'an hour ago\';
} else if(delta < (24*60*60)) {
r = \'\' + (parseInt(delta / 3600)).toString() + \' hours ago\';
} else if(delta < (48*60*60)) {
r = \'1 day ago\';
} else {
r = (parseInt(delta / 86400)).toString() + \' days ago\';
}
return r;
};
String.prototype.hashify = function() {
return this.replace(/#([A-Za-z0-9\\/\\.]*)/g, function(m) {
return \'<a target=\"_new\" href=\"http://twitter.com/search?q=\' + m.replace(\'#\',\'\') + \'\">\' + m + \"</a>\";
});
};
String.prototype.linkify = function(){
return this.replace(/[A-Za-z]+:\\/\\/[A-Za-z0-9-_]+\\.[A-Za-z0-9-_:%&\\?\\/.=]+/, function(m) {
return m.link(m);
});
};
String.prototype.atify = function() {
return this.replace(/@[\\w]+/g, function(m) {
return \'<a href=\"http://www.twitter.com/\' + m.replace(\'@\',\'\') + \'\">\' + m + \"</a>\";
});
};
$.getJSON(URL, function(JSON) {
$.each(JSON.results, function(i, tweet) {
var profilePicture = tweet.profile_image_url;
var userLink = tweet.from_user;
var text = tweet.text;
text = text.linkify().atify().hashify();
var createdAt = new Date(tweet.created_at);
var myTweet = \'<a href=\"http://www.twitter.com/\' + userLink + \'\" title=\"\' + userLink + \'\">\' + userLink + \'</a> \';
myTweet += text;
$(settings.tweetHolder).append(\'<li class=\"cycles\">\' + myTweet + \'</li>\');
});
var elements = $(settings.tweetHolder).children();
var timeOutStart = 5000;
function fader(elementId) {
setTimeout(function() {
$(elements[elementId]).fadeOut(settings.fadeSpeed, function() {
$(elements[elementId + 1]).fadeIn(settings.fadeSpeed);
});
}, timeOutStart * (elementId));
};
for (var j = 0; j < elements.length; j++) {
fader(j);
};
});
};
})(jQuery);
在我的准备声明中:
$.socialFader({ tweetHolder:\"#twitter\", tweetName:\"nettuts\", tweetCount:2 });
没有找到相关结果
已邀请:
4 个回复
募磷
陷牡彭拈峰
厘恼轨
您可以使用以上内容在tweet中定位特定实体(这些实体出现在indexs属性所指示的字符串位置之间),并进行适当的转换。 如果您喜欢自己解析实体,则可以使用以下(.NET Framework)正则表达式: 链接匹配模式
提及比赛模式
标签匹配模式
Twitter还提供了一个开放源代码库,可帮助捕获特定于Twitter的实体,例如链接,提及和主题标签。此java文件包含定义Twitter使用的正则表达式的代码,而此yml文件包含测试字符串和行使Twitter库中正则表达式的许多单元测试的预期结果。 您如何处理推文取决于您,但是我将处理原始推文的副本,并首先拉动所有链接,并用空格替换副本中的链接(以免修改字符串长度。)字符串中匹配项的末尾位置以及匹配的内容。然后我先提及,再加上主题标签-再次在推文副本中将其替换为空格。 这种方法可确保我在推文中的任何链接中都不会发现对提及和主题标签的误判。
柑恫祟