您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Weblioの単語帳にエクスポートを追加し、単語リストだけでなく、意味、発音などをCSV形式でダウンロードできるようにする。
当前为
- // ==UserScript==
- // @name weblio_add_export2
- // @namespace http://catherine.v0cyc1pp.com/weblio_add_export2.user.js
- // @match https://uwl.weblio.jp/word-list
- // @run-at document-start
- // @version 2.0
- // @author greg10
- // @license GPL 3.0
- // @grant none
- // @description Weblioの単語帳にエクスポートを追加し、単語リストだけでなく、意味、発音などをCSV形式でダウンロードできるようにする。
- // ==/UserScript==
- // [Details]
- // 「単語帳のインポート」メニューの下に「単語帳のエクスポート」メニューが追加されます。
- // クリックするとダウンロードフォルダにcsvファイルがエクスポートされます。
- // 単語、発音、品詞、意味、例文、レベルなどが保存されます。
- //console.log("weblio_add_export start");
- function getImportElement() {
- var ret = null;
- //$("li").each( function() {
- document.querySelectorAll("li").forEach(function(elem) {
- //var str = $(this).text();
- var str = elem.innerText;
- if (str.indexOf("単語帳のインポート") != -1) {
- //ret = $(this);
- ret = elem;
- }
- });
- return ret;
- }
- function exportlist() {
- //alert("export() clicked!");
- var alldata = '';
- //$("tr.tngMainTrOn").each( function() {
- document.querySelectorAll("tr.tngMainTrOn").forEach(function(elem) {
- //var kids = $(this).children("td");
- var kids = elem.children; // tdのリスト
- var line = "";
- var table = null;
- var tbody = null;
- console.log("kids.length=" + kids.length);
- for (var i = 0; i < kids.length; i++) {
- var kid = kids[i]; // ひとつのtd
- var str = "";
- if (i == 0) {
- //str = $(kid).children("div").children("a").text();
- str = kid.children[0].children[1].innerText;
- console.log("str=" + str);
- } else if (i == 3) {
- //str = $(kid).find("tbody > tr > td > div.tngMainTIML").text();
- //str = document.querySelector("tbody > tr > td > div.tngMainTIML").innerText;
- table = kid.children[0].children[0];
- tbody = table.children[0];
- str = tbody.children[0].children[0].children[0].innerText;
- } else if (i == 4) {
- //str = $(kid).find("tbody > tr > td > div.tngMainTSRHB > p.tngMainTSRH").text();
- //str = document.querySelector("tbody > tr > td > div.tngMainTSRHB > p.tngMainTSRH").innerText;
- table = kid.children[0].children[0];
- tbody = table.children[0];
- str = tbody.children[0].children[0].children[0].innerText;
- } else {
- //str = $(kid).text();
- str = kid.innerText;
- }
- if (line.length != 0) {
- line = line + ',';
- }
- line = line + "\"" + str + "\"";
- }
- alldata = alldata + line + '\n';
- });
- var a = document.createElement('a');
- a.href = 'data:application/csv;charset=utf-8,' + encodeURIComponent(alldata);
- // 単語帳の名前を取得する
- //var listname = $("td.selectFolderName").children("span").text();
- //var listname = $("td.selectFolderName > div > div").children("span").text();
- var listname = document.querySelector("td.selectFolderName > div > div").children[0].innerText;
- if (listname == null || listname == undefined || listname == "") {
- listname = "単語帳";
- }
- var filename = listname + ".csv";
- //supported by chrome 14+ and firefox 20+
- a.download = filename;
- //needed for firefox
- document.getElementsByTagName('body')[0].appendChild(a);
- //supported by chrome 20+ and firefox 5+
- a.click();
- }
- function main() {
- var imp = getImportElement();
- //$(imp).after('<li class="sideCat" onclick="exportlist();"><span>単語帳のエクスポート</span></li>');
- if (imp == null) {
- return;
- }
- //if ( $(imp).attr('mydone') == "done" ) {
- if (imp.getAttribute('mydone') == "done") {
- return;
- }
- //$(imp).attr("mydone","done");
- imp.setAttribute("mydone", "done");
- //var lielem = $("<li class=\"\"/>");
- var lielem = document.createElement("li");
- lielem.className = "";
- /*
- $(lielem).append( $("<a/>", {
- text: "単語帳のエクスポート",
- click: function() {
- exportlist();
- }
- }));
- */
- var taga = document.createElement("a");
- taga.innerText = "単語帳のエクスポート";
- taga.onclick = function() {
- exportlist();
- };
- lielem.appendChild(taga);
- //$(imp).after(lielem);
- imp.parentNode.insertBefore(lielem, imp.nextElementSibling);
- }
- var observer = new MutationObserver(function(mutations) {
- observer.disconnect();
- main();
- observer.observe(document, config);
- });
- var config = {
- attributes: false,
- childList: true,
- characterData: false,
- subtree: true
- };
- observer.observe(document, config);