|
I’m casually going through the Japanese course in Duolingo, and found this
handy
wiki series on Duolingo Fandom Japanese
with lists of all of the vocab.
I wanted an easier way to import it into Anki, so I put together this little
pastable JS script to export a CSV of the vocab on one page:
(function () {
const pattern =
/^([\p{sc=Han}\p{sc=Hiragana}\p{sc=Katakana}?、,。]+)\s*\(([a-z\p{P}-]+)\)\s*=\s*([a-z\p{P}\(\) ?]+)(\s*\(([\p{sc=Han}\p{sc=Hiragana}\p{sc=Katakana}?、,。]+)\))?$/iu;
const csvRows = ['日本語,ふりがな,ローマ字,英語'];
document
.querySelectorAll('h3 ~ ul:not([class]) > li:not([class])')
.forEach((li) => {
const match = String(li.innerText).match(pattern);
console.log({ innerText: String(li.innerText), match });
if (match) {
const csvRow = '"'+[
(match[1] || '').replace(',', ' /').trim() || '',
(match[5] || '').replace(',', ' /').trim() || '',
(match[2] || '').replace(',', ' /').trim() || '',
(match[3] || '').replace(',', ' /').trim() || '',
].join('","')+'"';
console.log(csvRow);
csvRows.push(csvRow);
}
});
const csv = csvRows.join('\n');
const download = document.createElement('a');
download.setAttribute(
'href',
'data:text/csv;charset=utf-8,' + encodeURIComponent(csv)
);
download.setAttribute('download', String(window.location).split('/').pop());
document.body.appendChild(download);
download.click();
document.body.removeChild(download);
})();
You can paste this into your browser devtools console on one of those pages, and
it will trigger a download of the vocab there as a CSV.
You can then import the CSV file into your Anki deck.
View post:
Duolingo Fandom Japanese vocab CSV extractor in JS
|
|
|
|