|
// ==UserScript==
|
|
// @name Dashboard + Tombloo
|
|
// @namespace http://d.hatena.ne.jp/Constellation/
|
|
// @description register reblog command by Tombloo
|
|
// @include http://www.tumblr.com/dashboard*
|
|
// @include http://www.tumblr.com/show*
|
|
// @include http://www.tumblr.com/iphone*
|
|
// ==/UserScript==
|
|
//
|
|
// Detail : Pinned-node Reblog
|
|
// Pinned-node Local Download
|
|
//
|
|
// Command: Tombloo::Reblog
|
|
// Tombloo::Local
|
|
//
|
|
//
|
|
|
|
function boot(ev){
|
|
if(ev) window.removeEventListener('GM_MinibufferLoaded', boot, false);
|
|
|
|
var tombloo = GM_Tombloo.Tombloo.Service;
|
|
var win = unsafeWindow;
|
|
var doc = document;
|
|
var Minibuffer = window.Minibuffer;
|
|
var $X = Minibuffer.$X;
|
|
|
|
[
|
|
// Tombloo Reblog
|
|
{
|
|
name : 'Tombloo::Reblog',
|
|
command : function(stdin){
|
|
stdin.forEach(function(node){
|
|
|
|
var ctx = update({
|
|
document : doc,
|
|
window : win,
|
|
selection : '' + win.getSelection(),
|
|
target : node,
|
|
event : {},
|
|
title : null,
|
|
mouse : null,
|
|
menu : null,
|
|
}, win.location);
|
|
|
|
var ext = tombloo.check(ctx)[0];
|
|
tombloo.share(ctx, ext, false);
|
|
Minibuffer.status('Tombloo::Reblog'+node.id,'Reblog',100);
|
|
});
|
|
return stdin;
|
|
}
|
|
},
|
|
// Tombloo Local Download for Photo Post
|
|
{
|
|
name : 'Tombloo::Local',
|
|
command : function(stdin){
|
|
stdin.forEach(function(node){
|
|
var target = $X('descendant::img[contains(concat(" ", normalize-space(@class), " "), " image ") or contains(concat(" ", normalize-space(@class), " "), " photo ")]',node)[0] || null;
|
|
if (!target) return;
|
|
|
|
var ctx = update({
|
|
document : doc,
|
|
window : win,
|
|
selection : '' + win.getSelection(),
|
|
target : target,
|
|
event : {},
|
|
title : null,
|
|
mouse : null,
|
|
menu : null,
|
|
onImage : true,
|
|
}, win.location);
|
|
|
|
var ps = tombloo.extractors.Photo.extract(ctx);
|
|
ps = update({
|
|
page : ctx.title,
|
|
pageUrl : ctx.href,
|
|
}, ps);
|
|
|
|
Minibuffer.status('Tombloo::Local'+node.id,'Download', 100);
|
|
GM_Tombloo.Local
|
|
.post(ps)
|
|
});
|
|
return stdin;
|
|
}
|
|
},
|
|
].forEach(Minibuffer.addCommand);
|
|
|
|
[
|
|
{
|
|
key : 't',
|
|
description : 'Reblog by Tombloo',
|
|
command : function(){
|
|
try { var stdin = Minibuffer.execute('pinned-or-current-node') }catch(e) {}
|
|
Minibuffer.execute('Tombloo::Reblog|clear-pin',stdin);
|
|
}
|
|
},
|
|
{
|
|
key : 'd',
|
|
description : 'Download by Tombloo',
|
|
command : function(){
|
|
try { var stdin = Minibuffer.execute('pinned-or-current-node') }catch(e) {}
|
|
Minibuffer.execute('Tombloo::Local|clear-pin',stdin);
|
|
}
|
|
}
|
|
].forEach(Minibuffer.addShortcutkey);
|
|
|
|
function update(t, s){
|
|
for(var p in s)
|
|
t[p] = s[p];
|
|
return t;
|
|
}
|
|
}
|
|
|
|
if(window.Minibuffer){
|
|
boot();
|
|
} else {
|
|
window.addEventListener('GM_MinibufferLoaded', boot, false);
|
|
}
|