Skip to content

Instantly share code, notes, and snippets.

@darkdeathoriginal
Last active August 10, 2023 09:03
Show Gist options
  • Save darkdeathoriginal/dbee4657edd511a3b81276c7f14ed0dc to your computer and use it in GitHub Desktop.
Save darkdeathoriginal/dbee4657edd511a3b81276c7f14ed0dc to your computer and use it in GitHub Desktop.
let {Module} = require('../main');
const {
getJson,
gtts
} = require('./misc/misc');
const translate = require('@vitalets/google-translate-api');
const fetch = require("node-fetch")
const fs = require("fs")
const ad=process.env.AUDIO
/* Module({
pattern: 'xbot ?(.*)',
fromMe: false
*/
Module({on:"text",fromMe:false},async (m)=>{
if(!m.fromMe&&!m.message.startsWith(".")&&!m.message.startsWith(">")&&m.message){
let message=encodeURIComponent(m.message)
let id=(m.sender=="919072215994@s.whatsapp.net")?1:m.sender.split("@")[0]
let a=await getJson(`http://api.brainshop.ai/get?bid=172989&key=jtN93UqGRTjKa1uE&uid=${id}&msg=${message}`)
let url= await getAll(a.cnt)
await m.client.sendMessage(m.jid, {
audio:{url:url},
mimetype: 'audio/mp4',
ptt: true,
waveform: Array.from({length: 40}, () => Math.floor(Math.random() * 99))
}, {
quoted: m.data
});
//await m.client.sendMessage(m.jid,{audio:b},{quoted:m.data})
}
})
async function getBody(text){
var requestOptions = {
method: 'POST',
redirect: 'follow'
};
return await fetch(`http://127.0.0.1:50021/audio_query_from_preset?text=${text}&preset_id=1`, requestOptions)
.then(response => response.text())
.catch(error => console.log('error', error));
}
async function getAudio(body){
var myHeaders = new fetch.Headers();
myHeaders.append("Content-Type", "application/json");
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: body,
redirect: 'follow'
};
const rn=(ad=="nil")? Math.floor(Math.random() * 54):ad;
const response = await fetch("http://127.0.0.1:50021/synthesis?speaker="+rn, requestOptions);
const contentType = response.headers.get('Content-Type');
const fileExtension = contentType === 'audio/wav' ? 'wav' : 'mp3';
const dest = fs.createWriteStream(`./audio.${fileExtension}`);
return new Promise((resolve, reject) => {
response.body.pipe(dest);
response.body.on('error', reject);
dest.on('finish', () => {
fs.readFile(`./audio.${fileExtension}`, (err, buffer) => {
if (err) {
reject(err);
} else {
resolve(buffer);
}
});
});
dest.on('error', reject);
});
}
function getRandomString() {
const characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
let result = '';
for (let i = 0; i < 20; i++) {
result += characters[Math.floor(Math.random() * characters.length)];
}
return result;
}
function getAll(text){
return new Promise((resolve, reject) => {
const ids = getRandomString()
async function main (){
let resp = await fetch("https://api.fakeyou.com/tts/inference", {
"headers": {
"accept": "application/json",
"accept-language": "en-GB,en-US;q=0.9,en;q=0.8,ml;q=0.7",
"cache-control": "no-cache",
"content-type": "application/json",
"pragma": "no-cache",
"sec-ch-ua": "\"Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"115\", \"Chromium\";v=\"115\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-site",
"cookie": "_ga=GA1.1.1198997423.1691654653; _ga_525G5MXFJG=GS1.1.1691654653.1.1.1691655300.34.0.0",
"Referer": "https://fakeyou.com/",
"Referrer-Policy": "strict-origin-when-cross-origin"
},
"body": `{\"uuid_idempotency_token\":\"${ids}\",\"tts_model_token\":\"TM:vfq22020ena5\",\"inference_text\":\"${text}\"}`,
"method": "POST"
}).then(response=>{return response.json()}).catch(err=>{main()})
console.log(resp);
let a = await getImg(resp.inference_job_token)
console.log("https://storage.googleapis.com/vocodes-public"+a.state.maybe_public_bucket_wav_audio_path);
resolve("https://storage.googleapis.com/vocodes-public"+a.state.maybe_public_bucket_wav_audio_path)
}
main()
async function getImg(id) {
return new Promise(async(resolve) => {
let a = await fetch(`https://api.fakeyou.com/tts/job/${id}`).then(response=>{return response.json()}).catch(err=>{
console.log(err);
resolve(getImg(id))
})
console.log(a);
if(a.state.status != "complete_success"){
setTimeout(() => {
resolve(getImg(id))
}, 1000);
}
else{
resolve(a) ;
}
})
}
})
}
module.exports={getBody,getAudio}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment