// ==UserScript== // @name BunPRO to CVS downloader // @namespace http://tampermonkey.net/ // @version 0.2 // @description Download current grammar point and example as CSV for easy anki importation // @author You // @match https://bunpro.jp/grammar_points/* // @grant none // @downloadURL https://update.greasyfork.org/scripts/40076/BunPRO%20to%20CVS%20downloader.user.js // @updateURL https://update.greasyfork.org/scripts/40076/BunPRO%20to%20CVS%20downloader.meta.js // ==/UserScript== //var CSV_SEP = ";" var CSV_SEP = "|"; function download_grammar_point() { 'use strict'; var JLPT_level = document.querySelector(".header__lesson-progress").innerText.slice(0,2); var lesson_id = (function(){ var txt = document.querySelector(".header__lesson-progress").innerText.trim(); var lesson_num = txt.slice(10, txt.search(":")).trim(); var lesson_section = txt.slice(txt.search(": ")+2, txt.search("/")).trim(); if (lesson_num.length == 1) { lesson_num = "0" + lesson_num; } if (lesson_section.length == 1) { lesson_section = "0" + lesson_section; } // str->int: integers must not start by 0; convert N5 to 1, N4 to 2.... var first_digit = parseFloat(JLPT_level[1]) * -1 + 5 + 1; return "" + first_digit + lesson_num + lesson_section; })(); var pattern = document.querySelector(".grammar-point__title").innerText.trim(); var sources_html = (function() { var formed_html = ""; var sources = Array.from(document.querySelectorAll(".supplemental-links > div > div")). filter(function (el) { return el.id.startsWith("supplemental_link");}); while (sources.length > 0) { var resource_link = sources.pop().innerHTML; var description = sources.pop().innerText; formed_html = "