0% found this document useful (0 votes)
29 views6 pages

TTS Integration for LazyPy.ro

Uploaded by

pepesaca666
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views6 pages

TTS Integration for LazyPy.ro

Uploaded by

pepesaca666
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

let cmd, voz, permitBadge, userPermit, banWords = [], isPlaying = false, inT, outT,

volumen, pre;
let textoPendiente = [], showPendiente = [];
let customRewards = {};
const TTS_BASE =
"[Link]
const TTS_BASEG = "[Link]
8&total=1&idx=0&client=tw-ob&prev=input&textlen";
const elements = {
source: [Link]( "#source" ),
audio: [Link]( "#audio" ),
sourceG: [Link]( "#sourceG" ),
audioG: [Link]( "#audioG" ),
};
let service = 'Polly';

let msgQueue = [];

[Link]('onWidgetLoad', function (obj) {


const fieldData = [Link];
channelName = obj["detail"]["channel"]["username"];
cmd = fieldData["command"];
voz = fieldData["voz"]; volumen = fieldData["volumen"];
isUser = fieldData["isUser"]; pre = fieldData["pre"];
isGuion = fieldData["isGuion"];
useCmd = fieldData["useCmd"];
useReward = fieldData["useReward"];
useDefault = fieldData["useDefault"];
reward = fieldData["reward"];
all = fieldData["all"];
inT = fieldData["inT"];
outT = fieldData["outT"];
boolMsg = fieldData["boolMsg"];
configPermiso(fieldData);
setRewards(channelName);
service = [Link]('es')? 'Google' : 'Polly';
audio = [Link]( "#audio" );
source = [Link]( "#source" );
[Link]('ended', end);
[Link]( "#audioG" ).addEventListener('ended', end);
});

[Link]('onEventReceived', function (obj) {


if(test(obj)) return;
let command = cmd + ' ';
let data = [Link];
let id = [Link]['custom-reward-id'];
let isDefault = [Link]['msg-id'] === "highlighted-message";
if (![Link](command) && id == undefined && !isDefault) {
[Link]("no empieza con " + cmd);
return;
}
let badges = [Link];
let isPermit = havePermission(badges, [Link]);
if(isPermit) {
let input = [Link];
if(!continuar(id, isDefault, input)) return;
let txt = [Link](command) ? [Link]([Link]) :
input;
let msg = txt;
if(banW(txt)) return;
txt = isUser?((isGuion? [Link]('_',' ')
: [Link]) + ' ' + pre + ' ' + txt) : (pre + ' ' + txt);
let txt2 = newText(txt);
[Link]('paused ->' + ![Link] + ' ' + !
[Link]);
if(![Link] || ![Link]) {
[Link](txt2);
let pen = {txtPen: txt, dataPen: data };
[Link](pen);
if(boolMsg) showMessage(data, msg);
return;
}
if([Link] > 1) {
for(let i = 1; i < [Link]; i++ ) {
[Link](txt2[i]);
}
if(service == 'Polly') playTTS(txt2[0]);
else ttsGoogle(txt2[0], voz);
if(boolMsg) showMessage(data, msg);
} else {
if(service == 'Polly') playTTS(txt);
else ttsGoogle(txt, voz);
if(boolMsg) showMessage(data, msg);
}

} else {
[Link]('no tiene permiso');
return;
}
});

function banW(txt) {
if([Link] > 0) {
for(let s of banWords) {
if([Link](s)) return true;
}
}
return false;
}

function showMessage(data, txt) {


let message = attachEmotes(data, txt);
[Link]('message');
[Link](message);
let badges = "", badge;
for (let i = 0; i < [Link]; i++) {
badge = [Link][i];
badges += `<img alt="" src="${[Link]}" class="badge"> `;
}
[Link](badges);
let username = [Link] + ":";
let usr = [Link];
let nickname = [Link];
const color = [Link] !== "" ? [Link] : "#" +
(md5(username).substr(26));
username = `<span style="color:${color}">${username}</span>`;
let uid = [Link];
let msgId = [Link];
const element = `
<div data-sender="${uid}" data-msgid="${msgId}" class="message-row animated"
id="msg-0">
<div class="user-box">
${badges}${username}
<span class="user-message">${message}</span>
</div>
</div>`;
[Link](element);
$('#main').html(element);
$('#main').removeClass(outT + "Out initialHide");
$('#main').addClass(inT + "In");
}

function attachEmotes(msg, txt) {


let text = html_encode(txt);
let data = [Link];
return text
.replace(
/([^\s]*)/gi,
function (m, key) {
let result = [Link](emote => {
return html_encode([Link]) === key
});
if (typeof result[0] !== "undefined") {
let url = result[0]['urls'][1];
return `<img alt="" src="${url}" class="badge"/>`;
} else return key;

}
);
}

function end() {
$('#main').removeClass(inT + "In");
$('#main').addClass(outT + "Out");
if([Link] > 0 && [Link] && [Link])
{
let txt = textoPendiente[0];
if(service == 'Polly') playTTS(txt);
else ttsGoogle(txt, voz);
if([Link] > 0){
[Link](txt[0].trim());
let msgPen = showPendiente[0].txtPen;
let dataPen = showPendiente[0].dataPen;
[Link](msgPen);
[Link]([Link](txt[0].trim()));
if([Link](txt[0].trim())) {
showMessage(dataPen, msgPen);
[Link](0, 1);
}
}
[Link](0, 1);
}
}

function continuar(id, isDefault, input) {


[Link]('xd');
let bolReward = false;
if(id != undefined) {
bolReward = customRewards[id].name == reward && useReward;
}
let bolDefault = isDefault && useDefault;
let bolCmd = [Link](cmd) && useCmd;
[Link]('xdperm');
[Link]('permiso ' + (bolReward && bolDefault && bolCmd));
[Link]('xdre');
[Link](bolReward + ' ' + bolDefault + ' ' + bolCmd);
return bolReward || bolDefault || bolCmd;
}

function configPermiso(fieldData) {
let possibleBadges = ['subscriber', 'vip', 'moderator', 'founder'];
permitBadge = ['broadcaster'];
for(let x of possibleBadges) {
if(fieldData[x]) [Link](x);
if(x == 'founder' && fieldData['subscriber']) [Link](x);
}
userPermit = fieldData["listUser"];
userPermit = [Link](/\s/g, '').toLowerCase();
userPermit = [Link](',');
banWords = fieldData["listBans"];
banWords = [Link](/\s/g, '').toLowerCase();
banWords = [Link](',');
}

function havePermission(badges, nick) {


if(all) return true;
let badgeBol = [Link](b => [Link]([Link]));
let userBol = [Link](nick);
[Link](badgeBol + ' ' + userBol);
return badgeBol || userBol;
}

function setRewards(channelName) {
$.get({
type: 'GET',
url: `[Link]
success: function(data) {
let obj = [Link](data);
let rewards =
obj[0].[Link];
for(let reward of rewards) {
customRewards[reward['id']] = {"cost": reward['cost'], "name":
reward['title']};
}
[Link](customRewards);
}
});
}

function html_encode(e) {
return [Link](/[<>"^]/g, function (e) {
return "&#" + [Link](0) + ";";
});
}
async function callAPI(url) {
const speak = await fetch(url, {
method: "post",
headers: {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "*"
}
}).then(
function (res) {
[Link](res);
return [Link]();
},
function (err) {
callAPI(url);
}
);
return speak;
}

async function playTTS(text) {


if ([Link]) {
const str = `service=${service}&voice=Mia&text=${encodeURIComponent(text)}`;
const speak = await (callAPI(`${TTS_BASE}?${str}`));

if (![Link]) {
return;
}
// TODO: Switch to Web Audio API instead of using Audio elements.
const mp3 = speak.speak_url;
[Link] = mp3;
const audio = [Link];
[Link]();
[Link] = (volumen / 100);
[Link]();
}
}

function ttsGoogle(msg, idioma){


[Link]('google');
const audio = [Link];
let audioDuration=0;
const message = encodeURIComponent(msg);
const messageLength = [Link];
let url = `${TTS_BASEG}=${messageLength}&q=${message}`;
url += `&tl=${idioma}&ttsspeed=1`
[Link] = url;

[Link]();
[Link] = (volumen / 100);
[Link]();
}

function test(obj) {
if ([Link]) {
if ([Link] === 'widget-button') {
[Link](obj);
if ([Link] === 'test-tts') {
let txt = isUser?((isGuion? [Link]('_',' ')
: channelName) + pre + ' Esto es una Prueba') : pre + ' Esto
es una Prueba';
[Link](txt);
if(service == 'Polly') playTTS(txt);
else ttsGoogle(txt, voz);
if(boolMsg) {
let element =
'<div data-sender="232038609" data-msgid="a40a5ebb-ae1f-4a59-8e3e-
7920167d3cdd" class="message-row animated" id="msg-0">'+
'<div class="user-box"><img alt="" src="[Link]
[Link]/badges/v1/5527c58c-fb7d-422d-b71b-f309dcb85cc1/3" class="badge">'+
'<span style="color:#008df7">'+ channelName + ':</span></div><div
class="user-message">Esto es una Prueba</div></div>';

$('#main').html(element);
$('#main').removeClass(outT + "Out initialHide");
$('#main').addClass(inT + "In");
}
return true;
}
}
}
return false;
}

function newText(txt) {
let txt2 = [Link](' ');
let newTxt = '';
let vecTxt = [];
for(let i = 0; i < [Link]; i++) {
if(([Link] + txt2[i].length + 1) <= 180) {
newTxt += ' ' + txt2[i];
} else {
if(txt2[i].length > 180) {
[Link](txt2[i].match(/.{1,3}/g))
} else {
[Link](newTxt);
newTxt = txt2[i];
}
}
}
if(newTxt != '')[Link](newTxt);
return vecTxt;
}

You might also like