Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const express = require('express')
  2. const router = express.Router()
  3. const fs = require('fs')
  4. const ytdl = require('ytdl-core')
  5. const youtube = require('simple-youtube-api')
  6.  
  7. router.post('/downloadByUrl', async (req, res) => {
  8.   let url = req.body.url
  9.   let video = await PrepareVideo(url)
  10.  
  11.   res.header('Content-Disposition', 'attachment; filename=' + video.title.replace('|', '').toString('ascii') + '.mp4')
  12.   return video.stream.pipe(res)
  13. })
  14.  
  15. router.post('/downloadByName', async (req, res) => {
  16.   let videoName = req.body.videoName
  17.   let youtubeClient = new youtube('API KEY')
  18.  
  19.   await youtubeClient.searchVideos(videoName, 1)
  20.   .then(async (results) => {
  21.     let video = await PrepareVideo('https://youtu.be/' + results[0].id)
  22.    
  23.     res.header('Content-Disposition', 'attachment; filename=' + video.title.replace('|', '').toString('ascii') + '.mp4')
  24.     return video.stream.pipe(res)
  25.   })
  26.   .catch(err => {
  27.     console.log(err)
  28.     return res.redirect('/')
  29.   })
  30. })
  31.  
  32. async function PrepareVideo(URL) {
  33.   let videoReadableStream = ytdl(URL)
  34.   let info = await ytdl.getInfo(URL)
  35.  
  36.   return { stream: videoReadableStream, title: info.title }
  37. }
  38.  
  39. module.exports = router
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement