alfred-ldoce
Version:
Quick look from Longman dictionary and create flash cards to Anki
98 lines (90 loc) • 2.31 kB
JavaScript
/* eslint-disable no-unused-vars */
/* eslint-disable camelcase */
const alfy = require('alfy')
const ankiConnect = require('./anki-connect')
const decks = require('./anki-decks')
const nameOfDeck = alfy.config.get('default-deck')
// "" const {note_type} = process.env
const note_type = 'Ldoce-Express'
const logResult = {
error: [],
result: []
}
module.exports = async function (output) {
/* eslint-disable no-await-in-loop */
for (let i = 0; i < output.length; i++) {
if (output[i].Homnum) {
output[i].Headword = `${output[i].Headword}<span class="HOMNUM-title">${
output[i].Homnum.toString()}</span>`
}
delete output[i].Inflections // Can't understood the reason of error without delete
if (output[i].Definition !== 'notfound' && output[i].Definition !== '') {
try {
const result1 = await ankiConnect(
'createDeck', 6,
{
deck: nameOfDeck
})
} catch (error) {
logResult.error.push(error)
}
try {
const result2 = await ankiConnect(
'addNote', 6,
{
note: {
deckName: nameOfDeck,
modelName: note_type,
fields: output[i],
tags: [output[i].Tag]
}
})
logResult.result.push(`\n${nameOfDeck}: ${result2}`)
} catch (error) {
logResult.error.push(error)
}
}
}
/* eslint-enable no-await-in-loop */
if (logResult.error.length > 0) {
logResult.error.forEach(error => {
process.stdout.write(`!err: ${error}`)
})
} else {
logResult.result.forEach(result => {
process.stdout.write(result)
})
}
}
module.exports.canAddNotes = async function (check) {
const ankiDecks = await decks()
/* eslint-disable no-await-in-loop */
for (let i = 0; i < check.length; i++) {
const currentFields = {
Headword: `${check[i].Headword}${check[i].Homnum ? `<span class="HOMNUM-title">${
check[i].Homnum.toString()}</span>` : ''}`,
Audio: '',
Translation: '',
Example: '',
Image: '',
Verb_table: '',
Tag: [check[i].Part_of_speech]
}
try {
const result = await ankiConnect(
'canAddNotes', 6,
{
notes: [{
deckName: ankiDecks[0],
modelName: note_type,
fields: currentFields,
tags: [currentFields.Tag]
}]
})
return result
} catch (error) {
return error
}
}
/* eslint-enable no-await-in-loop */
}