您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
メディアマーカーに登録時にAmazonからタグ候補を持ってくる
// ==UserScript== // @name MediaMaker with Amazon tags // @namespace http://efcl.info/ // @description メディアマーカーに登録時にAmazonからタグ候補を持ってくる // @include http://mediamarker.net/reg?* // @include http://mediamarker.net/u/*/edit* // @version 0.0.1.20140518104256 // ==/UserScript== (function(_doc) { var asin = document.getElementsByName("asin")[0].value // Amazon関係の操作関数 var amazon = { getTags: getTags, getAmazonDoc: getAmazonDoc, } function insertMD(tags){ var inp = _doc.getElementById("poptag"); var tr = document.createElement("tr"); var td = document.createElement("td"); td.className = "label_tag"; td.textContent = "Amazon" var tagCloud = document.createElement("td"); tagCloud.className = "tag"; for(var i=0,l=tags.length;i<l;i++)(function(){ var aTag = document.createElement("a"); aTag.setAttribute("onclick","javascript: addTag('"+tags[i]+"'); pushTag(); return false;"); aTag.setAttribute("style" , "margin:1px 3px;background-color: rgb(255, 255, 255); color: rgb(0, 102, 204); text-decoration: underline;") aTag.textContent = tags[i]; tagCloud.appendChild(aTag); })() tr.appendChild(td); tr.appendChild(tagCloud); // 親ノード.insertBefore(追加するノード, 基準ノード.nextSibling); // 基準ノードの後ろに追加 inp.parentNode.parentNode.insertBefore(tr ,inp.parentNode.nextSibling); } function getTags(doc) { var asinId = asin + "-piles"; var tags = [];// タグ var el = $x(doc ,'id("' + asinId + '")//a[@rel="tag"]'); for (var i = 0, l = el.length; i < l; i++) { tags.push(el[i].textContent); } insertMD(tags); } function getAmazonDoc(asin, callback) { GM_xmlhttpRequest({ method: 'get', url: "http://www.amazon.co.jp/exec/obidos/ASIN/" + asin, headers: { "Content-type": "application/x-www-form-urlencoded" }, onload: function(res) { if (res.readyState == 4 && res.status == 200) { callback(createHTMLDocumentByString(res.responseText)); } }, }); return false } // Query String から 配列を返す function getParameter(str) { var dec = decodeURIComponent; var par = new Array, itm; if (typeof(str) == 'undefined') return par; if (str.indexOf('?', 0) > -1) str = str.split('?')[1]; str = str.split('&'); for (var i = 0; str.length > i; i++) { itm = str[i].split("="); if (itm[0] != '') { par[itm[0]] = typeof(itm[1]) == 'undefined' ? true : dec(itm[1]); } } return par; } //createDocument メソッドと文書型宣言及び名前空間の指定 function createHTMLDocumentByString(source) { var XHTML_NS = 'http://www.w3.org/1999/xhtml'; var doctype = document.implementation.createDocumentType('html', '-//W3C//DTD HTML 4.01//EN', 'http://www.w3.org/TR/html4/strict.dtd'); var doc = document.implementation.createDocument(XHTML_NS, 'html', doctype); var range = document.createRange(); range.selectNodeContents(document.documentElement); var content = doc.adoptNode(range.createContextualFragment(source)); doc.documentElement.appendChild(content); return doc; } function $x(context, exp) { context || (context = document); var expr = (context.ownerDocument || context).createExpression(exp, function(prefix) { return document.createNSResolver(context.documentElement || context).lookupNamespaceURI(prefix) || context.namespaceURI || document.documentElement.namespaceURI || ""; }); var result = expr.evaluate(context, XPathResult.ANY_TYPE, null); switch (result.resultType) { case XPathResult.STRING_TYPE: return result.stringValue; case XPathResult.NUMBER_TYPE: return result.numberValue; case XPathResult.BOOLEAN_TYPE: return result.booleanValue; case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: // not ensure the order. var ret = [], i = null; while (i = result.iterateNext()) ret.push(i); return ret; } return null; } //get amazon.getAmazonDoc(asin, amazon.getTags) })(document)