Sylvatica.

Back to Library

Youtube Summary

js 1/27/2026
12
const axios = require('axios')

function generateRandomDeviceHash() {
  const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
  let result = ''
  for (let i = 0; i < 32; i++) {
    result += chars.charAt(Math.floor(Math.random() * chars.length))
  }
  return result
}

function getRandomOSName() {
  const osNames = [
    'HONOR', 'Samsung', 'Xiaomi', 'OnePlus', 'Huawei',
    'OPPO', 'Vivo', 'Realme', 'Google', 'LG',
    'Sony', 'Motorola', 'Nokia', 'TCL', 'ASUS'
  ]
  return osNames[Math.floor(Math.random() * osNames.length)]
}

function getRandomOSVersion() {
  const versions = ['8', '9', '10', '11', '12', '13', '14']
  return versions[Math.floor(Math.random() * versions.length)]
}

function getRandomPlatform() {
  const platforms = [1, 2, 3]
  return platforms[Math.floor(Math.random() * platforms.length)]
}

async function ytsummarizer(url, { lang = 'id' } = {}) {
  try {
    if (!/youtube.com|youtu.be/.test(url)) throw new Error('Invalid youtube url')

    const randomDeviceHash = generateRandomDeviceHash()
    const randomOSName = getRandomOSName()
    const randomOSVersion = getRandomOSVersion()
    const randomPlatform = getRandomPlatform()

    const { data: a } = await axios.post('https://gw.aoscdn.com/base/passport/v2/login/anonymous', {
      brand_id: 29,
      type: 27,
      platform: randomPlatform,
      cli_os: 'web',
      device_hash: randomDeviceHash,
      os_name: randomOSName,
      os_version: randomOSVersion,
      product_id: 343,
      language: 'en'
    }, {
      headers: {
        'content-type': 'application/json'
      }
    })

    const { data: b } = await axios.post('https://gw.aoscdn.com/app/gitmind/v3/utils/youtube-subtitles/overviews?language=en&product_id=343', {
      url: url,
      language: lang,
      deduct_status: 0
    }, {
      headers: {
        authorization: `Bearer ${a.data.api_token}`,
        'content-type': 'application/json'
      }
    })

    while (true) {
      const { data } = await axios.get(`https://gw.aoscdn.com/app/gitmind/v3/utils/youtube-subtitles/overviews/${b.data.task_id}?language=en&product_id=343`, {
        headers: {
          authorization: `Bearer ${a.data.api_token}`,
          'content-type': 'application/json'
        }
      })

      if (data.data.sum_status === 1) return data.data
      await new Promise(res => setTimeout(res, 1000))
    }
  } catch (error) {
    throw new Error(error.message)
  }
}

module.exports = { ytsummarizer }