Skip to content
This repository has been archived by the owner on Dec 3, 2023. It is now read-only.

Commit

Permalink
Use the '--dump-json' option for extracting the video information
Browse files Browse the repository at this point in the history
  • Loading branch information
jaimeMF committed Feb 10, 2015
1 parent a8eface commit b3a9fcd
Showing 1 changed file with 26 additions and 25 deletions.
51 changes: 26 additions & 25 deletions lib/youtube-dl.js
Original file line number Diff line number Diff line change
Expand Up @@ -163,25 +163,37 @@ function call(video, args1, args2, options, callback) {
* @param {Array.<String>} data
*/
function filterData(data) {
var format = data[data.length - 1].split(' - ');
var info = JSON.parse(data);
var format = info.format.split(' - ');
function formatDuration(duration) {
var parts = [];
parts.push(duration % 60);
var minutes = Math.floor(duration / 60);
if (minutes > 0) {
parts.push(minutes % 60)
var hours = Math.floor(minutes / 60);
if (hours > 0) {
parts.push(hours);
}
}
return parts.reverse().join(':');
}

return {
title : data[0],
id : data[1],
url : data[2],
thumbnail : data[3],
description : data.slice(4, data.length - 3).join('\n'),
filename : data[data.length - 3],
duration : data[data.length - 2],
itag : parseInt(format[0], 10),
title : info.title,
id : info.id,
url : info.url,
thumbnail : info.thumbnail,
description : info.description,
filename : info._filename,
duration : formatDuration(info.duration),
itag : info.format_id,
resolution : format[1],
};

}


var resolutionRegex = /( - ([0-9]+x[0-9]+|\d+p|\?x[0-9]+|audio only|unknown))/;

/**
* Gets info from a video.
*
Expand All @@ -199,15 +211,8 @@ ytdl.getInfo = function(url, args, options, callback) {
args = [];
}
var defaultArgs = [
'--get-id',
'--get-url',
'--get-title',
'--get-thumbnail',
'--get-filename',
'--get-format',
'--get-description',
'--get-duration'
];
'--dump-json',
]

call(url, defaultArgs, args, options, function(err, data) {
if (err) return callback(err);
Expand All @@ -216,12 +221,8 @@ ytdl.getInfo = function(url, args, options, callback) {
var track = [];

data.forEach(function(row) {
track.push(row);

if (resolutionRegex.test(row)) {
playlist.push(filterData(track));
playlist.push(filterData(row));
track = [];
}
});

if (playlist.length === 1) {
Expand Down

0 comments on commit b3a9fcd

Please sign in to comment.