Twitter в блоге 2.0

Итак, это обновлённая версия скрипта Твиттера для блога, в работе вы его можете увидеть справа под моим аватаром.

Список изменений таков:
1. Вызов после domready (не тормозит загрузку страницы)
2. Локализация надписей
3. Новая разметка ответа.

Начнём по порядку, вызов у функции такой:
$(document).ready(function() {

$.getJSON('http://twitter.com/statuses/user_timeline/username.json?callback=?',{count: 1},function(data){twitterForBlog(data,'id')});

})

username нужно заменить на ваш никнейм в твиттере
id нужно заменить на id блока (просто id без значка «#») в который будет вставлен ответ.

Для правильной работы заготовка должна быть такой:
<div id="twi">
<a title="Я в твиттере" href="http://twitter.com/username/">username</a>:
<span>Последнее сообщение из твиттера скоро будет тут</span>
</div>

Не забудьте заменить username на свой никнейм ;)

После работы скрипта всё это будет выглядеть так:
<div id="twi">
<a title="Я в твиттере" href="http://twitter.com/username/">username</a>:
<span>@<a href="http://www.twitter.com/username2">username2</a> Это мой реплай тебе! ;)</span>
<div class="deltaLnk"><a href="http://twitter.com/username/statuses/123123">примерно 2 часа назад</a></div>
</div>

Я думаю, стилевое оформление не должно вызвать проблем, ведь теперь вёрстка очень гибкая и можно делать совершенно невероятные кульбиты с ней.

Сам собственно скрипт:
function twitterForBlog(b,c){var d=[];for(var i=0;i<b.length;i++){var e=b[i].user.screen_name;var f=b[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g,function(a){return'<a href="'+a+'">'+a+'</a>'}).replace(/\B@([_a-z0-9]+)/ig,function(a){return a.charAt(0)+'<a href="http://www.twitter.com/'+a.substring(1)+'">'+a.substring(1)+'</a>'});d.push('<a href="http://twitter.com/'+e+'/" title="Я в твиттере">'+e+'</a>: <span>'+f+'</span> <div class="deltaLnk"><a href="http://twitter.com/'+e+'/statuses/'+b[i].id+'">'+relative_time(b[i].created_at)+'</a></div>')}document.getElementById(c).innerHTML=d.join('')}function cntRus(d,n){if(!d){return n[2]}else if(d%1){return n[1]}else if(/(11|12|13|14|5|6|7|8|9|0)$/.test(d)){return n[2]}else if(/1$/.test(d)){return n[0]}else if(/(2|3|4)$/.test(d)){return n[1]}}function relative_time(a){var b=a.split(" ");a=b[1]+" "+b[2]+", "+b[5]+" "+b[3];var c=Date.parse(a);var d=(arguments.length>1)?arguments[1]:new Date();var e=parseInt((d.getTime()-c)/1000);e=e+(d.getTimezoneOffset()*60);if(e<60){return'меньше минуты назад'}else if(e<120){return'около минуты назад'}else if(e<(60*60)){return(parseInt(e/60)).toString()+cntRus((parseInt(e/60)),[' минуту',' минуты',' минут'])+' назад'}else if(e<(120*60)){return'около часа назад'}else if(e<(24*60*60)){return'примерно '+(parseInt(e/3600)).toString()+cntRus((parseInt(e/3660)),[' час',' часа',' часов'])+' назад'}else if(e<(48*60*60)){return'день назад'}else{return(parseInt(e/86400)).toString()+cntRus((parseInt(e/86400)),[' день',' дня',' дней'])+' назад'}}

Хочу также сказать спасибо Aleko за его скрипт правильных числительных, который мной благополучно использовался для локализации.

UPD: Новая версия скрипта (3.0)

05.01.2010
Скрипты
Добавлено 5 комментариев. Написать свой.
Спасибо. После реДизайна добавлю.
Классно!
Не получилось :(
Спасибо, пользуюсь.
Ссылки созданные скриптом не индексируются. А то что в коде изначально можно сделать как показано вами.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]