New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

youtube-mp3-downloader

Package Overview
Dependencies
Maintainers
1
Versions
32
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

youtube-mp3-downloader - npm Package Compare versions

Comparing version 0.4.3 to 0.4.4

140

lib/YoutubeMp3Downloader.js

@@ -59,7 +59,9 @@ "use strict";

self.downloadQueue.push(task, function (err, data) {
self.emit("queueSize", self.downloadQueue.running() + self.downloadQueue.length());
if (err) {
self.emit("error", err);
self.emit("error", err, data);
} else {
self.emit('finished', data);
self.emit("queueSize", self.downloadQueue.running() + self.downloadQueue.length());
self.emit('finished', err, data);
}

@@ -74,2 +76,5 @@ });

var videoUrl = self.youtubeBaseUrl+task.videoId;
var resultObj = {
videoId: task.videoId
};

@@ -79,81 +84,78 @@ ytdl.getInfo(videoUrl, function(err, info){

if (err) {
callback(err.message, null);
}
callback(err.message, resultObj);
} else {
var videoTitle = self.cleanFileName(info.title);
var artist = "Unknown";
var title = "Unknown";
var thumbnail = info.iurlhq || null;
var videoTitle = self.cleanFileName(info.title);
var artist = "Unknown";
var title = "Unknown";
var thumbnail = info.iurlhq || null;
if (videoTitle.indexOf("-") > -1) {
var temp = videoTitle.split("-");
if (temp.length >= 2) {
artist = temp[0].trim();
title = temp[1].trim();
if (videoTitle.indexOf("-") > -1) {
var temp = videoTitle.split("-");
if (temp.length >= 2) {
artist = temp[0].trim();
title = temp[1].trim();
}
} else {
title = videoTitle;
}
} else {
title = videoTitle;
}
//Derive file name, if given, use it, if not, from video title
var fileName = (task.fileName ? self.outputPath + '/' + task.fileName : self.outputPath + '/' + videoTitle + '.mp3');
//Derive file name, if given, use it, if not, from video title
var fileName = (task.fileName ? self.outputPath + '/' + task.fileName : self.outputPath + '/' + videoTitle + '.mp3');
ytdl.getInfo(videoUrl, { quality: self.youtubeVideoQuality }, function(err, info) {
ytdl.getInfo(videoUrl, { quality: self.youtubeVideoQuality }, function(err, info) {
//Stream setup
var stream = ytdl.downloadFromInfo(info, {
quality: self.youtubeVideoQuality
});
//Stream setup
var stream = ytdl.downloadFromInfo(info, {
quality: self.youtubeVideoQuality
});
stream.on("response", function(httpResponse) {
stream.on("response", function(httpResponse) {
var resultObj = {};
//Setup of progress module
var str = progress({
length: parseInt(httpResponse.headers['content-length']),
time: self.progressTimeout
});
//Setup of progress module
var str = progress({
length: parseInt(httpResponse.headers['content-length']),
time: self.progressTimeout
});
//Add progress event listener
str.on('progress', function(progress) {
if (progress.percentage === 100) {
resultObj.stats= {
transferredBytes: progress.transferred,
runtime: progress.runtime,
averageSpeed: parseFloat(progress.speed.toFixed(2))
}
}
self.emit("progress", {videoId: task.videoId, progress: progress})
});
//Add progress event listener
str.on('progress', function(progress) {
if (progress.percentage === 100) {
resultObj.stats= {
transferredBytes: progress.transferred,
runtime: progress.runtime,
averageSpeed: parseFloat(progress.speed.toFixed(2))
}
}
self.emit("progress", {videoId: task.videoId, progress: progress})
//Start encoding
var proc = new ffmpeg({
source: stream.pipe(str)
})
.audioBitrate(info.formats[0].audioBitrate)
.withAudioCodec('libmp3lame')
.toFormat('mp3')
.outputOptions('-id3v2_version', '4')
.outputOptions('-metadata', 'title=' + title)
.outputOptions('-metadata', 'artist=' + artist)
.on('error', function(err) {
callback(err.message, null);
})
.on('end', function() {
resultObj.file = fileName;
resultObj.youtubeUrl = videoUrl;
resultObj.videoTitle = videoTitle;
resultObj.artist = artist;
resultObj.title = title;
resultObj.thumbnail = thumbnail;
callback(null, resultObj);
})
.saveToFile(fileName);
});
//Start encoding
var proc = new ffmpeg({
source: stream.pipe(str)
})
.audioBitrate(info.formats[0].audioBitrate)
.withAudioCodec('libmp3lame')
.toFormat('mp3')
.outputOptions('-id3v2_version', '4')
.outputOptions('-metadata', 'title=' + title)
.outputOptions('-metadata', 'artist=' + artist)
.on('error', function(err) {
callback(err.message, null);
})
.on('end', function() {
resultObj.file = fileName;
resultObj.videoId = task.videoId;
resultObj.youtubeUrl = videoUrl;
resultObj.videoTitle = videoTitle;
resultObj.artist = artist;
resultObj.title = title;
resultObj.thumbnail = thumbnail;
callback(null, resultObj);
})
.saveToFile(fileName);
});
}
});
});

@@ -160,0 +162,0 @@

{
"name": "youtube-mp3-downloader",
"version": "0.4.3",
"version": "0.4.4",
"description": "Downloads Youtube videos (in parallel, as streams), encodes the audio data as mp3 and stores them in a defineable location",

@@ -5,0 +5,0 @@ "keywords": [

@@ -117,2 +117,3 @@ # Youtube MP3 Downloader

var Downloader = function() {
var self = this;

@@ -131,6 +132,6 @@

self.YD.on("finished", function(data) {
self.YD.on("finished", function(error, data) {
if (self.callbacks[data.videoId]) {
self.callbacks[data.videoId](null,data);
self.callbacks[data.videoId](error, data);
} else {

@@ -142,4 +143,12 @@ console.log("Error: No callback for videoId!");

self.YD.on("error", function(error) {
console.log(error);
self.YD.on("error", function(error, data) {
console.error(error + " on videoId " + data.videoId);
if (self.callbacks[data.videoId]) {
self.callbacks[data.videoId](error, data);
} else {
console.log("Error: No callback for videoId!");
}
});

@@ -150,2 +159,3 @@

Downloader.prototype.getMP3 = function(track, callback){
var self = this;

@@ -152,0 +162,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc