■
reblogcommand.user.js このあたりかな?
function convertToHTMLDocument(html) { var xsl = (new DOMParser()).parseFromString( '<?xml version="1.0"?>\ <stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform">\ <output method="html"/>\ </stylesheet>', "text/xml"); var xsltp = new XSLTProcessor(); xsltp.importStylesheet(xsl); var doc = xsltp.transformToDocument(document.implementation.createDocument("", "", null)); doc.appendChild(doc.createElement("html")); var range = doc.createRange(); range.selectNodeContents(doc.documentElement); doc.documentElement.appendChild(range.createContextualFragment(html)); return doc; } function parseParams(doc) { var elms = $X('id("edit_post")//*[name()="INPUT" or name()="TEXTAREA" or name()="SELECT"]', doc); var params = {}; elms.forEach(function(elm) { params[elm.name] = elm.value; }); return params; } function createPostData(params) { var arr = []; for (var param in params) { if (param != "preview_post") { arr.push(encodeURIComponent(param)); arr.push("="); arr.push(encodeURIComponent(params[param])); arr.push("&"); } } return arr.join(''); } function reblog(aURL) { var id = getIDByPermalink(aURL); var d; with (D()) { d = Deferred(); if (!id) { wait(0).next(function() { d.call(); }); return d; } } window.Minibuffer.status('ReblogCommand'+id, 'Reblog ...'); d = D(); var url = aURL; d.xhttp.get(url). next(function(res) { var token = getReblogToken(res.responseText.match('iframe src="((?:\\"|[^"])*)"')[1]); url = getURLByID(token.id, token.token); return d.xhttp.get(url); }). next(function(res) { return d.xhttp.post(url, createPostData( parseParams( convertToHTMLDocument(res.responseText)))); }). next(function() { window.Minibuffer.status('ReblogCommand'+id, 'Reblog ... done.', 100); d.call()}). error(function() { if (confirm('reblog manually ? \n' + url)) reblogManually(url); d.call(); }); return d; }