@xbibzlibrary/teraboxscraper
v1.0.0
Published
The ultimate, highly-optimized, and complex Terabox Downloader and Scraper library for Node.js, designed for maximum stability and cross-platform terminal compatibility. Built with modern TypeScript.
Downloads
13
Maintainers
Readme
🚀 Fitur Utama (Bukan Fitur Sederhana!)
Library ini dirancang untuk melampaui batas-batas scraper biasa, menawarkan kompleksitas dan keandalan tingkat tinggi:
- Mekanisme Multi-Tahap Canggih: Menggunakan kombinasi Web Scraping (
cheerio) untuk mengekstrak parameter tersembunyi (shareid,uk,sign,timestamp) dari halaman HTML, diikuti dengan panggilan ke Internal Terabox API untuk mendapatkan direct download link yang valid. - Manajemen Koneksi Powerfull: Menggunakan
axiosdengan custom HTTP client yang mendukung konfigurasi Proxy dan User-Agent kustom untuk menghindari rate-limiting dan blocking. - Logging Terstruktur dan Menarik: Integrasi
pinodanpino-prettyuntuk sistem logging yang cepat, terstruktur, dan disajikan dengan indah di terminal (tanpa emoji!). - Download Stream-Based dengan Progress Bar: Mendukung pengunduhan file berbasis stream yang efisien, lengkap dengan callback untuk membuat progress bar yang informatif (kecepatan, ETA, persentase) di terminal.
- Penanganan Error Maksimal: Setiap fungsi dikemas dalam objek
ScraperResponse<T>yang secara eksplisit mengelola statussuccess,data, danerrordengan kode kesalahan yang terperinci (E_NETWORK_FAIL,E_PARSING_FAIL, dll.). - Dibangun dengan TypeScript: Memberikan type safety dan developer experience terbaik untuk proyek-proyek modern.
🛠️ Instalasi
Pastikan Anda memiliki Node.js (v18+) terinstal.
npm install @xbibzlibrary/teraboxscraper
# atau
yarn add @xbibzlibrary/teraboxscraper📚 Dokumentasi & Cara Kerja
1. Mendapatkan Cookie (Kunci Utama)
Terabox memerlukan otentikasi untuk mengakses direct download link. Anda wajib menyediakan cookie ndus dari sesi Terabox yang sudah login.
- Buka Terabox di browser Anda (disarankan Chrome/Edge).
- Login ke akun Anda.
- Buka Developer Tools (F12), buka tab Application -> Storage -> Cookies.
- Cari cookie dengan nama
ndusdan salin nilainya. - Format cookie yang digunakan adalah:
"lang=en; ndus=NILAI_NDUS_ANDA;"
2. Penggunaan Dasar
Berikut adalah contoh penggunaan yang kompleks namun jelas untuk mendapatkan info file dan mengunduhnya.
import { TeraboxScraper, DownloadProgress, Logger, bytesToHuman } from '@xbibzlibrary/teraboxscraper';
import * as path from 'path';
// Inisialisasi Logger untuk output terminal yang menarik
const logger = Logger.getInstance({ level: 'info', prettyPrint: true }).getLogger();
// Konfigurasi Anda
const YOUR_COOKIE = "lang=en; ndus=YOUR_NDUS_COOKIE_HERE;";
const SHARE_LINK = "https://www.terabox.app/s/xxxxxxxxxxxxxxxx";
/**
* Fungsi progress bar kustom yang powerfull untuk terminal
*/
function customProgressBar(progress: DownloadProgress): void {
const totalSizeHuman = bytesToHuman(progress.totalSize);
const downloadedHuman = bytesToHuman(progress.downloaded);
const speedHuman = bytesToHuman(progress.speedBps) + '/s';
const eta = progress.etaSeconds === Infinity ? 'N/A' : `${progress.etaSeconds.toFixed(0)}s`;
const barLength = 40;
const filledLength = Math.round(barLength * progress.percentage / 100);
const emptyLength = barLength - filledLength;
const bar = '█'.repeat(filledLength) + '░'.repeat(emptyLength);
process.stdout.write(
`\r[${bar}] ${progress.percentage.toFixed(2)}% | ${downloadedHuman} / ${totalSizeHuman} | Speed: ${speedHuman} | ETA: ${eta}`
);
}
async function startDownload() {
try {
// 1. Inisialisasi Scraper
const scraper = new TeraboxScraper({
cookie: YOUR_COOKIE,
timeout: 60000,
// proxy: 'http://user:pass@host:port', // Opsi Proxy
});
// 2. Ambil Informasi File (Tahap Scraping & API)
logger.info(`Memproses link: ${SHARE_LINK}`);
const infoResponse = await scraper.getFileInfo(SHARE_LINK);
if (!infoResponse.success || !infoResponse.data) {
logger.error('Gagal mendapatkan info file.', infoResponse.error);
return;
}
const fileInfo = infoResponse.data;
logger.info('Info File Ditemukan:', {
Nama: fileInfo.fileName,
Ukuran: fileInfo.fileSizeHuman,
});
// 3. Unduh File (Tahap Download Stream)
const downloadDir = path.join(process.cwd(), 'downloads');
logger.info(`Memulai pengunduhan ke: ${downloadDir}`);
const downloadResponse = await scraper.downloadFile(
fileInfo,
downloadDir,
customProgressBar // Callback progress bar
);
// Bersihkan baris progress bar
process.stdout.write('\r' + ' '.repeat(100) + '\r');
if (!downloadResponse.success || !downloadResponse.data) {
logger.error('Pengunduhan gagal total.', downloadResponse.error);
return;
}
logger.info('✅ Pengunduhan Selesai!', {
path: downloadResponse.data.filePath,
durasi: `${(downloadResponse.data.durationMs / 1000).toFixed(2)} detik`,
});
} catch (e) {
logger.fatal('Terjadi kesalahan kritis tak terduga.', { error: e });
}
}
startDownload();👤 Informasi Pengembang
| Kategori | Detail | | :--- | :--- | | Author | Xbibz Official | | Telegram | t.me/XbibzOfficial | | TikTok | tiktok.com/@XbibzOfficiall | | Donasi | ko-fi.com/XbibzOfficial |
📄 Lisensi
Library ini dirilis di bawah lisensi ISC.
