Merge pull request #238 from play-dl/developer

1.8.0
This commit is contained in:
Killer069 2022-01-19 09:44:11 +05:30 committed by GitHub
commit f49c3aa379
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 17 deletions

View File

@ -148,7 +148,7 @@ export class SeekStream {
this.timer.reuse();
return this.seek();
}
const bytes = this.stream.seek();
const bytes = this.stream.seek(this.content_length);
if (bytes instanceof Error) {
this.stream.emit('error', bytes);
this.bytes_count = 0;

View File

@ -75,7 +75,7 @@ export class WebmSeeker extends Duplex {
_read() {}
seek(): Error | number {
seek(content_length: number): Error | number {
let clusterlength = 0,
position = 0;
let time_left = (this.sec - this.time) * 1000 || 0;
@ -86,8 +86,7 @@ export class WebmSeeker extends Duplex {
const data = this.header.segment.cues[i];
if (Math.floor((data.time as number) / 1000) === this.time) {
position = data.position as number;
if (this.header.segment.cues.length > 1)
clusterlength = this.header.segment.cues[i + 1].position! - position - 1;
clusterlength = (this.header.segment.cues[i + 1]?.position || content_length) - position - 1;
break;
} else continue;
}
@ -145,6 +144,7 @@ export class WebmSeeker extends Duplex {
// stop parsing the header once we have found the correct cue
if (
ebmlID.name === 'cueClusterPosition' &&
this.header.segment.cues!.length > 2 &&
this.time === (this.header.segment.cues!.at(-2)!.time as number) / 1000
)
this.emit('headComplete');

View File

@ -85,10 +85,10 @@ export async function stream_from_info(
let type: StreamType =
final[0].codec === 'opus' && final[0].container === 'webm' ? StreamType.WebmOpus : StreamType.Arbitrary;
await request_stream(`https://${new URL(final[0].url).host}/generate_204`);
if (options.seek) {
if (type === StreamType.WebmOpus) {
if (options.seek >= info.video_details.durationInSec || options.seek <= 0)
throw new Error(`Seeking beyond limit. [ 1 - ${info.video_details.durationInSec - 1}]`);
options.seek ??= 0
if (options.seek >= info.video_details.durationInSec || options.seek < 0)
throw new Error(`Seeking beyond limit. [ 0 - ${info.video_details.durationInSec - 1}]`);
return new SeekStream(
final[0].url,
info.video_details.durationInSec,
@ -97,7 +97,6 @@ export async function stream_from_info(
info.video_details.url,
options
);
} else throw new Error('Seek is only supported in Webm Opus Files.');
} else
return new Stream(
final[0].url,