rinx-yt
v0.1.0
Published
مكتبة لاستخراج وتحميل ميديا من يوتيوب، تيك توك، انستجرام، سبوتيفاي، ساوندكلاود، بينترست، ميديافاير، فيسبوك، وجيت هوب
Maintainers
Readme
rinyt
مكتبة استخراج وتحميل ميديا من منصات متعددة — يوتيوب، تيك توك، انستجرام، سبوتيفاي، ساوندكلاود، بينترست، ميديافاير، فيسبوك، وجيت هوب.
التثبيت محليًا (قبل النشر على npm)
npm install /path/to/rinytالاستخدام
import { getInfo, download } from 'rinyt';
const info = await getInfo('https://www.youtube.com/watch?v=xxxxxxxxxxx');
console.log(info.title, info.formats);
await download('https://github.com/user/repo', './repo.zip', {
onProgress: ({ percent }) => console.log(percent),
});CLI بسيطة للاختبار:
node test.js "<رابط>" out.extالبنية
src/
index.js # نقطة الدخول - بيكشف المنصة ويوجه للـ platform المناسب
core/
InnertubeClient.js # كلاينت يوتيوب (Android/VR InnerTube API)
context.js # هيدرز وسياق كلاينت يوتيوب
externalApiClient.js # كلاينت موحد لـ azbry API (تيك توك/بعض المنصات)
allinoneApi.js # fallback عام لو منصة معينة فشلت
fallbackApi.js # مصادر يوتيوب الاحتياطية
download.js # التحميل الفعلي + progress
parseVideoInfo.js # تطبيع رد InnerTube لشكل موحد
platforms/
youtube.js, tiktok.js, instagram.js, spotify.js,
soundcloud.js, pinterest.js, mediafire.js, facebook.js,
github.js # كل ملف بيصدّر getInfo() و download()
detect.js # بيحدد المنصة من الرابط
utils/
extractVideoId.js, retry.jsإضافة منصة جديدة
كل ملف جوه platforms/ بيصدّر:
getInfo(url)→ بيرجع{ title, formats: { combined: [...] }, source }download(url, outputPath, options)→ بينزل الملف فعليًا
سجّل المنصة الجديدة في src/platforms/detect.js (تحديد الدومين) وفي src/index.js (إضافتها لكائن platforms).
ملاحظات
- يوتيوب: بيستخدم InnerTube (Android/VR client) بدل قراءة الصفحة وفك تشفير signature يدويًا.
- تيك توك وباقي المنصات المعتمدة على azbry: بتستخدم
apiكمصدر أساسي، مع retry تلقائي على أخطاء الشبكة المؤقتة (retry.js). - جيت هوب: تحميل مباشر بدون أي API خارجي - بيستخدم
api.github.comبس لمعرفة الـ default branch أو ملفات الإصدار. - المشروع ES modules (
"type": "module") - استخدامimportمشrequire.
