add a force sync option; fix audio mining on some websites like youtube
This commit is contained in:
1 parent
59b64c11ea
commit
1a98b17aa4
5 files changed
+77
-26
No files matched your search
+31
-11
@@ -10,23 +10,24 @@ reader_width: 800,
|
|||||||
reader_height: 300,
|
reader_height: 300,
|
||||||
deconjugator_rules_json: "",
|
deconjugator_rules_json: "",
|
||||||
freqlist_mode: 1,
|
freqlist_mode: 1,
|
||||||
|
ankiconnect_force_sync: false
|
||||||
};
|
};
|
||||||
|
|
||||||
async function settings_init()
|
async function settings_init()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
async function getvar(name, defval)
|
async function getvar(name)
|
||||||
{
|
{
|
||||||
let temp = (await browser.storage.local.get(name))[name];
|
let temp = (await browser.storage.local.get(name))[name];
|
||||||
if(temp == undefined)
|
if(temp != undefined)
|
||||||
temp = defval;
|
settings[name] = temp;
|
||||||
settings[name] = temp;
|
|
||||||
}
|
}
|
||||||
getvar("reader_width", 800);
|
getvar("reader_width");
|
||||||
getvar("reader_height", 300);
|
getvar("reader_height");
|
||||||
getvar("deconjugator_rules_json", "");
|
getvar("deconjugator_rules_json");
|
||||||
getvar("freqlist_mode", 1);
|
getvar("freqlist_mode");
|
||||||
|
getvar("ankiconnect_force_sync");
|
||||||
} catch(err) {} // options not stored yet
|
} catch(err) {} // options not stored yet
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1053,8 +1054,6 @@ function add_json_info(lookups, other_settings)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
console.log("testing thing");
|
|
||||||
console.log(entry);
|
|
||||||
let possibilities = json_lookup_kana_exact(dict, foundtext);
|
let possibilities = json_lookup_kana_exact(dict, foundtext);
|
||||||
if(!other_settings.strict_epwing)
|
if(!other_settings.strict_epwing)
|
||||||
{
|
{
|
||||||
@@ -1950,7 +1949,7 @@ function send_error(tab, error)
|
|||||||
} catch (err) {}
|
} catch (err) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
browser.runtime.onMessage.addListener((req, sender) =>
|
browser.runtime.onMessage.addListener(async (req, sender) =>
|
||||||
{
|
{
|
||||||
if (req.type == "search")
|
if (req.type == "search")
|
||||||
{
|
{
|
||||||
@@ -2001,6 +2000,15 @@ browser.runtime.onMessage.addListener((req, sender) =>
|
|||||||
{
|
{
|
||||||
if(response.error)
|
if(response.error)
|
||||||
send_error(sender.tab.id, "AnkiConnect mining failed: " + response.error);
|
send_error(sender.tab.id, "AnkiConnect mining failed: " + response.error);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(settings.ankiconnect_force_sync)
|
||||||
|
{
|
||||||
|
let newxhr = new XMLHttpRequest();
|
||||||
|
newxhr.open("POST", req.host, true);
|
||||||
|
newxhr.send('{"action": "sync","version": 6}');
|
||||||
|
}
|
||||||
|
}
|
||||||
} catch (e) { }
|
} catch (e) { }
|
||||||
});
|
});
|
||||||
xhr.addEventListener('error', () =>
|
xhr.addEventListener('error', () =>
|
||||||
@@ -2021,6 +2029,18 @@ browser.runtime.onMessage.addListener((req, sender) =>
|
|||||||
console.log("tried to play audio");
|
console.log("tried to play audio");
|
||||||
console.log(req.host);
|
console.log(req.host);
|
||||||
}
|
}
|
||||||
|
else if (req.type == "get_audio_base64")
|
||||||
|
{
|
||||||
|
let blob = await (await fetch(req.url)).blob();
|
||||||
|
let reader = new FileReader();
|
||||||
|
let result_base64 = await new Promise((resolve) =>
|
||||||
|
{
|
||||||
|
let fileReader = new FileReader();
|
||||||
|
fileReader.onload = (e) => resolve(fileReader.result);
|
||||||
|
fileReader.readAsDataURL(blob);
|
||||||
|
});
|
||||||
|
return Promise.resolve({"response" : result_base64});
|
||||||
|
}
|
||||||
return Promise.resolve(undefined);
|
return Promise.resolve(undefined);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -18,7 +18,8 @@
|
|||||||
"storage",
|
"storage",
|
||||||
"tabs",
|
"tabs",
|
||||||
"clipboardRead",
|
"clipboardRead",
|
||||||
"https://assets.languagepod101.com/dictionary/japanese/audiomp3.php?*"
|
"https://assets.languagepod101.com/dictionary/japanese/audiomp3.php?*",
|
||||||
|
"http://assets.languagepod101.com/dictionary/japanese/audiomp3.php?*"
|
||||||
],
|
],
|
||||||
|
|
||||||
"background": {
|
"background": {
|
||||||
|
|||||||
@@ -175,6 +175,12 @@ function defaults()
|
|||||||
default: false,
|
default: false,
|
||||||
label: "Enable live mining (configured via the button below under \"Other\")"
|
label: "Enable live mining (configured via the button below under \"Other\")"
|
||||||
});
|
});
|
||||||
|
settings.push({
|
||||||
|
id: "ankiconnect_force_sync",
|
||||||
|
kind: "checkbox",
|
||||||
|
default: false,
|
||||||
|
label: "Force Anki to sync to AnkiWeb after each mined card"
|
||||||
|
});
|
||||||
settings.push({
|
settings.push({
|
||||||
id: "use_selection",
|
id: "use_selection",
|
||||||
kind: "checkbox",
|
kind: "checkbox",
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ body > p:nth-of-type(1)
|
|||||||
</style>
|
</style>
|
||||||
<script src="include/browser-polyfill.min.js" charset="UTF-8"></script>
|
<script src="include/browser-polyfill.min.js" charset="UTF-8"></script>
|
||||||
<script src="reader.js" charset="UTF-8"></script>
|
<script src="reader.js" charset="UTF-8"></script>
|
||||||
|
<script src="texthook.js" charset="UTF-8"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body lang="ja">
|
<body lang="ja">
|
||||||
|
|||||||
+37
-14
@@ -2208,25 +2208,48 @@ async function mine_to_ankiconnect_with_base64_audio(object, audiofname, audioda
|
|||||||
}, (e) => {console.log(e);});
|
}, (e) => {console.log(e);});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function get_url_blob_base64(url)
|
||||||
|
{
|
||||||
|
let data = await browser.runtime.sendMessage({type:"get_audio_base64", url:url});
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
async function mine_to_ankiconnect(object)
|
async function mine_to_ankiconnect(object)
|
||||||
{
|
{
|
||||||
let audio_base64 = "";
|
try
|
||||||
if(object.audio !== undefined)
|
|
||||||
{
|
{
|
||||||
let url = "https://assets.languagepod101.com/dictionary/japanese/audiomp3.php?kana=" + object.audio[0] + "&kanji=" + object.audio[1];
|
let audio_base64 = "";
|
||||||
let reader = new FileReader();
|
if(object.audio !== undefined)
|
||||||
reader.onload = () =>
|
|
||||||
{
|
{
|
||||||
let fname = "nazeka_audio_" + object.audio[0] + "_" + object.audio[1] + ".mp3";
|
let url = "";
|
||||||
let result = reader.result.replace(/[^,]*,/, "");
|
if(settings.audio_force_https)
|
||||||
mine_to_ankiconnect_with_base64_audio(object, fname, result);
|
url = "https://";
|
||||||
};
|
else
|
||||||
fetch(url)
|
url = "http://";
|
||||||
.then((response) => response.blob())
|
url += "assets.languagepod101.com/dictionary/japanese/audiomp3.php?kana=" + object.audio[0] + "&kanji=" + object.audio[1];
|
||||||
.then((myBlob) => reader.readAsDataURL(myBlob));
|
let response = await get_url_blob_base64(url);
|
||||||
|
if(response)
|
||||||
|
{
|
||||||
|
let res = response.response;
|
||||||
|
console.log("loaded");
|
||||||
|
let fname = "nazeka_audio_" + object.audio[0] + "_" + object.audio[1] + ".mp3";
|
||||||
|
let result = res.replace(/[^,]*,/, "");
|
||||||
|
mine_to_ankiconnect_with_base64_audio(object, fname, result);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
console.log("errored");
|
||||||
|
errormessage("AnkiConnect mining partially failed: Failed to connect to languagepod101 to grab audio (going to try mining without audio)");
|
||||||
|
mine_to_ankiconnect_with_base64_audio(object, "", "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
mine_to_ankiconnect_with_base64_audio(object, "", "");
|
||||||
|
}
|
||||||
|
catch(e)
|
||||||
|
{
|
||||||
|
errormessage("AnkiConnect failed: " + e);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
mine_to_ankiconnect_with_base64_audio(object, "", "");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function mine(highlight)
|
function mine(highlight)
|
||||||
|
|||||||
Reference in new issue
Block a user