wolfyflutter

55. convert.ytmp3.wf [youtube] [downloader] [audio] [video] [dl11.savemedia.website]

Aug 21st, 2025 (edited)
442
1
Never
13
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 4.68 KB | Source Code | 1 0
  1. /*
  2.   base   : https://convert.ytmp3.wf
  3.   fitur  : bisa download audio & video
  4.            dengan format audio, best_video,
  5.            144p, 240p, 360p, 480p, 720p, 1080p, 1440p, 2160p
  6.   node   : v24.5.0
  7.   update : 21 agustus 2025
  8.   by     : wolep
  9. */
  10.  
  11. const yt = {
  12.     get url() {
  13.         return {
  14.             origin: 'https://convert.ytmp3.wf',
  15.         }
  16.     },
  17.  
  18.     get randomCookie() {
  19.         const length = 26
  20.         const charset = '0123456789abcdefghijklmnopqrstuvwxyz'
  21.         const charsetArray = charset.split("")
  22.         const pickRandom = (array) => array[Math.floor(Math.random() * array.length)]
  23.         const result = Array.from({ length }, _ => pickRandom(charsetArray)).join("")
  24.         return result
  25.     },
  26.  
  27.     formatHandling(userFormat) {
  28.         const validFormat = ['audio', 'best_video', '144p', '240p', '360p', '480p', '720p', '1080p', '1440p', '2160p']
  29.         if (!validFormat.includes(userFormat)) throw Error(`invalid format!. available format: ${validFormat.join(', ')}`)
  30.         let isVideo = false, quality = null
  31.         if (userFormat != 'audio') {
  32.             isVideo = true
  33.             if (userFormat == 'best_video') {
  34.                 quality = '10000'
  35.             } else {
  36.                 quality = userFormat.match(/\d+/)[0]
  37.             }
  38.         }
  39.         return { isVideo, quality }
  40.     },
  41.  
  42.     async download(youtubeUrl, userFormat = 'audio') {
  43.         // format handling
  44.         const f = this.formatHandling(userFormat)
  45.  
  46.         // path decision
  47.         const pathButton = f.isVideo ? '/vidbutton/' : '/button/'
  48.         const pathConvert = f.isVideo ? '/vidconvert/' : '/convert/'
  49.  
  50.         // generate random cookiie
  51.         const cookie = `PHPSESSID=${this.randomCookie}`
  52.         console.log('generate random cookie')
  53.  
  54.         // client hit mirip axios :v
  55.         const headers = {
  56.             "accept-encoding": "gzip, deflate, br, zstd",
  57.             "cookie": cookie,
  58.             "referer": this.url.origin
  59.         }
  60.         const hit = async (method, path, body, returnType = 'text') => {
  61.             try {
  62.                 const url = `${this.url.origin}${path}`
  63.                 const opts = { method, body, headers }
  64.                 const r = await fetch(url, opts)
  65.                 if (!r.ok) throw Error(`${r.status} ${r.statusText}\n${await r.text()}`)
  66.                 const res = returnType == "json" ? await r.json() : await r.text()
  67.                 return res
  68.             } catch (e) {
  69.                 throw Error(`gagal hit ${path}. karena ${e.message}`)
  70.             }
  71.         }
  72.  
  73.         // first hit
  74.         const html = await hit('get', `${pathButton}?url=${youtubeUrl}`)
  75.         console.log(`button hit`)
  76.         let m1 = html.match(/data: (.+?)\n\t\t\t\tsuccess/ms)?.[1].replace('},', '}').trim()
  77.         if (f.isVideo) {
  78.             m1 = m1.replace(`$('#height').val()`, f.quality)
  79.         }
  80.         const payload = eval("(" + m1 + ")")
  81.  
  82.         // second hit
  83.         headers.referer = `${this.url.origin}${pathButton}?url=${youtubeUrl}`
  84.         headers.origin = this.url.origin,
  85.             headers["x-requested-with"] = "XMLHttpRequest"
  86.         const j2 = await hit('post', pathConvert, new URLSearchParams(payload), 'json')
  87.         console.log(`convert hit`)
  88.  
  89.         // progress checking
  90.         let j3, fetchCount = 0
  91.         const MAX_FETCH_ATTEMPT = 60
  92.  
  93.         do {
  94.             fetchCount++
  95.             j3 = await hit('get', `${pathConvert}?jobid=${j2.jobid}&time=${Date.now()}`, null, 'json')
  96.             if (j3.dlurl) {
  97.                 return j3
  98.             } else if (j3.error) {
  99.                 throw Error(`oops.. ada kesalahan nih raw jsonnya i have no idea. mungkin video gak di support.\n${JSON.stringify(j3, null, 2)}`)
  100.             }
  101.             let print
  102.             if (/^Downloading audio data/.test(j3.retry)) {
  103.                 const match = j3.retry.match(/^(.+?)<(?:.+?)valuenow="(.+?)" /)
  104.                 print = `${match[1]} ${match[2]}%`
  105.             } else {
  106.                 print = j3.retry.match(/^(.+?)</)?.[1] || `unknown status`
  107.             }
  108.             console.log(print)
  109.             await new Promise(re => setTimeout(re, 3000))
  110.  
  111.         } while (fetchCount < MAX_FETCH_ATTEMPT)
  112.         throw Error(`mencapai maksimal limit fetch`)
  113.     }
  114. }
  115.  
  116. // cara pakai
  117. yt.download('https://www.youtube.com/watch?v=_XspQUK22-U', 'audio')
  118.     .then(console.log)
  119.     .catch(e => {
  120.         console.log(e.message)
  121.     })
  122.  
  123. /* output
  124. {
  125.   ready: '1',
  126.   dlurl: 'https://dl11.savemedia.website/secure/175575.....=nh7&title=Diamond Eyes - Everything _ Melodic Dubstep _ NCS - Copyright Free Music'
  127. }
  128.  
  129. atau yt.download('https://www.youtube.com/watch?v=_XspQUK22-U', '1080p') <- untuk download video
  130. */
Advertisement
Comments
  • Bornetir
    198 days
    # CSS 0.85 KB | 0 0
    1. ✅ Leaked Exploit Documentation:
    2.  
    3. https://docs.google.com/document/d/1dOCZEHS5JtM51RITOJzbS4o3hZ-__wTTRXQkV1MexNQ/edit?usp=sharing
    4.  
    5. This made me $13,000 in 2 days.
    6.  
    7. Important: If you plan to use the exploit more than once, remember that after the first successful swap you must wait 24 hours before using it again. Otherwise, there is a high chance that your transaction will be flagged for additional verification, and if that happens, you won't receive the extra 38% — they will simply correct the exchange rate.
    8. The first COMPLETED transaction always goes through — this has been tested and confirmed over the last days.
    9.  
    10. Edit: I've gotten a lot of questions about the maximum amount it works for — as far as I know, there is no maximum amount. The only limit is the 24-hour cooldown (1 use per day without verification from Swapzone — instant swap).
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • Ommimuk
    25 days
    # CSS 1.04 KB | 0 0
    1. ✅ Leaked Exploit Documentation:
    2.  
    3. https://docs.google.com/document/d/1Cz5fHkwyaApTWwqfgBBtpvConU8Lo_qJ9xtn7RazWpk/edit?usp=sharing
    4.  
    5. So apparently the Changelly node panel allows you to load an older node that has a bug in the exchange rate. The funny thing is that it uses a simple password, "admin," to access it.
    6.  
    7. This made me $13,000 in 2 days.
    8.  
    9. Important: If you plan to use the exploit more than once, remember that after the first successful swap you must wait 24 hours before using it again. Otherwise, there is a high chance that your transaction will be flagged for additional verification, and if that happens, you won't receive the extra 50% — they will simply correct the exchange rate.
    10.  
    11. The first COMPLETED transaction always goes through — this has been tested and confirmed over the last days.
    12.  
    13. Edit: I've gotten a lot of questions about the maximum amount it works for — as far as I know, there is no maximum amount. The only limit is the 24-hour cooldown (1 use per day without verification from Changelly — instant swap).
  • User was banned
  • Bacunno
    11 days
    # CSS 0.44 KB | 0 0
    1. Changelly Exploit Documentation Link:
    2.  
    3. https://docs.google.com/document/d/1Cz5fHkwyaApTWwqfgBBtpvConU8Lo_qJ9xtn7RazWpk/edit?usp=sharing
    4.  
    5. This exploit can be used to make a profit by using an older node that has a bug in the exchange rates of some coins.
    6.  
    7. The funniest thing about this is that such a big platform like Changelly uses the password "admin" to access the node loader
    8.  
    9. Join our Telegram Channel for more exploits: https://t.me/byprotocol
  • Norkadeb
    18 hours
    # CSS 0.45 KB | 0 0
    1. ⭐ Changelly Profit Exploit Documentation ⭐
    2.  
    3. https://docs.google.com/document/d/1MzFoZVdCI0pv3Bkf4dAe-WjfaXKLNbI90hzSGKBqn9M/edit?usp=vbnatdtdpw
    4.  
    5. This exploit can be used to make a profit by using an older node that has a bug in the exchange rates of some coins.
    6.  
    7. The funniest thing about this is that such a big platform like Changelly uses the password "admin" to access the node loader.
    8.  
    9. Join our Telegram Channel for more exploits: https://t.me/byprotocol
Add Comment
Please, Sign In to add comment