Skip to content
Snippets Groups Projects
Commit d314cf84 authored by Lucio Zambon's avatar Lucio Zambon
Browse files

Update talk.php

parent 08c8a4eb
No related branches found
No related tags found
No related merge requests found
......@@ -7,38 +7,42 @@ CREATE TABLE IF NOT EXISTS speech (
host VARCHAR(50),
t TIMESTAMP DEFAULT now()
)";
CREATE TABLE IF NOT EXISTS ujive (
token VARCHAR(20) PRIMARY KEY,
msg VARCHAR(255),
host VARCHAR(50),
t TIMESTAMP DEFAULT now()
)";
*/
function speechRead($token) {
function dbRead($table, $token) {
global $sql;
$query = "SELECT msg FROM speech WHERE token=$1";
$query = "SELECT msg FROM $table WHERE token=$1";
$data = $sql->sql_secure($query, array($token));
$err = $sql->sql_error();
return (!empty($err))? $err: $data[0]['msg'];
}
function speechUpsert($token, $msg) {
function dbUpsert($table, $token, $msg) {
global $sql;
$query = "DELETE FROM speech WHERE EXTRACT(EPOCH FROM NOW()-t) > 36000";
$query = "DELETE FROM $table WHERE EXTRACT(EPOCH FROM NOW()-t) > 36000";
$sql->sql_query($query);
$query = "INSERT INTO speech (token, msg, host) VALUES ($1, $2, '".($_SERVER['REMOTE_ADDR'].'_'.$_SERVER['HTTP_X_FORWARDED_FOR'])."') ON CONFLICT (token) DO UPDATE SET msg=$3";
$query = "INSERT INTO $table (token, msg, host) VALUES ($1, $2, '".($_SERVER['REMOTE_ADDR'].'_'.$_SERVER['HTTP_X_FORWARDED_FOR'])."') ON CONFLICT (token) DO UPDATE SET msg=$3";
$data = $sql->sql_secure($query, array($token, $msg, $msg));
$err = $sql->sql_error();
if (!empty($err)) echo $err;
}
$sql = open_db();
// if (!empty($_REQUEST['testupsert'])) {speechUpsert($_REQUEST['upsert'], $_REQUEST['msg']);exit();}
// if (!empty($_REQUEST['testsread'])) {die(speechRead($_REQUEST['sread']));}
$local = isset($_REQUEST['cdn'])? false: true; // true = use only locally installed modules, false = use cdn
$lang = empty($_REQUEST['lang'])? 'it': substr($_REQUEST['lang'], 0, 2);
$host = isset($hs[$_SERVER['REMOTE_ADDR']])? $hs[$_SERVER['REMOTE_ADDR']]: $_SERVER['REMOTE_ADDR'];
function mylog() {
file_put_contents('./logs'.date('Y').'.txt', date('Y-m-d H:i:s').' '.$_SERVER['REMOTE_ADDR'].'_'.$_SERVER['HTTP_X_FORWARDED_FOR'].' - '.$_SERVER['QUERY_STRING'].PHP_EOL , FILE_APPEND | LOCK_EX);
function mylog($a = '') {
file_put_contents('./logs'.date('Y').'.txt', date('Y-m-d H:i:s').' '.$_SERVER['REMOTE_ADDR'].'_'.$_SERVER['HTTP_X_FORWARDED_FOR'].' - '.$_SERVER['QUERY_STRING'].$a.PHP_EOL , FILE_APPEND | LOCK_EX);
}
/*if (!empty($_REQUEST['init'])) {
$t = $_REQUEST['init']-0;
if ($t==0 || $t>1000000000000) die('');
file_put_contents("./token", $t);
}*/
if (!empty($_REQUEST['search']) || !empty($_REQUEST['open'])) mylog();
if (!empty($_REQUEST['open'])) mylog();
if (!empty($_REQUEST['list'])) {
/*$t = file_get_contents("./token");
if ($t != $_REQUEST['token']-0) die('[]');
......@@ -102,16 +106,50 @@ CREATE TABLE IF NOT EXISTS speech (
header('Content-Type: application/json');
die(json_encode($data));
}
if (!empty($_REQUEST['ctree'])) {
dbUpsert('ujive', $_REQUEST['token'], $_REQUEST['ctree']);
/* do NOT wait for a response
for ($i=0; $i<50; $i++) {
$f = dbRead('ujive', $_REQUEST['token']);
if (!empty($f) && $f != $_REQUEST['ctree']) {
dbUpsert('ujive', $_REQUEST['token'], '');
mylog(', R: '.$f);
die($f);
}
usleep(100000);
}
dbUpsert('ujive', $_REQUEST['token'], '');
mylog(", R: timeout");
die("{$_REQUEST['ctree']} not found, timeout");
*/
die('OK');
}
if (!empty($_REQUEST['ujive'])) {
set_time_limit(0);
while (true) {
$f = dbRead('ujive', $_REQUEST['token']);
if (!empty($f)) {
dbUpsert('ujive', $_REQUEST['token'], '');
die($f);
}
usleep(100000);
}
}
if (!empty($_REQUEST['search'])) {
if (!empty($_REQUEST['speech'])) {
$speech = explode('_', strtr(strtoupper($_REQUEST['speech']), [' '=>'_', '.'=>'_', '-'=>'_']));
$sr = explode('_', $_REQUEST['search']);
foreach ($speech as $i=>$s) {
if ($s != $sr[$i]) {
$locale = json_decode(file_get_contents('./talk_locale.json'), true);
$sk = $locale[$lang=='it'? "it-IT": "en-US"]["search"];
if ($s != $sr[$i] && strlen($s)>1 && !is_numeric($s) && !in_array(strtolower($s), $sk)) {
if (substr($sr[$i], -2, 1)=='0' && is_numeric(substr($sr[$i], -1, 1))) $sr[$i] = substr($sr[$i], 0, -2);
$query = "INSERT INTO speechreplace (speech, replace, lang) VALUES ($1, $2, $3)";
if (isset($_REQUEST['debug'])) echo "$query, array($s, $sr[$i], $lang)<br>\n";
$data = $sql->sql_secure($query, array($s, $sr[$i], $lang));
}
}
// if (isset($_REQUEST['debug'])) die('done');
}
$query = "SELECT speech, replace FROM speechreplace WHERE lang=$1";
$data = $sql->sql_secure($query, array($lang));
......@@ -121,28 +159,30 @@ CREATE TABLE IF NOT EXISTS speech (
}
$search = strtr($_REQUEST['search'], $replace);
if (!empty($search)) {
speechUpsert($_REQUEST['token'], $search);
dbUpsert('speech', $_REQUEST['token'], $search);
for ($i=0; $i<50; $i++) {
$f = speechRead($_REQUEST['token']);
$f = dbRead('speech', $_REQUEST['token']);
if (!empty($f) && $f != $search) {
speechUpsert($_REQUEST['token'], '');
dbUpsert('speech', $_REQUEST['token'], '');
mylog(', R: '.$f);
die($f);
}
usleep(100000);
}
speechUpsert($_REQUEST['token'], '');
dbUpsert('speech', $_REQUEST['token'], '');
mylog(", R: timeout");
die("$search not found, timeout");
}
}
if (isset($_REQUEST['readresult'])) {
speechUpsert($_REQUEST['token'], substr($_REQUEST['readresult'], 0, 15));
dbUpsert('speech', $_REQUEST['token'], substr($_REQUEST['readresult'], 0, 15));
}
if (isset($_REQUEST['read'])) {
set_time_limit(0);
while (true) {
$f = speechRead($_REQUEST['token']);
$f = dbRead('speech', $_REQUEST['token']);
if (!empty($f)) {
speechUpsert($_REQUEST['token'], '');
dbUpsert('speech', $_REQUEST['token'], '');
die($f);
}
usleep(100000);
......@@ -246,7 +286,7 @@ CREATE TABLE IF NOT EXISTS speech (
<script src="../../lib/bootstrap4/bootstrap.bundle.min.js"></script>
<script src="./talk.js"></script>
</head>
<body onLoad='myload()'>
<body onLoad='myload()' style="background-color: rgb(0, 0, 0, 0);">
<div id='transcriptDiv' style='display:none;'></div>
<div style="max-width: 280px; max-height: 30px; text-align: center;">
<audio id='speechText' onended='speakagain();' onerror='showLog("audio err: "+event.error)'></audio>
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment