mirror of
https://github.com/DanielnetoDotCom/YouPHPTube
synced 2025-10-03 09:49:28 +02:00
Libs updates and new version with option to pin videos on channel
This commit is contained in:
parent
e1f2188de0
commit
1beab3b1c0
8565 changed files with 149805 additions and 165674 deletions
128
node_modules/m3u8-parser/test/parse-stream.test.js
generated
vendored
128
node_modules/m3u8-parser/test/parse-stream.test.js
generated
vendored
|
@ -242,7 +242,7 @@ QUnit.test('parses #EXTM3U tags', function(assert) {
|
|||
|
||||
// #EXTINF
|
||||
QUnit.test('parses minimal #EXTINF tags', function(assert) {
|
||||
const manifest = '#EXTINF\n';
|
||||
const manifest = '#EXTINF:\n';
|
||||
let element;
|
||||
|
||||
this.parseStream.on('data', function(elem) {
|
||||
|
@ -319,7 +319,7 @@ QUnit.test('parses #EXTINF tags with carriage returns', function(assert) {
|
|||
|
||||
// #EXT-X-TARGETDURATION
|
||||
QUnit.test('parses minimal #EXT-X-TARGETDURATION tags', function(assert) {
|
||||
const manifest = '#EXT-X-TARGETDURATION\n';
|
||||
const manifest = '#EXT-X-TARGETDURATION:\n';
|
||||
let element;
|
||||
|
||||
this.parseStream.on('data', function(elem) {
|
||||
|
@ -379,7 +379,7 @@ QUnit.test('parses #EXT-X-VERSION with a version', function(assert) {
|
|||
|
||||
// #EXT-X-MEDIA-SEQUENCE
|
||||
QUnit.test('parses minimal #EXT-X-MEDIA-SEQUENCE tags', function(assert) {
|
||||
const manifest = '#EXT-X-MEDIA-SEQUENCE\n';
|
||||
const manifest = '#EXT-X-MEDIA-SEQUENCE:\n';
|
||||
let element;
|
||||
|
||||
this.parseStream.on('data', function(elem) {
|
||||
|
@ -453,7 +453,7 @@ QUnit.test('parses #EXT-X-PLAYLIST-TYPE with mutability info', function(assert)
|
|||
|
||||
// #EXT-X-BYTERANGE
|
||||
QUnit.test('parses minimal #EXT-X-BYTERANGE tags', function(assert) {
|
||||
const manifest = '#EXT-X-BYTERANGE\n';
|
||||
const manifest = '#EXT-X-BYTERANGE:\n';
|
||||
let element;
|
||||
|
||||
this.parseStream.on('data', function(elem) {
|
||||
|
@ -589,7 +589,7 @@ QUnit.test('parses #EXT-X-MAP tags with arbitrary attributes', function(assert)
|
|||
});
|
||||
// #EXT-X-STREAM-INF
|
||||
QUnit.test('parses minimal #EXT-X-STREAM-INF tags', function(assert) {
|
||||
const manifest = '#EXT-X-STREAM-INF\n';
|
||||
const manifest = '#EXT-X-STREAM-INF:\n';
|
||||
let element;
|
||||
|
||||
this.parseStream.on('data', function(elem) {
|
||||
|
@ -604,7 +604,7 @@ QUnit.test('parses minimal #EXT-X-STREAM-INF tags', function(assert) {
|
|||
});
|
||||
// #EXT-X-PROGRAM-DATE-TIME
|
||||
QUnit.test('parses minimal EXT-X-PROGRAM-DATE-TIME tags', function(assert) {
|
||||
const manifest = '#EXT-X-PROGRAM-DATE-TIME\n';
|
||||
const manifest = '#EXT-X-PROGRAM-DATE-TIME:\n';
|
||||
let element;
|
||||
|
||||
this.parseStream.on('data', function(elem) {
|
||||
|
@ -698,6 +698,14 @@ QUnit.test('parses #EXT-X-STREAM-INF with common attributes', function(assert) {
|
|||
'avc1.4d400d, mp4a.40.2',
|
||||
'codecs are parsed'
|
||||
);
|
||||
|
||||
manifest = '#EXT-X-STREAM-INF:PATHWAY-ID="CDN-A"\n';
|
||||
this.lineStream.push(manifest);
|
||||
|
||||
assert.ok(element, 'an event was triggered');
|
||||
assert.strictEqual(element.type, 'tag', 'the line type is tag');
|
||||
assert.strictEqual(element.tagType, 'stream-inf', 'the tag type is stream-inf');
|
||||
assert.strictEqual(element.attributes['PATHWAY-ID'], 'CDN-A', 'pathway-id is parsed');
|
||||
});
|
||||
QUnit.test('parses #EXT-X-STREAM-INF with arbitrary attributes', function(assert) {
|
||||
const manifest = '#EXT-X-STREAM-INF:NUMERIC=24,ALPHA=Value,MIXED=123abc\n';
|
||||
|
@ -809,16 +817,6 @@ QUnit.test('parses lightly-broken #EXT-X-KEY tags', function(assert) {
|
|||
'parsed a single-quoted uri'
|
||||
);
|
||||
|
||||
element = null;
|
||||
manifest = '#EXT-X-KEYURI="https://example.com/key",METHOD=AES-128\n';
|
||||
this.lineStream.push(manifest);
|
||||
assert.strictEqual(element.tagType, 'key', 'parsed the tag type');
|
||||
assert.strictEqual(
|
||||
element.attributes.URI,
|
||||
'https://example.com/key',
|
||||
'inferred a colon after the tag type'
|
||||
);
|
||||
|
||||
element = null;
|
||||
manifest = '#EXT-X-KEY: URI = "https://example.com/key",METHOD=AES-128\n';
|
||||
this.lineStream.push(manifest);
|
||||
|
@ -889,6 +887,104 @@ QUnit.test('parses EXT-X-START PRECISE attribute', function(assert) {
|
|||
assert.strictEqual(element.attributes['TIME-OFFSET'], 1.4, 'parses time offset');
|
||||
assert.strictEqual(element.attributes.PRECISE, true, 'parses precise attribute');
|
||||
});
|
||||
// #EXT-X-DATERANGE:
|
||||
QUnit.test('parses minimal EXT-X-DATERANGE tag', function(assert) {
|
||||
const manifest = '#EXT-X-DATERANGE:ID="12345",START-DATE="2023-04-13T15:15:15.840000Z"\n';
|
||||
let element;
|
||||
|
||||
this.parseStream.on('data', function(elem) {
|
||||
element = elem;
|
||||
});
|
||||
this.lineStream.push(manifest);
|
||||
|
||||
assert.ok(element, 'an event was triggered');
|
||||
assert.strictEqual(element.type, 'tag', 'the line type is tag');
|
||||
assert.strictEqual(element.tagType, 'daterange', 'the tag type is daterange');
|
||||
assert.strictEqual(element.attributes.ID, '12345');
|
||||
assert.deepEqual(element.attributes['START-DATE'], new Date('2023-04-13T15:15:15.840000Z'));
|
||||
});
|
||||
|
||||
QUnit.test('parses DURATION and PLANNED-DURATION attributes in EXT-X-DATERANGE tag', function(assert) {
|
||||
const manifest = '#EXT-X-DATERANGE:ID="54545",START-DATE="2023-04-23T18:17:16.54000Z",PLANNED-DURATION="38.4",DURATION="15.5"\n';
|
||||
let element;
|
||||
|
||||
this.parseStream.on('data', function(elem) {
|
||||
element = elem;
|
||||
});
|
||||
this.lineStream.push(manifest);
|
||||
|
||||
assert.ok(element, 'an event was triggered');
|
||||
assert.strictEqual(element.type, 'tag', 'the line type is tag');
|
||||
assert.strictEqual(element.tagType, 'daterange', 'the tag type is daterange');
|
||||
assert.strictEqual(element.attributes.ID, '54545');
|
||||
assert.deepEqual(element.attributes['START-DATE'], new Date('2023-04-23T18:17:16.540000Z'));
|
||||
assert.strictEqual(element.attributes.DURATION, 15.5);
|
||||
assert.strictEqual(element.attributes['PLANNED-DURATION'], 38.4);
|
||||
});
|
||||
|
||||
QUnit.test('parses SCTE35-CMD, SCTE35-OUT, SCTE35-IN EXT-X-DATERANGE tags', function(assert) {
|
||||
let manifest = '#EXT-X-DATERANGE:ID="splice-6FFFFFF0",START-DATE="2023-04-13T15:15:15.840000Z",SCTE35-OUT="0xFC002F0000000000FF000014056FFFFFFF0"\n';
|
||||
let element;
|
||||
|
||||
this.parseStream.on('data', function(elem) {
|
||||
element = elem;
|
||||
});
|
||||
this.lineStream.push(manifest);
|
||||
|
||||
assert.ok(element, 'an event was triggered');
|
||||
assert.strictEqual(element.attributes['SCTE35-OUT'], '0xFC002F0000000000FF000014056FFFFFFF0');
|
||||
|
||||
manifest = '#EXT-X-DATERANGE:ID="12345",START-DATE="2023-04-13T15:15:15.840000Z",SCTE35-IN="0xFC0000425100FFF0140500000300000000E77FEFFE0011FB9EFE0029004D1932E0000100101002A22"\n';
|
||||
this.lineStream.push(manifest);
|
||||
|
||||
assert.ok(element, 'an event was triggered');
|
||||
assert.strictEqual(element.attributes['SCTE35-IN'], '0xFC0000425100FFF0140500000300000000E77FEFFE0011FB9EFE0029004D1932E0000100101002A22');
|
||||
|
||||
manifest = '#EXT-X-DATERANGE:ID="12345",START-DATE="2023-04-13T15:15:15.840000Z",SCTE35-CMD="0xFC0000425100FFF014"\n';
|
||||
this.lineStream.push(manifest);
|
||||
|
||||
assert.ok(element, 'an event was triggered');
|
||||
assert.strictEqual(element.attributes['SCTE35-CMD'], '0xFC0000425100FFF014');
|
||||
});
|
||||
|
||||
QUnit.test('custom attributes in EXT-X-DATERANGE are parsed', function(assert) {
|
||||
let manifest = '#EXT-X-DATERANGE:ID="12345",START-DATE="2023-04-13T15:15:15.840000Z",X-CUSTOM-KEY="value"\n';
|
||||
let element;
|
||||
|
||||
this.parseStream.on('data', function(elem) {
|
||||
element = elem;
|
||||
});
|
||||
this.lineStream.push(manifest);
|
||||
|
||||
assert.ok(element, 'an event was triggered');
|
||||
assert.strictEqual(element.attributes['X-CUSTOM-KEY'], 'value');
|
||||
|
||||
manifest = '#EXT-X-DATERANGE:ID="12345",START-DATE="2023-04-13T15:15:15.840000Z",X-CUSTOM-KEY="17.8"\n';
|
||||
this.lineStream.push(manifest);
|
||||
|
||||
assert.ok(element, 'an event was triggered');
|
||||
assert.strictEqual(element.attributes['X-CUSTOM-KEY'], 17.8);
|
||||
|
||||
manifest = '#EXT-X-DATERANGE:ID="12345",START-DATE="2023-04-13T15:15:15.840000Z",X-CUSTOM-KEY="0X12345abcde"\n';
|
||||
this.lineStream.push(manifest);
|
||||
|
||||
assert.ok(element, 'an event was triggered');
|
||||
assert.strictEqual(element.attributes['X-CUSTOM-KEY'], '0X12345abcde');
|
||||
});
|
||||
|
||||
QUnit.test('parses EXT-X-INDEPENDENT-SEGMENTS', function(assert) {
|
||||
const manifest = '#EXT-X-INDEPENDENT-SEGMENTS\n';
|
||||
let element;
|
||||
|
||||
this.parseStream.on('data', function(elem) {
|
||||
element = elem;
|
||||
});
|
||||
this.lineStream.push(manifest);
|
||||
|
||||
assert.ok(element, 'an event was triggered');
|
||||
assert.strictEqual(element.type, 'tag', 'the line type is tag');
|
||||
assert.strictEqual(element.tagType, 'independent-segments', 'the tag type is independent-segments');
|
||||
});
|
||||
|
||||
QUnit.test('ignores empty lines', function(assert) {
|
||||
const manifest = '\n';
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue