There are 5 previous versions of this script.
// ==UserScript==
// @name mixi 6 years diary
// @namespace http://aeg.jugem.jp
// @include http://mixi.jp/
// @include http://mixi.jp/view_diary.pl?id=*
// @include http://mixi.jp/home.pl*
// ==/UserScript==
// Version 1.2
(function() {
var t = new Array(2);
var pastYears = 6;
var getDivElementsByClass = function(searchClass) {
var classElements = new Array();
var allElements = document.getElementsByTagName("div");
for (i = 0, j = 0; i < allElements.length; i++) {
if (allElements[i].className == searchClass) {
classElements[j] = allElements[i];
j++;
}
}
return classElements;
}
function update_diary_list(id,year,month,day) {
function on_list_diary(response) {
var s ="";
var pattern = new RegExp("<dt>(<input name=\"diary_id\"[^>]+>)?<a href=\"(view_diary\\.pl\\?id=\\d+&owner_id=\\d+)[^>]*>([^<]*)<\/a>", "ig");
var m;
while (m = pattern.exec(response.responseText)) {
s += '<li><a href="'+ m[2] + '">' + m[3] + '</a>\n';
}
if ( s != "" ) { s = "<ul>\n" + s + "</ul>\n"; }
t[year].innerHTML = s;
return ;
}
GM_xmlhttpRequest({method: "GET", url: "http://mixi.jp/list_diary.pl?id="+id+"&year="+year+"&month="+month+"&day="+day, onload: on_list_diary});
return;
}
function update_diary_list_home(id,year,month,day) {
var cache_key = "cache" + (n_year - year);
var cache_str_key = cache_key + "_str";
var today = year + "/" + month + "/" + day;
var cache_date = GM_getValue(cache_key);
function on_list_diary(response) {
var s ="";
var pattern = new RegExp("<dt>(<input name=\"diary_id\"[^>]+>)?<a href=\"(view_diary\\.pl\\?id=\\d+&owner_id=\\d+)[^>]*>([^<]*)<\/a>", "ig");
var m;
while (m = pattern.exec(response.responseText)) {
s += '<li><a href="'+ m[2] + '">' + m[3] + '</a>\n';
}
if ( s != "" ) { s = "<ul>\n" + s + "</ul>\n"; }
t[year].innerHTML=s;
GM_setValue(cache_key ,today);
GM_setValue(cache_str_key, s);
return ;
}
if (cache_date == undefined ) {
GM_xmlhttpRequest({method: "GET", url: "http://mixi.jp/list_diary.pl?id="+id+"&year="+year+"&month="+month+"&day="+day, onload: on_list_diary});
} else if ( cache_date == today) {
var s = GM_getValue(cache_str_key);
if (s != undefined) {
t[year].innerHTML = s;
} else {
GM_xmlhttpRequest({method: "GET", url: "http://mixi.jp/list_diary.pl?id="+id+"&year="+year+"&month="+month+"&day="+day, onload: on_list_diary});
}
} else {
GM_xmlhttpRequest({method: "GET", url: "http://mixi.jp/list_diary.pl?id="+id+"&year="+year+"&month="+month+"&day="+day, onload: on_list_diary});
}
return;
}
function ViewDiary () {
var oid="";
if(url.match(/view_diary.pl\?id=.*\&owner_id=(\d+)/)) {
oid = RegExp.$1;
}
var div = getDivElementsByClass('listDiaryTitle')[0];
var date = div.getElementsByTagName('dd')[0].firstChild.nodeValue;
var m = date.match(/(\d+)\u5E74\s*(\d+)\u6708\s*(\d+)\u65e5/);
var year = RegExp.$1;
var month = RegExp.$2;
var day = RegExp.$3;
var div = getDivElementsByClass('viewDiaryBox')[0];
var diary_box = document.createElement("div");
var str ="";
diary_box.className="diaryBox";
str ='<table><tbody valign="top"><tr><th style="width: 250px;">'+(year - 2)+'\u5E74\u306E\u65E5\u8A18</th><th style="width: 250px;">'+(year - 1)+'\u5E74\u306E\u65E5\u8A18</th></tr>';
str += '<tr><td id="' + 'div' + (year-2) + 'diary"><font color="gray">Loading\u2026</font></td><td id="' + 'div' + (year-1) + 'diary"><font color="gray">Loading\u2026</font></td></tr></tbody></table>';
diary_box.innerHTML= str;
div.insertBefore(diary_box,div.firstChild);
t[year-2] = document.getElementById('div' + (year-2)+'diary');
t[year-1] = document.getElementById('div' + (year-1)+'diary');
update_diary_list(oid,year-2,month,day);
update_diary_list(oid,year-1,month,day);
}
function Home() {
var div = getDivElementsByClass('myInfo')[0];
var href = div.getElementsByTagName('a')[0].href;
if(href.match(/add_diary\.pl\?.*id=(\d+)/)){
oid = RegExp.$1;
} else {
return;
}
var s = '<table><tbody style="background-color: white;" valign="top">';
for (var i=1; i<pastYears; i++){
s += '<tr><td >' + (n_year -i ) +'\u5E74\u306E\u3042\u306A\u305F\uFF1A';
s += '<tr><td id="' + 'div' + (n_year - i) + 'diary"><font color="gray">Loading\u2026</font>';
}
s += '</tbody></table>';
s +='<div align="right">by <a href="http://userscripts.org/scripts/show/38520">6年連続mixi日記</a></div>';
var element = document.createElement('div');
element.style.cssText='padding:2px 0 4px; border-right:1px solid #d0d0d0; border-left:1px solid #d0d0d0;background:#ffffff;';
element.id = "div6yearsdiary";
element.className ="myUpdate";
element.innerHTML = s;
div.appendChild(element);
for (var i=1; i<pastYears; i++){
t[n_year-i]=document.getElementById('div'+(n_year - i)+'diary');
update_diary_list_home(oid,n_year - i,n_month,n_day);
}
}
var url = document.location.href;
var d = new Date();
var n_month = d.getMonth() +1 ;
var n_day = d.getDate();
var n_year =d.getFullYear();
if (url.match(/(\.jp\/home\.pl|\.jp\/?$)/)) {
Home();
} else {
ViewDiary();
}
})();
