Skip to content

Instantly share code, notes, and snippets.

@superbrothers
Created October 2, 2010 12:55
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save superbrothers/607622 to your computer and use it in GitHub Desktop.
Save superbrothers/607622 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name Twitter with Favotter
// @namespace http://gist.github.com/607622
// @include http://twitter.com/*/status/*
// ==/UserScript==
(function () {
// Favotter URL
var favotter = "http://favotter.net/";
// CSS
GM_addStyle(<><![CDATA[
div.compornent {padding-bottom:5px;}
div.compornent h3 {margin:0px 0px 5px 0px !important;color:#999999;font-size:11px;border-bottom:1px solid #E6E6E6;}
div.compornent img.fav_icon{width:24px;height:24px;padding-right:3px;}
div.compornent .inner_favorites{display:none;}
]]></>);
var appendUserFavorite = function (evt) {
var node = evt.target;
var status_id = node.getElementsByClassName('entry-date')[0].href.match(/^http:\/\/twitter.com\/.+?\/status\/(\d+)$/)[1];
GM_xmlhttpRequest({
method: 'GET',
url: favotter + "status.php?id=" + status_id,
onload: function (response) {
if (response.status !== 200) {
return;
}
var match_result = response.responseText.match(/<span class="favotters">.+?(<a.+)<\/span>/);
if (match_result === null) {
return;
}
var fav_users = match_result[1].replace(/\/user\/(\w+)/g, favotter + "user/$1").match(/<a .+?<\/a>/g);
var fav_users_len = fav_users.length;
var compornent = document.createElement("div");
compornent.setAttribute("class", "compornent");
// header
compornent.innerHTML += '<h3><a href="' + favotter + 'status.php?id=' + status_id + '">' +
fav_users_len + '</a> favorite' + (fav_users_len !== 1 ? 's' : '') +
' from <a href="' + favotter + '">Favotter</a></h3>';
// ふぁぼ数が16以上ならまとめる
if (fav_users_len > 15) {
var inner_favorites = document.createElement("span");
inner_favorites.setAttribute("class", "inner_favorites");
compornent.innerHTML += fav_users.slice(0, 15).join('');
inner_favorites.innerHTML += fav_users.slice(15).join('');
var view_all = document.createElement("span");
view_all.style.cursor = "pointer";
view_all.innerHTML = "view all";
view_all.addEventListener("click", function() {
inner_favorites.style.display = "inline";
this.style.display= "none";
}, false);
compornent.appendChild(inner_favorites);
compornent.appendChild(view_all);
} else {
compornent.innerHTML += fav_users.join('');
}
node.getElementById("permalink").insertBefore(compornent, node.getElementsByClassName("user-info")[0]);
}
});
};
window.addEventListener("load", appendUserFavorite, false);
// Autopagerize対応 -> できなくなりました...
//document.getElementById('content').addEventListener('AutoPagerize_DOMNodeInserted', appendUserFavorite, true);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment