اذهب إلى المحتوى
  • 0

كيف استطيع تحميل المقاطع من اليوتيوب عن طريق الرابط ؟ باستخدام Node js

Samer Alashqar

السؤال

السلام عليكم ..

اريد تحميل مقاطع من اليوتيوب عن طريق رابط المقطع  لكن لا اعرف كيف الطريقة هل هناك api استطيع الاتصال به ؟ اتمنى المساعدة 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

وعليكم السلام،

هنالك package خاصة بهذا الأمر تسمى youtube-dl

npm install youtube-dl

طريقة تحميل الفيديو باستخدامها : 

const fs = require('fs')
const youtubedl = require('youtube-dl')

const video = youtubedl('http://www.youtube.com/watch?v=90AiXO1pAiA',
  // Optional arguments passed to youtube-dl.
  ['--format=18'],
  // Additional options can be given for calling `child_process.execFile()`.
  { cwd: __dirname })

// Will be called when the download starts.
video.on('info', function(info) {
  console.log('Download started')
  console.log('filename: ' + info._filename)
  console.log('size: ' + info.size)
})

video.pipe(fs.createWriteStream('myvideo.mp4'))

يمكنك معاينت صفحتها على npm من هنا

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 41 دقائق مضت قال عمر قره محمد:

وعليكم السلام،

هنالك package خاصة بهذا الأمر تسمى youtube-dl


npm install youtube-dl

طريقة تحميل الفيديو باستخدامها : 


const fs = require('fs')
const youtubedl = require('youtube-dl')

const video = youtubedl('http://www.youtube.com/watch?v=90AiXO1pAiA',
  // Optional arguments passed to youtube-dl.
  ['--format=18'],
  // Additional options can be given for calling `child_process.execFile()`.
  { cwd: __dirname })

// Will be called when the download starts.
video.on('info', function(info) {
  console.log('Download started')
  console.log('filename: ' + info._filename)
  console.log('size: ' + info.size)
})

video.pipe(fs.createWriteStream('myvideo.mp4'))

يمكنك معاينت صفحتها على npm من هنا

قمت بتجربة هذا البكج لكن لايتم تحميله لدي لا اعلم لماذا

Error: Invalid version range
    at module.exports (D:\Store project\node_modules\bin-version-check\index.js:12:25)
    at Object.<anonymous> (D:\Store project\node_modules\bin-version-check-cli\cli.js:29:1)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)
    at internal/main/run_main_module.js:17:47
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! youtube-dl@3.5.0 check: `bin-version-check python '>=2'`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the youtube-dl@3.5.0 check script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\sloos\AppData\Roaming\npm-cache\_logs\2022-07-16T07_07_18_571Z-debug.log
npm WARN rollback Rolling back arrify@1.0.1 failed (this is probably harmless): EPERM: operation not permitted, lstat 'D:\Store project\node_modules\minimist-options\node_modules'npm WARN rollback Rolling back got@11.8.5 failed (this is probably harmless): EPERM: operation not permitted, scandir 'D:\Store project\node_modules\youtube-dl\node_modules'npm WARN api-store-project@1.0.0 No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! youtube-dl@3.5.0 postinstall: `npm run check && npm run download`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the youtube-dl@3.5.0 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\sloos\AppData\Roaming\npm-cache\_logs\2022-07-16T07_07_18_876Z-debug.log

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 14 دقائق مضت قال عمر قره محمد:

قم بتنزيل python على جهازك وجرب مرة اخرى

https://www.python.org/downloads/

قمت بتنزيل بايثون ولم تحل المشكلة 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 16 دقائق مضت قال Samer Alashqar:

قمت بتنزيل بايثون ولم تحل المشكلة 

يبدو ان تم اهمال الـ package المسماة youtube-dl

جرب هذه الـ package  البديلة : youtube-dl-exec

للتنزيل

 

npm install youtube-dl-exec --save
ملاحظة : ستحتاج لتحميل python3 قبل التنزيل

لتحميل الفيديو 

const youtubedl = require('youtube-dl-exec')

youtubedl('https://www.youtube.com/watch?v=6xKWiCMKKJg', {
  dumpSingleJson: true,
  noWarnings: true,
  noCallHome: true,
  noCheckCertificate: true,
  preferFreeFormats: true,
  youtubeSkipDashManifest: true,
  referer: 'https://www.youtube.com/watch?v=6xKWiCMKKJg'
}).then(output => console.log(output))

 

صفحتها على npm

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ الآن قال عمر قره محمد:

يبدو ان تم اهمال الـ package المسماة youtube-dl

جرب هذه الـ package  البديلة : youtube-dl-exec

للتنزيل


npm install youtube-dl-exec --save

لتحميل الفيديو 


const youtubedl = require('youtube-dl-exec')

youtubedl('https://www.youtube.com/watch?v=6xKWiCMKKJg', {
  dumpSingleJson: true,
  noWarnings: true,
  noCallHome: true,
  noCheckCertificate: true,
  preferFreeFormats: true,
  youtubeSkipDashManifest: true,
  referer: 'https://www.youtube.com/watch?v=6xKWiCMKKJg'
}).then(output => console.log(output))

 

شكرا لك اخي عمل لدي بمجرد اضافة هذا الامر 

npm i --save --force youtube-dl

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك إستعمال مكتبة ytdl-core والتي توفر لك إمكانية تحميل فيديوهات من اليوتيوب بأي جودة تختارها:
عليك في البداية تثبيت الحزمة من خلال الأمر التالي:

npm i ytdl-core@latest

# أو إذا كنت تستعمل yarn
yarn add ytdl-core@latest

بعد ذلك يمكنك أن تقوم بإستخدامها بالشكل التالي:

const fs = require('fs');
const ytdl = require('ytdl-core');

ytdl('https://www.youtube.com/watch?v=KKfAuQrwzTY')
  .pipe(fs.createWriteStream('video-file-name.mp4'));

يمكن حتى إستعمالها لتحميل فيديوهات Shorts بنفس الطريقة:

ytdl('https://www.youtube.com/shorts/h_ZoMlNjANY')
  .pipe(fs.createWriteStream('video-file-name-2.mp4'));

يمكنك كذلك التحكم في جودة الفيديو الذي سيتم تحميله:

const fs = require('fs');
const ytdl = require('ytdl-core');

ytdl('https://www.youtube.com/shorts/h_ZoMlNjANY', {
  quality: 'highest'
})
  .pipe(fs.createWriteStream('video.mp4'));

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 22 ساعات قال سامح أشرف:

يمكنك إستعمال مكتبة ytdl-core والتي توفر لك إمكانية تحميل فيديوهات من اليوتيوب بأي جودة تختارها:
عليك في البداية تثبيت الحزمة من خلال الأمر التالي:


npm i ytdl-core@latest

# أو إذا كنت تستعمل yarn
yarn add ytdl-core@latest

بعد ذلك يمكنك أن تقوم بإستخدامها بالشكل التالي:


const fs = require('fs');
const ytdl = require('ytdl-core');

ytdl('https://www.youtube.com/watch?v=KKfAuQrwzTY')
  .pipe(fs.createWriteStream('video-file-name.mp4'));

يمكن حتى إستعمالها لتحميل فيديوهات Shorts بنفس الطريقة:


ytdl('https://www.youtube.com/shorts/h_ZoMlNjANY')
  .pipe(fs.createWriteStream('video-file-name-2.mp4'));

يمكنك كذلك التحكم في جودة الفيديو الذي سيتم تحميله:


const fs = require('fs');
const ytdl = require('ytdl-core');

ytdl('https://www.youtube.com/shorts/h_ZoMlNjANY', {
  quality: 'highest'
})
  .pipe(fs.createWriteStream('video.mp4'));

 

كيف استطيع ان اجعل الفيديو يقوم بالتحميل على نفس الجهاز مثل الهاتف وليس على اللاب توب لدي (هوست الموقع) ؟ 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 6 ساعات قال Samer Alashqar:

كيف استطيع ان اجعل الفيديو يقوم بالتحميل على نفس الجهاز مثل الهاتف وليس على اللاب توب لدي (هوست الموقع) ؟ 

يمكنك اعتماد نفس الطريقة، مع تعديل بسيط.

  • حفظ الفيديو على السيرفر لأن الانترنت لديك سيكون سريع 
  • توجيه الفيديو للمتصفح 
  • حذف الفيديو من التخزين المحلي على السيرفر خاصتك

يمكنك اتباع هذه الشيفرة لإعادة توجيه الملف الذي حفظته في الخادم للمتصفح

res.setHeader('Content-Type', 'video/mp4');

res.status(200).sendFile(full_path, function (err) {
    if (err) { ... } else { ... }
});

ثم بعد نهايتها يمكنك حذف الملف بالدالة unlink من fs

fs.unlink(path, (err) => {
  if (err) throw err //handle your error the way you want to;
  console.log('path/file.txt was deleted');//or else the file will be deleted
    });
  );

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...