Skip to content

Latest commit

Β 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎬 Tube Stream Resolver - Media Stream & Metadata Extractor

Node.js 16+ Zero Dependencies Multi-Platform 4K UHD 320kbps Audio License MIT

Utilitas dan antarmuka baris perintah (CLI & Node.js Module) berkinerja tinggi untuk mengurai (parse), mengekstrak metadata, serta menghasilkan tautan direct streaming URL media video dan audio secara cepat tanpa dependensi eksternal pihak ketiga.

Didesain sangat ringan (pure native standard library) sehingga sangat hemat penggunaan RAM (< 25MB) dan optimal dijalankan di Android Termux, Server VPS Linux, maupun integrasi bot backend (Telegram, Discord, WhatsApp Bot).


🌟 Fitur Utama

  • ⚑ Zero External Dependencies: Dibangun 100% menggunakan modul bawaan Node.js (https, zlib). Tidak perlu npm install paket tambahan yang berat.
  • πŸŽ₯ Resolusi Video Fleksibel: Mendukung resolusi dari 144p, 360p, 720p (HD), 1080p (FHD), 1440p (2K), hingga 2160p (4K UHD).
  • 🎡 Multi-Format & Bitrate Audio: Ekstraksi stream audio ke kontainer MP3, WAV, M4A, OGG, Opus, hingga FLAC dengan kualitas bitrate hingga 320 kbps.
  • πŸ”„ Asynchronous Polling Engine: Mekanisme auto-polling status rendering di sisi upstream yang dilengkapi proteksi timeout dan penanganan transient network error.
  • πŸ“¦ Dual Mode (CLI & Module): Siap dieksekusi langsung dari terminal atau diimpor (require) sebagai library pada aplikasi Node.js.
  • πŸ“± Termux & Multi-Platform Native: Berjalan lancar di lingkungan Android Termux tanpa memerlukan root, emulator browser berat (Puppeteer/Chromium), maupun binary tambahan.

πŸ—οΈ Arsitektur & Alur Kerja

[Klien / Pengguna CLI / Bot Backend]
                 β”‚
                 β–Ό
      [Input URL Media & Opsi Format]
                 β”‚
                 β–Ό
        [yt-scraper.js / index.js]
  β”œβ”€β”€ 1. Sanitasi URL & Normalisasi Bitrate
  β”œβ”€β”€ 2. POST Permintaan Stream via HTTPS Protocol
  └── 3. Dekompresi Payload Respons (Brotli / Gzip / Deflate)
                 β”‚
                 β–Ό
         [Resolusi Upstream API]
                 β”‚
                 β–Ό (Status: In-Progress / Processing)
      [Async Polling Status Tracker]
                 β”‚
                 β–Ό (Status: Finished / Completed)
   [Direct Stream Link & Metadata JSON Siap Digunakan! πŸŽ‰]

⚑ Panduan Instalasi Cepat

1. Prasyarat

Pastikan sistem Anda telah terpasang Node.js (versi 16.0.0 atau lebih baru) dan Git.

Untuk pengguna Android (Termux):

pkg update -y && pkg install git nodejs-lts -y

Untuk pengguna Ubuntu / Debian Linux:

sudo apt update && sudo apt install -y git nodejs

2. Clone Repositori

git clone https://github.com/Cxslin/tube-stream-resolver.git
cd tube-stream-resolver

πŸ’» Penggunaan CLI

1. Ekstraksi Stream Video

# Kualitas Default (MP4 1080p / 2160p)
node yt-scraper.js https://youtu.be/LXb3EKWsInQ

# Spesifik Kualitas 1080p (Full HD)
node yt-scraper.js https://youtu.be/LXb3EKWsInQ --type video --format mp4 --quality 1080p

# Spesifik Kualitas 720p (HD)
node yt-scraper.js https://youtu.be/LXb3EKWsInQ --type video --format mp4 --quality 720p

# Kualitas Maksimal 4K (2160p) Format WebM
node yt-scraper.js https://youtu.be/LXb3EKWsInQ --type video --format webm --quality 2160p

2. Ekstraksi Stream Audio

# Format MP3 dengan Bitrate Tinggi (320kbps)
node yt-scraper.js https://youtu.be/LXb3EKWsInQ --type audio --format mp3 --bitrate 320k

# Format MP3 Standar (128kbps)
node yt-scraper.js https://youtu.be/LXb3EKWsInQ --type audio --format mp3 --bitrate 128k

# Format Lossless / High Fidelity (FLAC / WAV)
node yt-scraper.js https://youtu.be/LXb3EKWsInQ --type audio --format flac
node yt-scraper.js https://youtu.be/LXb3EKWsInQ --type audio --format wav

# Format Ringan (M4A / OGG / Opus)
node yt-scraper.js https://youtu.be/LXb3EKWsInQ --type audio --format m4a

3. Contoh Output JSON

Output respons berupa JSON terstruktur yang mudah diparsing oleh skrip lain:

{
  "status": "completed",
  "progress": 100,
  "title": "COSTA RICA IN 4K 60fps HDR (ULTRA HD)",
  "duration": 314,
  "downloadUrl": "https://vps-example.domain.shop/files/xxxx/output.mp4?token=xxxx&expires=1788501698"
}

πŸ”§ Penggunaan sebagai Modul (Integration)

Anda dapat mengintegrasikan tool ini langsung ke dalam bot Telegram, WhatsApp bot, REST server Express.js, atau skrip otomatisasi Anda:

const { download, waitForDownload } = require('./yt-scraper');
// atau: const { download, waitForDownload } = require('tube-stream-resolver');

async function resolveMedia() {
    try {
        const targetUrl = 'https://youtu.be/LXb3EKWsInQ';
        
        console.log('Memproses URL...');
        const initResult = await download(targetUrl, {
            type: 'video',
            format: 'mp4',
            quality: '1080p'
        });

        if (initResult.statusUrl) {
            console.log('Menunggu antrean pemrosesan...');
            const finalData = await waitForDownload(initResult.statusUrl);
            
            console.log('Judul Media :', finalData.title);
            console.log('Durasi      :', finalData.duration, 'detik');
            console.log('Stream URL  :', finalData.downloadUrl);
        } else {
            console.log('Hasil:', initResult);
        }
    } catch (err) {
        console.error('Terjadi kendala:', err.message);
    }
}

resolveMedia();

πŸ“₯ Cara Mengunduh File Stream

Setelah mendapatkan downloadUrl dari properti JSON:

# Menggunakan cURL
curl -L -o media_output.mp4 "URL_STREAM_DARI_JSON"

# Menggunakan Wget
wget -O media_output.mp4 "URL_STREAM_DARI_JSON"

# Memutar langsung tanpa simpan ke disk (via MPV)
mpv "URL_STREAM_DARI_JSON"

βš™οΈ Referensi Parameter & Opsi

Opsi Tipe Default Pilihan Nilai Keterangan
--type String video video, audio Kategori media yang ingin diekstrak
--format String mp4 mp4, webm, mkv, mp3, wav, m4a, ogg, opus, flac Format kontainer berkas
--quality String 2160p 144p, 240p, 360p, 480p, 720p, 1080p, 1440p, 2160p Resolusi stream video
--bitrate String 128k 320k, 256k, 192k, 128k, 64k Kualitas kompresi audio
--help, -h Boolean - - Menampilkan panduan bantuan CLI

⚠️ Pernyataan & Batasan Tanggung Jawab (Disclaimer)

  1. Tujuan Edukasi & Riset: Repositori ini dibuat dan dipublikasikan semata-mata untuk tujuan analisis protokol metadata web, pengujian latensi jaringan, dan pengarsipan konten domain publik / materi berlisensi terbuka.
  2. Kepatuhan DRM: Perangkat lunak ini TIDAK membobol, mendekripsi, maupun menghindari (circumvent) mekanisme perlindungan hak cipta digital (DRM seperti Widevine, PlayReady, FairPlay) atau kontrol akses teknis berpemilik apa pun.
  3. Penyimpanan Konten: Perangkat lunak ini tidak meng-host, menyimpan, atau mendistribusikan berkas media atau audio berhak cipta apa pun di server repositori ini. Seluruh URL stream dihasilkan secara dinamis melalui antarmuka pihak ketiga.
  4. Tanggung Jawab Pengguna: Pengguna bertanggung jawab penuh atas segala tindakan dan penggunaan skrip ini sesuai dengan hukum hak cipta yang berlaku di wilayah hukum masing-masing serta Ketentuan Layanan (Terms of Service) dari platform asal media.

πŸ“„ Lisensi

Didistribusikan di bawah lisensi MIT. Bebas digunakan, dimodifikasi, dan dipelajari untuk kepentingan riset dan pengembangan mandiri.

About

Fast & lightweight media stream link resolver and metadata extractor in pure Node.js (zero dependencies).

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages