add upload, fy..

dependabot/npm_and_yarn/y18n-4.0.1
iotcat 4 years ago
parent 36765d8700
commit b23373c967
  1. 20
      src/fy.js
  2. 3
      src/index.js
  3. 43
      src/public/index.html
  4. 187
      src/public/upload.html
  5. 14
      src/server.js

@ -2,7 +2,8 @@ module.exports = async (params) => {
var o_params = {
word: 'home',
url: 'https://fy.iciba.com/ajax.php?a=fy&f=en&t=zh&w='
url: 'https://fy.iciba.com/ajax.php?a=fy&f=en&t=zh&w=',
type: 'sentence'
}
Object.assign(o_params, params);
@ -18,9 +19,22 @@ module.exports = async (params) => {
reject(err);
}else{
try{
let data = JSON.parse(res.body);
resolve(data.content.out);
if(o_params.type == 'word'){
if(data.content.hasOwnProperty('word_mean')){
resolve(data.content.word_mean);
}else{
reject();
}
}else{
if(data.content.hasOwnProperty('out')){
resolve(data.content.out);
}else if(data.content.hasOwnProperty('word_mean')){
resolve(data.content.word_mean);
}else{
reject();
}
}
}catch(e){
reject(e);
}

@ -21,6 +21,9 @@ module.exports = async (params) => {
let data = JSON.parse(res.body);
let o = [];
if(!data.result.totalHits){
reject();
}
data.result.sentences.forEach((item, index) => {
o.push(item.sentence);
if(index == data.result.sentences.length - 1){

@ -66,6 +66,7 @@
<li><a href="https://github.com/iotcat/sentence-generator" target="_blank">GitHub</a></li>
<li><a href="https://iotcat.me/" target="_blank">Author</a></li>
<li><a href="./upload.html">Upload</a></li>
<li><a href="./logout.html">Logout</a></li>
<li>
<select id="theme-changer" onchange="updateTheme(this.value)">
@ -148,6 +149,7 @@ data = [];
$.get('./getData/?type=obj&email='+cookie.get('email'), function(res){
if(res.code != 200){
alert(res.message);
window.location.href='./upload.html';
}else{
data = res.data;
next();
@ -167,12 +169,36 @@ var sort = function(){
}
var addProperty = function(s, word, before, after){
let pos = s.indexOf(word, iter);
if(before.indexOf(word) == -1 && after.indexOf(word) == -1 && '<span class="oWord"></span><strong></strong>'.indexOf(word) == -1){
iter = pos + String(word).length + after.length;
return s.substring(0, pos) + before + String(word) + after + s.substring(pos + String(word).length);
}
else
return s;
}
var next = function(){
sort();
$.get('./mksec/?word='+data[0].word, function(res){
sentence = res;
let pos = res.indexOf(data[0].word);
res = res.substring(0, pos) + '<strong>' + String(data[0].word) + '</strong>' + res.substring(pos + String(data[0].word).length);
let arr = res.match(/\b[a-zA-Z]+\b/g);
arr = [...new Set(arr)];
iter = 0;
for(let i = 0; i < arr.length; i ++){
if(arr[i].indexOf(data[0].word)!=-1 || (data[0].word.length > 5 && arr[i].indexOf(data[0].word.substr(0, data[0].word.length - 1))!= -1) || (data[0].word.length > 6 && arr[i].indexOf(data[0].word.substr(0, data[0].word.length - 2))!= -1)){
res = addProperty(res, arr[i], '<strong>', '</strong>');
}else{
res = addProperty(res, arr[i], '<span class="oword">', '</span>');
}
}
$('#sentence').html(res);
getInfo();
})
@ -221,6 +247,19 @@ var getInfo = function(){
});
$('body').on('click','.oword',function(){
let word = $(this).html();
$.get('./fy/?type=word&word='+word, function(res){
tips.info({
title: word,
message: res
});
})
});
</script>
</body>
</html>

@ -0,0 +1,187 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MkSec Web</title>
<link rel="stylesheet" href="css/awsm.min.css">
<script type="text/javascript">
var version = '3.0.6';
var themes = JSON.parse('[{"title":"white","prismTheme":""},{"title":"gondola","prismTheme":"tomorrow"},{"title":"mischka","prismTheme":"okaidia"},{"title":"big-stone","prismTheme":"tomorrow"},{"title":"black","prismTheme":""},{"title":"tasman","prismTheme":""},{"title":"pastel-pink","prismTheme":""},{"title":"pearl-lusta","prismTheme":"solarizedlight"}]');
var storedVersion = localStorage.getItem('awsm-version');
if (version !== storedVersion) {
localStorage.removeItem('awsm-current-theme');
localStorage.removeItem('awsm-themes');
localStorage.setItem('awsm-version', version);
}
function getCSSFileName(theme) {
return 'css/awsm_theme_' + theme + '.min.css';
}
function appendStyles(str) {
var style = document.createElement('style');
style.innerHTML = str;
document.querySelector('head').appendChild(style);
}
function loadTheme() {
var theme = localStorage.getItem('awsm-current-theme');
if (!theme || theme === 'white') return;
reloadTheme(theme);
}
function reloadTheme(theme) {
var storedThemesStr = localStorage.getItem('awsm-themes');
if (!storedThemesStr) return;
var storedThemes = JSON.parse(storedThemesStr);
appendStyles(storedThemes[theme]);
}
loadTheme();
</script>
<script type="text/javascript">block_aplayer = true;</script>
<script src="https://cdn.yimian.xyz/ushio-js/ushio-head.min.js"></script>
<script type="text/javascript">
if(!cookie.get('email')){
window.location.href='./login.html';
}
</script>
</head>
<body>
<header>
<h1>MkSec Web</h1>
<p>Learn English by sentences~
</p>
<nav>
<ul>
<li><a href="https://github.com/iotcat/sentence-generator" target="_blank">GitHub</a></li>
<li><a href="https://iotcat.me/" target="_blank">Author</a></li>
<li><a href="./index.html">Home</a></li>
<li><a href="./logout.html">Logout</a></li>
<li>
<select id="theme-changer" onchange="updateTheme(this.value)">
<option value="white" selected>white</option>
<option value="gondola">gondola</option>
<option value="mischka">mischka</option>
<option value="big-stone">big-stone</option>
<option value="black">black</option>
<option value="tasman">tasman</option>
<option value="pastel-pink">pastel-pink</option>
<option value="pearl-lusta">pearl-lusta</option>
</select>
</li>
</ul>
</nav>
</header>
<main>
<article>
<section>
<h2><a id="forms" href="#forms" aria-hidden="true"></a>Upload
</h2>
<form onsubmit="upload(); return false;">
<fieldset>
<legend>Box</legend>
<label for="word-list">Copy your words here, separated by comma, space or line feed.</label>
<textarea id="word-list"></textarea>
<input type="submit" value="Submit">
</fieldset>
</form>
</section>
</article>
</main>
<footer>
<p style="text-align: center;"> Powered By Ushio | Made with love by <a href="https://iotcat.me">iotcat</a> </p>
<br>
</footer>
<script>
function loadCSS(path, cb) {
var xhr = new XMLHttpRequest();
xhr.open('GET', path);
xhr.onreadystatechange = function() {
if (this.readyState === 4 && this.status === 200) {
cb(this.responseText);
}
};
xhr.send();
}
function updateTheme(theme) {
localStorage.setItem('awsm-current-theme', theme);
loadCSS(getCSSFileName(theme), function(text) {
var storedThemesStr = localStorage.getItem('awsm-themes');
var storedThemes = JSON.parse(storedThemesStr) || {};
storedThemes[theme] = text;
localStorage.setItem('awsm-themes', JSON.stringify(storedThemes));
reloadTheme(theme);
});
}
var theme = localStorage.getItem('awsm-current-theme');
if (theme && theme !== 'white') {
document.getElementById('theme-changer').value = theme;
}
</script>
<script src="https://cdn.yimian.xyz/ushio-js/ushio-footer.min.js"></script>
<script type="text/javascript">
var upload = async function(){
let o = [];
let wArr = $('#word-list').val().match(/\b[a-zA-Z]+\b/g);
for(let index = 0; index < wArr.length; index ++){
wArr[index] = wArr[index].toLowerCase();
try{
let arr = (await mksec(wArr[index]));
o.push(wArr[index]);
tips.info({
message: 'Found '+ wArr[index]
});
}catch(e){
tips.warning({
message: 'Not found '+ wArr[index]
});
}
}
$.post('./publish/', {
email: cookie.get('email'),
data: JSON.stringify(o)
}, function(res){
if(res.code == 200){
tips.success({
message: res.message
});
}else{
tips.error({
message: res.message
});
}
});
}
var mksec = (word) => {
return new Promise((resolve, reject) => {
$.get('./mksec/?word='+word)
.done(function(res){
resolve(res);
})
.fail(function(){
reject();
})
})
}
</script>
</body>
</html>

@ -16,20 +16,32 @@ app.use(require('express').static(__dirname+'/public'));
app.get('/mksec/', async (req, res) => {
try{
let arr = await mksec({
word: req.query.word
});
res.send(arr[Math.floor((Math.random()*arr.length))]);
}catch(e){
res.status(404).send('No such word or sentences!!');
}
});
app.get('/fy/', async (req, res) => {
try{
let arr = await fy({
word: req.query.word
word: req.query.word,
type: (req.query.hasOwnProperty('type') && req.query.type == 'word') ? 'word' : 'sentence'
});
res.send(arr);
}catch(e){
res.status(404).send({
code: 404,
message: 'No such word or sentences!!'
});
}
});

Loading…
Cancel
Save