Skip to content

Instantly share code, notes, and snippets.

@techwiz37
Created October 6, 2023 17:54
Show Gist options
  • Select an option

  • Save techwiz37/744579a69768e02193a41610ad0a687c to your computer and use it in GitHub Desktop.

Select an option

Save techwiz37/744579a69768e02193a41610ad0a687c to your computer and use it in GitHub Desktop.
Scrape vn anime
/*
2023 © Amirul Dev
recode sertakan sumber biar semangat update :)
custom request? silahkan donasi
wa: 085157489446
*/
import playwr from 'playwright'
const browser = await playwr.chromium.launch({
headless: false,
acceptDownloads: true, // permission download
downloadsPath: '@amiruldev' // path download
})
const context = await browser.newContext();
const page = await context.newPage();
// ubah ukuran
await page.setViewportSize({ width: 501, height: 700 });
await page.goto('https://plachta-vits-umamusume-voice-synthesizer.hf.space/')
await page.waitForSelector('#tts-input > label > textarea')
// element selector text area
const tArea = '#tts-input > label > textarea'
await page.$eval(tArea, (area) => {
area.value = '' // kosongin value text area
})
// input text area
await page.type(tArea, 'こんにちわ。')
// klik button
await page.click('#component-24')
// menunggu selector
await page.waitForSelector('audio[src]')
const audio = await page.$('#tts-audio audio');
if (audio) {
// ambil link didalam src
const audioSrc = await audio.getAttribute('src');
console.log(`Link audio: https://plachta-vits-umamusume-voice-synthesizer.hf.space/${audioSrc}`)
}
@gamersindo1223
Copy link

gamersindo1223 commented Oct 7, 2023

Kode barunya, Udah ada fitur tambahan:

/*
2023 © Amirul Dev
recode sertakan sumber biar semangat update :)
custom request? silahkan donasi
wa: 085157489446
*/
import { chromium } from 'playwright-chromium'
/*
let text = "hello world!",
  character = "夜兰 Yelan (Genshin Impact)",
  language = "English",
  speed = 1, // Maximum speed is 5
  symbolinput = false
  */
async function ai(text, character, language, speed, symbolinput) {
  /*
  params: ai(text, character, language, speed, symbolinput)
  all parameters must be strings
  */
  return new Promise(async (resolve, reject) => {
    try {
      if(speed > 5 || speed < 0.1) throw (`speed is more/less than 5, expected 1-5 got ${speed}`);
      const browser = await chromium.launch({
        headless: false,
      })
      const context = await browser.newContext();
      const page = await context.newPage();
      // ubah ukuran
      await page.setViewportSize({ width: 501, height: 700 });

      await page.goto('https://plachta-vits-umamusume-voice-synthesizer.hf.space/')
      await page.waitForSelector('#tts-input > label > textarea')

      //Change text area
      const tArea = '#tts-input > label > textarea'
      await page.$eval(tArea, (area) => area.value = '')
      await page.fill(tArea, text)
      //change character selection
      await page.locator("#component-16 > label > select").selectOption(character)
      //change language selection
      await page.locator("#component-17 > label > select").selectOption(language)
      //change speed area
      const sArea = "#component-18 > div.w-full.flex.flex-col > div > input"
      await page.$eval(sArea, (area) => area.value = '')
      await page.fill(sArea, speed.toString())
      //change symbol Input
      await page.$eval("#component-12 > label > input", (el, value) => el.checked = value, symbolinput)
      // klik button
      await page.click('#component-24')

      // menunggu selector
      await page.waitForSelector('audio[src]')

      const audio = await page.$('#tts-audio audio');

      if (audio) {
        const audioSrc = await audio.getAttribute('src');
        await browser.close()
        resolve(`https://plachta-vits-umamusume-voice-synthesizer.hf.space/${audioSrc}`)
      }
    } catch (e) {
      reject(new Error(e))
    }

  })
}
let text = "hello world!",
  character = "夜兰 Yelan (Genshin Impact)",
  language = "English",
  speed = 0.74, // Maximum speed is 5
  symbolinput = false
console.log(await ai(text, character, language, speed, symbolinput))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment