Merge branch 'dev'

This commit is contained in:
Alex Yatskov 2017-02-19 14:18:25 -08:00
commit a1ba96145d
5 changed files with 71 additions and 18 deletions

View File

@ -100,9 +100,11 @@ class Yomichan {
note.deckName = this.options.anki.terms.deck; note.deckName = this.options.anki.terms.deck;
note.modelName = this.options.anki.terms.model; note.modelName = this.options.anki.terms.model;
if (definition.audio) {
const audio = { const audio = {
kanji: definition.expression, url: definition.audio.url,
kana: definition.reading, filename: definition.audio.filename,
skipHash: '7e2c2f954ef6051373ba916f000168dc',
fields: [] fields: []
}; };
@ -116,6 +118,7 @@ class Yomichan {
note.audio = audio; note.audio = audio;
} }
} }
}
for (const name in fields) { for (const name in fields) {
note.fields[name] = formatField( note.fields[name] = formatField(

View File

@ -17,6 +17,7 @@
</div> </div>
<script src="../lib/jquery-3.1.1.min.js"></script> <script src="../lib/jquery-3.1.1.min.js"></script>
<script src="../lib/wanakana.min.js"></script>
<script src="js/util.js"></script> <script src="js/util.js"></script>
<script src="js/frame.js"></script> <script src="js/frame.js"></script>
</body> </body>

View File

@ -113,7 +113,16 @@ class Frame {
const index = link.data('index'); const index = link.data('index');
const mode = link.data('mode'); 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) { if (success) {
const button = this.findAddNoteButton(index, mode); const button = this.findAddNoteButton(index, mode);
button.addClass('disabled'); button.addClass('disabled');
@ -164,11 +173,6 @@ class Frame {
} }
playAudio(definition) { playAudio(definition) {
let url = `https://assets.languagepod101.com/dictionary/japanese/audiomp3.php?kanji=${encodeURIComponent(definition.expression)}`;
if (definition.reading) {
url += `&kana=${encodeURIComponent(definition.reading)}`;
}
for (const key in this.audioCache) { for (const key in this.audioCache) {
const audio = this.audioCache[key]; const audio = this.audioCache[key];
if (audio !== null) { if (audio !== null) {
@ -176,6 +180,11 @@ class Frame {
} }
} }
const url = buildAudioUrl(definition);
if (!url) {
return;
}
let audio = this.audioCache[url]; let audio = this.audioCache[url];
if (audio) { if (audio) {
audio.currentTime = 0; audio.currentTime = 0;

View File

@ -166,3 +166,43 @@ function extractSentence(source, extent) {
return content.substring(startPos, endPos).trim(); 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';
}

View File

@ -1,7 +1,7 @@
{ {
"manifest_version": 2, "manifest_version": 2,
"name": "Yomichan", "name": "Yomichan",
"version": "1.0.13", "version": "1.0.14",
"description": "Japanese dictionary with Anki integration", "description": "Japanese dictionary with Anki integration",
"icons": {"16": "img/icon16.png", "48": "img/icon48.png", "128": "img/icon128.png"}, "icons": {"16": "img/icon16.png", "48": "img/icon48.png", "128": "img/icon128.png"},