diff options
| author | Alex Yatskov <alex@foosoft.net> | 2017-02-19 10:09:15 -0800 | 
|---|---|---|
| committer | Alex Yatskov <alex@foosoft.net> | 2017-02-19 10:09:15 -0800 | 
| commit | 64db42d536318cc4b91ed5a7484de302db7979f4 (patch) | |
| tree | 5b397c579f478600e7969585cbe9e9474de3813d /ext | |
| parent | 1a52a2d8d5f5ea5c106ae244ca1e5bbf0da22b6e (diff) | |
switch to new ankiconnect interface
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/bg/js/ankiconnect.js | 2 | ||||
| -rw-r--r-- | ext/bg/js/yomichan.js | 27 | ||||
| -rw-r--r-- | ext/fg/js/frame.js | 34 | ||||
| -rw-r--r-- | ext/fg/js/util.js | 40 | 
4 files changed, 69 insertions, 34 deletions
| diff --git a/ext/bg/js/ankiconnect.js b/ext/bg/js/ankiconnect.js index f6f94329..3a6e3690 100644 --- a/ext/bg/js/ankiconnect.js +++ b/ext/bg/js/ankiconnect.js @@ -20,7 +20,7 @@ class AnkiConnect {      constructor(server) {          this.server = server;          this.asyncPools = {}; -        this.localVersion = 1; +        this.localVersion = 2;          this.remoteVersion = null;      } diff --git a/ext/bg/js/yomichan.js b/ext/bg/js/yomichan.js index 80a67588..4c70bf0f 100644 --- a/ext/bg/js/yomichan.js +++ b/ext/bg/js/yomichan.js @@ -100,20 +100,23 @@ class Yomichan {              note.deckName = this.options.anki.terms.deck;              note.modelName = this.options.anki.terms.model; -            const audio = { -                kanji: definition.expression, -                kana: definition.reading, -                fields: [] -            }; - -            for (const name in fields) { -                if (fields[name].includes('{audio}')) { -                    audio.fields.push(name); +            if (definition.audio) { +                const audio = { +                    url: definition.audio.url, +                    filename: definition.audio.filename, +                    skipHash: '7e2c2f954ef6051373ba916f000168dc', +                    fields: [] +                }; + +                for (const name in fields) { +                    if (fields[name].includes('{audio}')) { +                        audio.fields.push(name); +                    }                  } -            } -            if (audio.fields.length > 0) { -                note.audio = audio; +                if (audio.fields.length > 0) { +                    note.audio = audio; +                }              }          } diff --git a/ext/fg/js/frame.js b/ext/fg/js/frame.js index 4f4a6378..1028f0f6 100644 --- a/ext/fg/js/frame.js +++ b/ext/fg/js/frame.js @@ -113,7 +113,16 @@ class Frame {          const index = link.data('index');          const mode = link.data('mode'); -        addDefinition(this.definitions[index], mode).then(success => { +        const definition = this.definitions[index]; +        if (mode !== 'kanji') { +            const url = buildAudioUrl(definition); +            const filename = buildAudioFilename(definition); +            if (url && filename) { +                definition.audio = {url, filename}; +            } +        } + +        addDefinition(definition, mode).then(success => {              if (success) {                  const button = this.findAddNoteButton(index, mode);                  button.addClass('disabled'); @@ -171,28 +180,11 @@ class Frame {              }          } -        let kana = definition.reading; -        let kanji = definition.expression; -        if (!kana) { -            if (!kanji) { -                return; -            } - -            if (wanakana.isHiragana(kanji)) { -                kana = kanji; -                kanji = null; -            } -        } - -        const params = []; -        if (kanji) { -            params.push(`kanji=${encodeURIComponent(kanji)}`); -        } -        if (kana) { -            params.push(`kana=${encodeURIComponent(kana)}`); +        const url = buildAudioUrl(definition); +        if (!url) { +            return;          } -        const url = `https://assets.languagepod101.com/dictionary/japanese/audiomp3.php?${params.join('&')}`;          let audio = this.audioCache[url];          if (audio) {              audio.currentTime = 0; diff --git a/ext/fg/js/util.js b/ext/fg/js/util.js index aeda36b5..c9ee4ed7 100644 --- a/ext/fg/js/util.js +++ b/ext/fg/js/util.js @@ -166,3 +166,43 @@ function extractSentence(source, extent) {      return content.substring(startPos, endPos).trim();  } + +function buildAudioUrl(definition) { +    let kana = definition.reading; +    let kanji = definition.expression; + +    if (!kana && !kanji) { +        return null; +    } + +    if (!kana && wanakana.isHiragana(kanji)) { +        kana = kanji; +        kanji = null; +    } + +    const params = []; +    if (kanji) { +        params.push(`kanji=${encodeURIComponent(kanji)}`); +    } +    if (kana) { +        params.push(`kana=${encodeURIComponent(kana)}`); +    } + +    return `https://assets.languagepod101.com/dictionary/japanese/audiomp3.php?${params.join('&')}`; +} + +function buildAudioFilename(definition) { +    if (!definition.reading && !definition.expression) { +        return null; +    } + +    let filename = 'yomichan'; +    if (definition.reading) { +        filename += `_${definition.reading}`; +    } +    if (definition.expression) { +        filename += `_${definition.expression}`; +    } + +    return filename += '.mp3'; +} |