http://ireblog.libelabo.jp/
http://ireblog.libelabo.jp/#random
j で進んで u で reblog かな?
http://ireblog.libelabo.jp/javascripts/ireblog.js
var THRESHOLD = 10; var INTERVAL = 300; var SUMMER = 5000; var RANDOM = false; var page = 1; var minimum = 1000000000; var lock = false; var postArray = []; $(document).ready(function() { if(location.href.match(/#random/)) RANDOM = true; $(window).keydown(function(e) { var keyCode = e.keyCode; if(keyCode == 74) pass(); // j //if(keyCode == 79) _open(); // o if(keyCode == 85) reblog(); // u }); load(); $('#posts').empty().append($('<div />').addClass('films') .append($('<div />').attr('id','reblog').addClass('film').height(500).css({'left': 0}).click(reblog)) .append($('<div />').attr('id','pass').addClass('film').height(500).css({'right': 0}).click(pass)) ); }); function pass() { var firstPost = postArray.shift(); $('.pass',firstPost).fadeTo('fast', 0.2); next(firstPost,postArray[0]); } function reblog() { var firstPost = postArray.shift(); var reblogImg = $('.reblog', firstPost); reblogImg.fadeTo('fast', 0.2); var reblogId = reblogImg.attr('id').replace(/^reblog_/, ''); var permalink = $('#post_' + reblogId + ' a.permalink').attr('href'); $.post('./api/reblog/', {url: permalink}); next(firstPost, postArray[0]); } function next(firstPost,secondPost) { setTimeout(function() { firstPost.remove(); if(secondPost) secondPost.removeClass('standby'); load(); document.body.scrollTop = 0; }, INTERVAL); } function appendPost(li, d) { var posts = $('#posts'); switch(d['post_type']) { case 'regular': posts.append( li.append($('<div />').addClass('post').addClass('chat_post') .html('<div class="title">' + d['title'] + '</div>' + d['body']) ) ); break; case 'photo': posts.append( li.append($('<div />').addClass('post').addClass('photo_post') .append($('<a />').attr('href', d['permalink']) .append($('<img />').attr('src', d['body']).width(400).addClass('photo')) ) .append($('<div />').addClass('caption').html(d['caption'])) ) ); break; case 'quote': posts.append( li.append($('<div />').addClass('post').addClass('quote_post') .append($('<div />').addClass('quote') .append($('<span />').addClass('quote').html(d['body'])) ) .append($('<div />').addClass('source').html(d['caption'])) ) ); break; case 'link': posts.append( li.append($('<div />').addClass('post').addClass('link_post') .append($('<div />').addClass('link').html(d['title'])) ) ); break; case 'conversation': posts.append( li.append($('<div />').addClass('post').addClass('chat_post') .append($('<div />').addClass('title').html(d['title'])) .append($('<div />').addClass('chat').html(d['body'])) ) ); break; } } function load() { if(postArray.length < THRESHOLD && !lock) { lock = true; var num = RANDOM ? Math.ceil(Math.random() * SUMMER) : page; $.getJSON('./api/dashboard/', {page: num}, function(data) { lock = false; page++; $('#loading').remove(); for(var i = 0, len = data.length; i < len; ++i) { var d = data[i]; var postId = parseInt(d['id']); if(!RANDOM && minimum <= postId) { if(i == (len - 1)) load(); break; } minimum = postId; var li = $('<li />').attr('id', 'post_' + d['id']).addClass('post').addClass('standby'); postArray.push(li); li.append($('<div />').addClass('post_info') .append($('<a />').addClass('author').attr('href', d['user']['url']).text(d['user']['id'])) .append($('<a />').addClass('permalink').attr('href', d['permalink']).text('(permalink)')) .append($('<img />').addClass('reblog').attr({'src': './images/reblog.gif', 'id': 'reblog_' + d['id']})) .append($('<img />').addClass('pass').attr('src', './images/pass.gif')) ); appendPost(li, d); } if(postArray[0]) postArray[0].removeClass('standby'); }); } }