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

always add range header on data request #285

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions lib/youtube-dl.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ function processData (data, options, stream) {

if (options && options.start > 0 && options.end > 0) {
headers.Range = 'bytes=' + options.start + '-' + options.end
} else {
headers.Range = 'bytes=0-' + item.filesize
}

const req = request({
Expand Down
63 changes: 61 additions & 2 deletions test/download.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,14 @@ var video1 = 'http://www.youtube.com/watch?v=90AiXO1pAiA'
var video2 = 'https://www.youtube.com/watch?v=179MiZSibco'
var video3 = 'https://www.youtube.com/watch?v=AW8OOp2undg'
var video4 = 'https://www.youtube.com/watch?v=yy7EUIR0fic'
var video5 = 'https://www.youtube.com/watch?v=LDDy4m_TiVk'
var subtitleFile = '1 1 1-179MiZSibco.en.vtt'
var thumbnailFile = 'Too Many Twists (Heist Night 5_5)-yy7EUIR0fic.jpg'

vows
.describe('download')
.addBatch({
'a video with format specified': {
'a video with video format specified': {
topic: function () {
'use strict'
var dl = ytdl(video1, ['-f', '18'])
Expand Down Expand Up @@ -49,7 +50,65 @@ vows
assert.isObject(data)
assert.strictEqual(data.id, '90AiXO1pAiA')
assert.isTrue(/lol-90AiXO1pAiA/.test(data._filename))
assert.strictEqual(data.size, 755906)
},

'file was downloaded': function (err, progress, data) {
'use strict'
if (err) {
throw err
}

// Check existance.
var filepath = path.join(__dirname, data._filename)
var exists = fs.existsSync(filepath)
if (exists) {
// Delete file after each test.
fs.unlinkSync(filepath)
} else {
assert.isTrue(exists)
}
}
},
'a video with audio format specified': {
topic: function () {
'use strict'
var dl = ytdl(video5, ['-f', '251'])
var cb = this.callback

dl.on('error', cb)

dl.on('info', function (info) {
var pos = 0
var progress

dl.on('data', function (data) {
pos += data.length
progress = pos / info.size
})

dl.on('end', function () {
cb(null, progress, info)
})

var filepath = path.join(__dirname, info._filename)
dl.pipe(fs.createWriteStream(filepath))
})
},

'data returned': function (err, progress, data) {
'use strict'
if (err) {
throw err
}

assert.strictEqual(progress, 1)
assert.isObject(data)
assert.strictEqual(data.id, 'LDDy4m_TiVk')
assert.isTrue(
/Snelle - Smoorverliefd \(prod\. Donda Nisha\)-LDDy4m_TiVk/.test(
data._filename
)
)
},

'file was downloaded': function (err, progress, data) {
Expand Down
18 changes: 9 additions & 9 deletions test/getInfo.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ vows
'This is also the original I find it hilarious that there are copycat videos!'
)
assert.strictEqual(info._filename, 'lol-90AiXO1pAiA.mp4')
assert.strictEqual(info.format, '18 - 480x360 (medium)')
assert.strictEqual(info.format, '18 - 480x360 (360p)')
assert.strictEqual(info._duration_raw, 11)
assert.strictEqual(info._duration_hms, '00:00:11')
assert.strictEqual(info.duration, '11')
Expand Down Expand Up @@ -85,9 +85,9 @@ vows
)
assert.strictEqual(info.format, '1080 - 1080p')
assert.strictEqual(info.height, 1080)
assert.strictEqual(info._duration_raw, 29.75)
assert.strictEqual(info._duration_hms, '00:00:29.750')
assert.strictEqual(info.duration, '29.75')
assert.strictEqual(info._duration_raw, 29)
assert.strictEqual(info._duration_hms, '00:00:29')
assert.strictEqual(info.duration, '29')
assert.isArray(info.formats)
}
},
Expand Down Expand Up @@ -125,7 +125,7 @@ vows
assert.strictEqual(info[0]._filename, 'lol-90AiXO1pAiA.mp4')
assert.strictEqual(info[0].width, 480)
assert.strictEqual(info[0].height, 360)
assert.strictEqual(info[0].format, '18 - 480x360 (medium)')
assert.strictEqual(info[0].format, '18 - 480x360 (360p)')
assert.strictEqual(info[0]._duration_raw, 11)
assert.strictEqual(info[0]._duration_hms, '00:00:11')
assert.strictEqual(info[0].duration, '11')
Expand All @@ -148,9 +148,9 @@ vows
)
assert.strictEqual(info[1].format, '1080 - 1080p')
assert.strictEqual(info[1].height, 1080)
assert.strictEqual(info[1]._duration_raw, 29.75)
assert.strictEqual(info[1]._duration_hms, '00:00:29.750')
assert.strictEqual(info[1].duration, '29.75')
assert.strictEqual(info[1]._duration_raw, 29)
assert.strictEqual(info[1]._duration_hms, '00:00:29')
assert.strictEqual(info[1].duration, '29')
assert.isArray(info[1].formats)
}
},
Expand Down Expand Up @@ -179,7 +179,7 @@ vows
'This is also the original I find it hilarious that there are copycat videos!'
)
assert.strictEqual(info._filename, 'lol-90AiXO1pAiA.mp4')
assert.strictEqual(info.format, '18 - 480x360 (medium)')
assert.strictEqual(info.format, '18 - 480x360 (360p)')
assert.strictEqual(info._duration_raw, 11)
assert.strictEqual(info._duration_hms, '00:00:11')
assert.strictEqual(info.duration, '11')
Expand Down
2 changes: 1 addition & 1 deletion test/playlist.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ vows
assert.strictEqual(data[0].progress, 1)
assert.strictEqual(
data[0].data._filename,
'Amy Castle - The Original Cuppycake Video-12Z6pWhM6TA.webm'
'Amy Castle - The Original Cuppycake Video-12Z6pWhM6TA.mp4'
)
assert.strictEqual(data[1].progress, 1)
assert.strictEqual(
Expand Down