abdulrahman1s / fem-dl

Frontend Masters Course Downloader That actually works.
https://npmjs.com/package/fem-dl
The Unlicense
164 stars 28 forks source link

Playlist retrieval no longer works #10

Closed ale0xb closed 1 year ago

ale0xb commented 1 year ago

Hey thanks for making this software! It's been super useful so far. But now it seems our friends at FEM changed things a bit and executing the downloader gives this error:


npm WARN cli npm v9.1.1 does not support Node.js v15.14.0. You should probably upgrade to a
npm WARN cli newer version of node as we can't make any promises that npm will work with this
npm WARN cli version. This version of npm supports the following node versions: `^14.17.0 ||
npm WARN cli ^16.13.0 || >=18.0.0`. You can find the latest version at https://nodejs.org/.
Need to install the following packages:
  fem-dl@0.1.5
Ok to proceed? (y) y
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: 'fem-dl@0.1.5',
npm WARN EBADENGINE   required: { node: '>=16' },
npm WARN EBADENGINE   current: { node: 'v15.14.0', npm: '9.1.1' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: 'ffmpeg-static@5.1.0',
npm WARN EBADENGINE   required: { node: '>=16' },
npm WARN EBADENGINE   current: { node: 'v15.14.0', npm: '9.1.1' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: 'node-fetch@3.3.0',
npm WARN EBADENGINE   required: { node: '^12.20.0 || ^14.13.1 || >=16.0.0' },
⠴ [0%] Downloading 1. Introduction/1. Introduction.mp4 | Size: 0KB | Remaining: 1/92
node:internal/process/esm_loader:74
    internalBinding('errors').triggerUncaughtException(
                              ^
Response {
  size: 0,
  [Symbol(Body internals)]: {
    body: <ref *1> Gunzip {
      _writeState: Uint32Array(2) [ 0, 0 ],
      _readableState: ReadableState {
        objectMode: false,
        highWaterMark: 16384,
        buffer: BufferList { head: null, tail: null, length: 0 },
        length: 0,
        pipes: [],
        flowing: null,
        ended: false,
        endEmitted: false,
        reading: false,
        constructed: true,
        sync: false,
        needReadable: false,
        emittedReadable: false,
        readableListening: false,
        resumeScheduled: false,
        errorEmitted: false,
        emitClose: true,
        autoDestroy: true,
        destroyed: false,
        errored: null,
        closed: false,
        closeEmitted: false,
        defaultEncoding: 'utf8',
        awaitDrainWriters: null,
        multiAwaitDrain: false,
        readingMore: false,
        decoder: null,
        encoding: null,
        [Symbol(kPaused)]: null
      },
      _events: [Object: null prototype] {
        prefinish: [Function: prefinish],
        close: [
          [Function (anonymous)],
          [Function: onclose],
          [Function: bound onceWrapper] {
            listener: [Function: onclose]
          }
        ],
        end: [Function: onend],
        finish: [
          [Function: onfinish],
          [Function: bound onceWrapper] {
            listener: [Function: onfinish]
          }
        ],
        error: [
          [Function: onerror],
          [Function: onerror],
          [Function (anonymous)]
        ],
        unpipe: [Function: onunpipe]
      },
      _eventsCount: 6,
      _maxListeners: undefined,
      _writableState: WritableState {
        objectMode: false,
        highWaterMark: 16384,
        finalCalled: false,
        needDrain: false,
        ending: true,
        ended: true,
        finished: false,
        destroyed: false,
        decodeStrings: true,
        defaultEncoding: 'utf8',
        length: 64,
        writing: true,
        corked: 0,
        sync: false,
        bufferProcessing: false,
        onwrite: [Function: bound onwrite],
        writecb: [Function: nop],
        writelen: 64,
        afterWriteTickInfo: null,
        buffered: [],
        bufferedIndex: 0,
        allBuffers: true,
        allNoop: true,
        pendingcb: 1,
        constructed: true,
        prefinished: false,
        errorEmitted: false,
        emitClose: true,
        autoDestroy: true,
        errored: null,
        closed: false,
        closeEmitted: false,
        [Symbol(kOnFinished)]: []
      },
      allowHalfOpen: true,
      bytesWritten: 0,
      _handle: Zlib {
        onerror: [Function: zlibOnError],
        buffer: Buffer(64) [Uint8Array] [
           31, 139,  8,  0,   0,   0,   0,   0,   0, 255, 170,  86,
           74, 206, 79, 73,  85, 178,  50,  49,  48, 212,  81, 202,
           77,  45, 46, 78,  76,  79,  85, 178,  82, 202, 203,  47,
           81,  72, 44, 45, 201, 200,  47, 202, 172,  74,  77,  81,
          170, 229,  2,  4,   0,   0, 255, 255, 214, 255, 249,  78,
           40,   0,  0,  0
        ],
        cb: [Function (anonymous)],
        availOutBefore: 16384,
        availInBefore: 64,
        inOff: 0,
        flushFlag: 2,
        [Symbol(owner_symbol)]: [Circular *1]
      },
      _outBuffer: Buffer(16384) [Uint8Array] [
        123,  34,  99, 111, 100, 101,  34,  58,  52,  48,  49,  44,
         34, 109, 101, 115, 115,  97, 103, 101,  34,  58,  34, 110,
        111, 116,  32,  97, 117, 116, 104, 111, 114, 105, 122, 101,
        100,  34, 125,  10,  85,  85,  85,  85,  85,  85,  85,  85,
         85,  85,  85,  85,  85,  85,  85,  85,  32,  78, 111, 118,
         32,  50,  48,  50,  50,  32,  48,  57,  58,  48,  49,  58,
         53,  55,  32,  71,  77,  84,  13,  10,  67, 111, 110, 116,
        101, 110, 116,  45,  84, 121, 112, 101,  58,  32,  97, 112,
        112, 108, 105,  99,
        ... 16284 more items
      ],
      _outOffset: 0,
      _chunkSize: 16384,
      _defaultFlushFlag: 2,
      _finishFlushFlag: 2,
      _defaultFullFlushFlag: 3,
      _info: undefined,
      _maxOutputLength: 4294967296,
      _level: -1,
      _strategy: 0,
      [Symbol(kCapture)]: false,
      [Symbol(kCallback)]: null,
      [Symbol(kError)]: null
    },
    stream: <ref *1> Gunzip {
      _writeState: Uint32Array(2) [ 0, 0 ],
      _readableState: ReadableState {
        objectMode: false,
        highWaterMark: 16384,
        buffer: BufferList { head: null, tail: null, length: 0 },
        length: 0,
        pipes: [],
        flowing: null,
        ended: false,
        endEmitted: false,
        reading: false,
        constructed: true,
        sync: false,
        needReadable: false,
        emittedReadable: false,
        readableListening: false,
        resumeScheduled: false,
        errorEmitted: false,
        emitClose: true,
        autoDestroy: true,
        destroyed: false,
        errored: null,
        closed: false,
        closeEmitted: false,
        defaultEncoding: 'utf8',
        awaitDrainWriters: null,
        multiAwaitDrain: false,
        readingMore: false,
        decoder: null,
        encoding: null,
        [Symbol(kPaused)]: null
      },
      _events: [Object: null prototype] {
        prefinish: [Function: prefinish],
        close: [
          [Function (anonymous)],
          [Function: onclose],
          [Function: bound onceWrapper] {
            listener: [Function: onclose]
          }
        ],
        end: [Function: onend],
        finish: [
          [Function: onfinish],
          [Function: bound onceWrapper] {
            listener: [Function: onfinish]
          }
        ],
        error: [
          [Function: onerror],
          [Function: onerror],
          [Function (anonymous)]
        ],
        unpipe: [Function: onunpipe]
      },
      _eventsCount: 6,
      _maxListeners: undefined,
      _writableState: WritableState {
        objectMode: false,
        highWaterMark: 16384,
        finalCalled: false,
        needDrain: false,
        ending: true,
        ended: true,
        finished: false,
        destroyed: false,
        decodeStrings: true,
        defaultEncoding: 'utf8',
        length: 64,
        writing: true,
        corked: 0,
        sync: false,
        bufferProcessing: false,
        onwrite: [Function: bound onwrite],
        writecb: [Function: nop],
        writelen: 64,
        afterWriteTickInfo: null,
        buffered: [],
        bufferedIndex: 0,
        allBuffers: true,
        allNoop: true,
        pendingcb: 1,
        constructed: true,
        prefinished: false,
        errorEmitted: false,
        emitClose: true,
        autoDestroy: true,
        errored: null,
        closed: false,
        closeEmitted: false,
        [Symbol(kOnFinished)]: []
      },
      allowHalfOpen: true,
      bytesWritten: 0,
      _handle: Zlib {
        onerror: [Function: zlibOnError],
        buffer: Buffer(64) [Uint8Array] [
           31, 139,  8,  0,   0,   0,   0,   0,   0, 255, 170,  86,
           74, 206, 79, 73,  85, 178,  50,  49,  48, 212,  81, 202,
           77,  45, 46, 78,  76,  79,  85, 178,  82, 202, 203,  47,
           81,  72, 44, 45, 201, 200,  47, 202, 172,  74,  77,  81,
          170, 229,  2,  4,   0,   0, 255, 255, 214, 255, 249,  78,
           40,   0,  0,  0
        ],
        cb: [Function (anonymous)],
        availOutBefore: 16384,
        availInBefore: 64,
        inOff: 0,
        flushFlag: 2,
        [Symbol(owner_symbol)]: [Circular *1]
      },
      _outBuffer: Buffer(16384) [Uint8Array] [
        123,  34,  99, 111, 100, 101,  34,  58,  52,  48,  49,  44,
         34, 109, 101, 115, 115,  97, 103, 101,  34,  58,  34, 110,
        111, 116,  32,  97, 117, 116, 104, 111, 114, 105, 122, 101,
        100,  34, 125,  10,  85,  85,  85,  85,  85,  85,  85,  85,
         85,  85,  85,  85,  85,  85,  85,  85,  32,  78, 111, 118,
         32,  50,  48,  50,  50,  32,  48,  57,  58,  48,  49,  58,
         53,  55,  32,  71,  77,  84,  13,  10,  67, 111, 110, 116,
        101, 110, 116,  45,  84, 121, 112, 101,  58,  32,  97, 112,
        112, 108, 105,  99,
        ... 16284 more items
      ],
      _outOffset: 0,
      _chunkSize: 16384,
      _defaultFlushFlag: 2,
      _finishFlushFlag: 2,
      _defaultFullFlushFlag: 3,
      _info: undefined,
      _maxOutputLength: 4294967296,
      _level: -1,
      _strategy: 0,
      [Symbol(kCapture)]: false,
      [Symbol(kCallback)]: null,
      [Symbol(kError)]: null
    },
    boundary: null,
    disturbed: false,
    error: null
  },
  [Symbol(Response internals)]: {
    type: 'default',
    url: 'https://api.frontendmasters.com/v1/kabuki/video/DVSfnDTkWs/source?f=m3u8',
    status: 401,
    statusText: 'Unauthorized',
    headers: Headers {
      [Symbol(query)]: [
        'access-control-allow-credentials',
        'true',
        'access-control-allow-origin',
        'https://frontendmasters.com',
        'connection',
        'close',
        'content-encoding',
        'gzip',
        'content-length',
        '64',
        'content-type',
        'application/json',
        'date',
        'Thu, 24 Nov 2022 09:01:57 GMT',
        'server',
        'nginx/1.16.1',
        'vary',
        'Origin'
      ],
      [Symbol(context)]: null
    },
    counter: 0,
    highWaterMark: 16384
  }
}
➜  Projects npx fem-dl@latesteee
➜  Projects clear
⠼ [0%] Downloading 1. Introduction/1. Introduction.mp4 | Size: 0KB | Remaining: 1/114
node:internal/process/esm_loader:74
    internalBinding('errors').triggerUncaughtException(
                              ^
Response {
  size: 0,
  [Symbol(Body internals)]: {
    body: <ref *1> Gunzip {
      _writeState: Uint32Array(2) [ 0, 0 ],
      _readableState: ReadableState {
        objectMode: false,
        highWaterMark: 16384,
        buffer: BufferList { head: null, tail: null, length: 0 },
        length: 0,
        pipes: [],
        flowing: null,
        ended: false,
        endEmitted: false,
        reading: false,
        constructed: true,
        sync: false,
        needReadable: false,
        emittedReadable: false,
        readableListening: false,
        resumeScheduled: false,
        errorEmitted: false,
        emitClose: true,
        autoDestroy: true,
        destroyed: false,
        errored: null,
        closed: false,
        closeEmitted: false,
        defaultEncoding: 'utf8',
        awaitDrainWriters: null,
        multiAwaitDrain: false,
        readingMore: false,
        decoder: null,
        encoding: null,
        [Symbol(kPaused)]: null
      },
      _events: [Object: null prototype] {
        prefinish: [Function: prefinish],
        close: [
          [Function (anonymous)],
          [Function: onclose],
          [Function: bound onceWrapper] {
            listener: [Function: onclose]
          }
        ],
        end: [Function: onend],
        finish: [
          [Function: onfinish],
          [Function: bound onceWrapper] {
            listener: [Function: onfinish]
          }
        ],
        error: [
          [Function: onerror],
          [Function: onerror],
          [Function (anonymous)]
        ],
        unpipe: [Function: onunpipe]
      },
      _eventsCount: 6,
      _maxListeners: undefined,
      _writableState: WritableState {
        objectMode: false,
        highWaterMark: 16384,
        finalCalled: false,
        needDrain: false,
        ending: true,
        ended: true,
        finished: false,
        destroyed: false,
        decodeStrings: true,
        defaultEncoding: 'utf8',
        length: 64,
        writing: true,
        corked: 0,
        sync: false,
        bufferProcessing: false,
        onwrite: [Function: bound onwrite],
        writecb: [Function: nop],
        writelen: 64,
        afterWriteTickInfo: null,
        buffered: [],
        bufferedIndex: 0,
        allBuffers: true,
        allNoop: true,
        pendingcb: 1,
        constructed: true,
        prefinished: false,
        errorEmitted: false,
        emitClose: true,
        autoDestroy: true,
        errored: null,
        closed: false,
        closeEmitted: false,
        [Symbol(kOnFinished)]: []
      },
      allowHalfOpen: true,
      bytesWritten: 0,
      _handle: Zlib {
        onerror: [Function: zlibOnError],
        buffer: Buffer(64) [Uint8Array] [
           31, 139,  8,  0,   0,   0,   0,   0,   0, 255, 170,  86,
           74, 206, 79, 73,  85, 178,  50,  49,  48, 212,  81, 202,
           77,  45, 46, 78,  76,  79,  85, 178,  82, 202, 203,  47,
           81,  72, 44, 45, 201, 200,  47, 202, 172,  74,  77,  81,
          170, 229,  2,  4,   0,   0, 255, 255, 214, 255, 249,  78,
           40,   0,  0,  0
        ],
        cb: [Function (anonymous)],
        availOutBefore: 16384,
        availInBefore: 64,
        inOff: 0,
        flushFlag: 2,
        [Symbol(owner_symbol)]: [Circular *1]
      },
      _outBuffer: Buffer(16384) [Uint8Array] [
        123,  34,  99, 111, 100, 101,  34,  58,  52,  48,  49,  44,
         34, 109, 101, 115, 115,  97, 103, 101,  34,  58,  34, 110,
        111, 116,  32,  97, 117, 116, 104, 111, 114, 105, 122, 101,
        100,  34, 125,  10,  85,  85,  85,  85,  85,  85,  85,  85,
         85,  85,  85,  85,  85,  85,  85,  85,  64,   0,   0,   0,
          1,   0,   0,   0,  81, 153, 208, 181, 131,   4,   0,   0,
         64,   0,   0,   0,   0,   0,   0,   0, 145, 153, 208, 181,
        131,   4,   0,   0,  64,   0,   0,   0, 168,   1,   0,   0,
        209, 145, 208, 181,
        ... 16284 more items
      ],
      _outOffset: 0,
      _chunkSize: 16384,
      _defaultFlushFlag: 2,
      _finishFlushFlag: 2,
      _defaultFullFlushFlag: 3,
      _info: undefined,
      _maxOutputLength: 4294967296,
      _level: -1,
      _strategy: 0,
      [Symbol(kCapture)]: false,
      [Symbol(kCallback)]: null,
      [Symbol(kError)]: null
    },
    stream: <ref *1> Gunzip {
      _writeState: Uint32Array(2) [ 0, 0 ],
      _readableState: ReadableState {
        objectMode: false,
        highWaterMark: 16384,
        buffer: BufferList { head: null, tail: null, length: 0 },
        length: 0,
        pipes: [],
        flowing: null,
        ended: false,
        endEmitted: false,
        reading: false,
        constructed: true,
        sync: false,
        needReadable: false,
        emittedReadable: false,
        readableListening: false,
        resumeScheduled: false,
        errorEmitted: false,
        emitClose: true,
        autoDestroy: true,
        destroyed: false,
        errored: null,
        closed: false,
        closeEmitted: false,
        defaultEncoding: 'utf8',
        awaitDrainWriters: null,
        multiAwaitDrain: false,
        readingMore: false,
        decoder: null,
        encoding: null,
        [Symbol(kPaused)]: null
      },
      _events: [Object: null prototype] {
        prefinish: [Function: prefinish],
        close: [
          [Function (anonymous)],
          [Function: onclose],
          [Function: bound onceWrapper] {
            listener: [Function: onclose]
          }
        ],
        end: [Function: onend],
        finish: [
          [Function: onfinish],
          [Function: bound onceWrapper] {
            listener: [Function: onfinish]
          }
        ],
        error: [
          [Function: onerror],
          [Function: onerror],
          [Function (anonymous)]
        ],
        unpipe: [Function: onunpipe]
      },
      _eventsCount: 6,
      _maxListeners: undefined,
      _writableState: WritableState {
        objectMode: false,
        highWaterMark: 16384,
        finalCalled: false,
        needDrain: false,
        ending: true,
        ended: true,
        finished: false,
        destroyed: false,
        decodeStrings: true,
        defaultEncoding: 'utf8',
        length: 64,
        writing: true,
        corked: 0,
        sync: false,
        bufferProcessing: false,
        onwrite: [Function: bound onwrite],
        writecb: [Function: nop],
        writelen: 64,
        afterWriteTickInfo: null,
        buffered: [],
        bufferedIndex: 0,
        allBuffers: true,
        allNoop: true,
        pendingcb: 1,
        constructed: true,
        prefinished: false,
        errorEmitted: false,
        emitClose: true,
        autoDestroy: true,
        errored: null,
        closed: false,
        closeEmitted: false,
        [Symbol(kOnFinished)]: []
      },
      allowHalfOpen: true,
      bytesWritten: 0,
      _handle: Zlib {
        onerror: [Function: zlibOnError],
        buffer: Buffer(64) [Uint8Array] [
           31, 139,  8,  0,   0,   0,   0,   0,   0, 255, 170,  86,
           74, 206, 79, 73,  85, 178,  50,  49,  48, 212,  81, 202,
           77,  45, 46, 78,  76,  79,  85, 178,  82, 202, 203,  47,
           81,  72, 44, 45, 201, 200,  47, 202, 172,  74,  77,  81,
          170, 229,  2,  4,   0,   0, 255, 255, 214, 255, 249,  78,
           40,   0,  0,  0
        ],
        cb: [Function (anonymous)],
        availOutBefore: 16384,
        availInBefore: 64,
        inOff: 0,
        flushFlag: 2,
        [Symbol(owner_symbol)]: [Circular *1]
      },
      _outBuffer: Buffer(16384) [Uint8Array] [
        123,  34,  99, 111, 100, 101,  34,  58,  52,  48,  49,  44,
         34, 109, 101, 115, 115,  97, 103, 101,  34,  58,  34, 110,
        111, 116,  32,  97, 117, 116, 104, 111, 114, 105, 122, 101,
        100,  34, 125,  10,  85,  85,  85,  85,  85,  85,  85,  85,
         85,  85,  85,  85,  85,  85,  85,  85,  64,   0,   0,   0,
          1,   0,   0,   0,  81, 153, 208, 181, 131,   4,   0,   0,
         64,   0,   0,   0,   0,   0,   0,   0, 145, 153, 208, 181,
        131,   4,   0,   0,  64,   0,   0,   0, 168,   1,   0,   0,
        209, 145, 208, 181,
        ... 16284 more items
      ],
      _outOffset: 0,
      _chunkSize: 16384,
      _defaultFlushFlag: 2,
      _finishFlushFlag: 2,
      _defaultFullFlushFlag: 3,
      _info: undefined,
      _maxOutputLength: 4294967296,
      _level: -1,
      _strategy: 0,
      [Symbol(kCapture)]: false,
      [Symbol(kCallback)]: null,
      [Symbol(kError)]: null
    },
    boundary: null,
    disturbed: false,
    error: null
  },
  [Symbol(Response internals)]: {
    type: 'default',
    url: 'https://api.frontendmasters.com/v1/kabuki/video/PfvXQUIjKJ/source?f=m3u8',
    status: 401,
    statusText: 'Unauthorized',
    headers: Headers {
      [Symbol(query)]: [
        'access-control-allow-credentials',
        'true',
        'access-control-allow-origin',
        'https://frontendmasters.com',
        'connection',
        'close',
        'content-encoding',
        'gzip',
        'content-length',
        '64',
        'content-type',
        'application/json',
        'date',
        'Thu, 24 Nov 2022 09:06:00 GMT',
        'server',
        'nginx/1.16.1',
        'vary',
        'Origin'
      ],
      [Symbol(context)]: null
    },
    counter: 0,
    highWaterMark: 16384
  }
}```
t4ha2 commented 1 year ago

I have the same problem with the lasest version


    internalBinding('errors').triggerUncaughtException(

                              ^

Response {

  size: 0,

  [Symbol(Body internals)]: {

    body: <ref *1> Gunzip {

      _writeState: Uint32Array(2) [ 0, 0 ],

      _readableState: ReadableState {

        objectMode: false,

        highWaterMark: 16384,

        buffer: BufferList { head: null, tail: null, length: 0 },

        length: 0,

        pipes: [],

        flowing: null,

        ended: false,

        endEmitted: false,

        reading: false,

        constructed: true,

        sync: false,

        needReadable: false,

        emittedReadable: false,

        readableListening: false,

        resumeScheduled: false,

        errorEmitted: false,

        emitClose: true,

        autoDestroy: true,

        destroyed: false,

        errored: null,

        closed: false,

        closeEmitted: false,

        defaultEncoding: 'utf8',

        awaitDrainWriters: null,

        multiAwaitDrain: false,

        readingMore: false,

        dataEmitted: false,

        decoder: null,

        encoding: null,

        [Symbol(kPaused)]: null

      },

      _events: [Object: null prototype] {

        prefinish: [Function: prefinish],

        close: [

          [Function (anonymous)],

          [Function: onclose],

          [Function (anonymous)],

          [Function: bound onceWrapper] {

            listener: [Function: onclose]

          },

          [Function: onclose]

        ],

        end: [ [Function: onend], [Function: onend] ],

        finish: [

          [Function: onfinish],

          [Function: bound onceWrapper] {

            listener: [Function: onfinish]

          },

          [Function: onfinish]

        ],

        error: [

          [Function: onerror],

          [Function: onerror],

          [Function: onError],

          [Function: onerror],

          [Function (anonymous)]

        ],

        unpipe: [Function: onunpipe]

      },

      _eventsCount: 6,

      _maxListeners: undefined,

      _writableState: WritableState {

        objectMode: false,

        highWaterMark: 16384,

        finalCalled: false,

        needDrain: false,

        ending: true,

        ended: true,

        finished: false,

        destroyed: false,

        decodeStrings: true,

        defaultEncoding: 'utf8',

        length: 64,

        writing: true,

        corked: 0,

        sync: false,

        bufferProcessing: false,

        onwrite: [Function: bound onwrite],

        writecb: [Function: nop],

        writelen: 64,

        afterWriteTickInfo: null,

        buffered: [],

        bufferedIndex: 0,

        allBuffers: true,

        allNoop: true,

        pendingcb: 1,

        constructed: true,

        prefinished: false,

        errorEmitted: false,

        emitClose: true,

        autoDestroy: true,

        errored: null,

        closed: false,

        closeEmitted: false,

        [Symbol(kOnFinished)]: []

      },

      allowHalfOpen: true,

      bytesWritten: 0,

      _handle: Zlib {

        onerror: [Function: zlibOnError],

        buffer: Buffer(64) [Uint8Array] [

           31, 139,  8,  0,   0,   0,   0,   0,   0, 255, 170,  86,

           74, 206, 79, 73,  85, 178,  50,  49,  48, 212,  81, 202,

           77,  45, 46, 78,  76,  79,  85, 178,  82, 202, 203,  47,

           81,  72, 44, 45, 201, 200,  47, 202, 172,  74,  77,  81,

          170, 229,  2,  4,   0,   0, 255, 255, 214, 255, 249,  78,

           40,   0,  0,  0

        ],

        cb: [Function (anonymous)],

        availOutBefore: 16384,

        availInBefore: 64,

        inOff: 0,

        flushFlag: 2,

        [Symbol(owner_symbol)]: [Circular *1]

      },

      _outBuffer: Buffer(16384) [Uint8Array] [

        123,  34,  99, 111, 100, 101,  34,  58,  52,  48,  49,  44,

         34, 109, 101, 115, 115,  97, 103, 101,  34,  58,  34, 110,

        111, 116,  32,  97, 117, 116, 104, 111, 114, 105, 122, 101,

        100,  34, 125,  10,  85,  85,  85,  85,  85,  85,  85,  85,

         85,  85,  85,  85,  85,  85,  85,  85,   0,   0,   0,   0,

          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,

          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,

          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,

          0,   0,   0,   0,

        ... 16284 more items

      ],

      _outOffset: 0,

      _chunkSize: 16384,

      _defaultFlushFlag: 2,

      _finishFlushFlag: 2,

      _defaultFullFlushFlag: 3,

      _info: undefined,

      _maxOutputLength: 4294967296,

      _level: -1,

      _strategy: 0,

      [Symbol(kCapture)]: false,

      [Symbol(kCallback)]: null,

      [Symbol(kError)]: null

    },

    stream: <ref *1> Gunzip {

      _writeState: Uint32Array(2) [ 0, 0 ],

      _readableState: ReadableState {

        objectMode: false,

        highWaterMark: 16384,

        buffer: BufferList { head: null, tail: null, length: 0 },

        length: 0,

        pipes: [],

        flowing: null,

        ended: false,

        endEmitted: false,

        reading: false,

        constructed: true,

        sync: false,

        needReadable: false,

        emittedReadable: false,

        readableListening: false,

        resumeScheduled: false,

        errorEmitted: false,

        emitClose: true,

        autoDestroy: true,

        destroyed: false,

        errored: null,

        closed: false,

        closeEmitted: false,

        defaultEncoding: 'utf8',

        awaitDrainWriters: null,

        multiAwaitDrain: false,

        readingMore: false,

        dataEmitted: false,

        decoder: null,

        encoding: null,

        [Symbol(kPaused)]: null

      },

      _events: [Object: null prototype] {

        prefinish: [Function: prefinish],

        close: [

          [Function (anonymous)],

          [Function: onclose],

          [Function (anonymous)],

          [Function: bound onceWrapper] {

            listener: [Function: onclose]

          },

          [Function: onclose]

        ],

        end: [ [Function: onend], [Function: onend] ],

        finish: [

          [Function: onfinish],

          [Function: bound onceWrapper] {

            listener: [Function: onfinish]

          },

          [Function: onfinish]

        ],

        error: [

          [Function: onerror],

          [Function: onerror],

          [Function: onError],

          [Function: onerror],

          [Function (anonymous)]

        ],

        unpipe: [Function: onunpipe]

      },

      _eventsCount: 6,

      _maxListeners: undefined,

      _writableState: WritableState {

        objectMode: false,

        highWaterMark: 16384,

        finalCalled: false,

        needDrain: false,

        ending: true,

        ended: true,

        finished: false,

        destroyed: false,

        decodeStrings: true,

        defaultEncoding: 'utf8',

        length: 64,

        writing: true,

        corked: 0,

        sync: false,

        bufferProcessing: false,

        onwrite: [Function: bound onwrite],

        writecb: [Function: nop],

        writelen: 64,

        afterWriteTickInfo: null,

        buffered: [],

        bufferedIndex: 0,

        allBuffers: true,

        allNoop: true,

        pendingcb: 1,

        constructed: true,

        prefinished: false,

        errorEmitted: false,

        emitClose: true,

        autoDestroy: true,

        errored: null,

        closed: false,

        closeEmitted: false,

        [Symbol(kOnFinished)]: []

      },

      allowHalfOpen: true,

      bytesWritten: 0,

      _handle: Zlib {

        onerror: [Function: zlibOnError],

        buffer: Buffer(64) [Uint8Array] [

           31, 139,  8,  0,   0,   0,   0,   0,   0, 255, 170,  86,

           74, 206, 79, 73,  85, 178,  50,  49,  48, 212,  81, 202,

           77,  45, 46, 78,  76,  79,  85, 178,  82, 202, 203,  47,

           81,  72, 44, 45, 201, 200,  47, 202, 172,  74,  77,  81,

          170, 229,  2,  4,   0,   0, 255, 255, 214, 255, 249,  78,

           40,   0,  0,  0

        ],

        cb: [Function (anonymous)],

        availOutBefore: 16384,

        availInBefore: 64,

        inOff: 0,

        flushFlag: 2,

        [Symbol(owner_symbol)]: [Circular *1]

      },

      _outBuffer: Buffer(16384) [Uint8Array] [

        123,  34,  99, 111, 100, 101,  34,  58,  52,  48,  49,  44,

         34, 109, 101, 115, 115,  97, 103, 101,  34,  58,  34, 110,

        111, 116,  32,  97, 117, 116, 104, 111, 114, 105, 122, 101,

        100,  34, 125,  10,  85,  85,  85,  85,  85,  85,  85,  85,

         85,  85,  85,  85,  85,  85,  85,  85,   0,   0,   0,   0,

          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,

          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,

          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,

          0,   0,   0,   0,

        ... 16284 more items

      ],

      _outOffset: 0,

      _chunkSize: 16384,

      _defaultFlushFlag: 2,

      _finishFlushFlag: 2,

      _defaultFullFlushFlag: 3,

      _info: undefined,

      _maxOutputLength: 4294967296,

      _level: -1,

      _strategy: 0,

      [Symbol(kCapture)]: false,

      [Symbol(kCallback)]: null,

      [Symbol(kError)]: null

    },

    boundary: null,

    disturbed: false,

    error: null

  },

  [Symbol(Response internals)]: {

    type: 'default',

    url: 'https://api.frontendmasters.com/v1/kabuki/video/MkEeIchlVZ/source?f=m3u8',

    status: 401,

    statusText: 'Unauthorized',

    headers: Headers {

      [Symbol(query)]: [

        'access-control-allow-credentials',

        'true',

        'access-control-allow-origin',

        'https://frontendmasters.com',

        'connection',

        'close',

        'content-encoding',

        'gzip',

        'content-length',

        '64',

        'content-type',

        'application/json',

        'date',

        'Wed, 30 Nov 2022 21:12:08 GMT',

        'server',

        'nginx/1.16.1',

        'vary',

        'Origin'

      ],

      [Symbol(context)]: null

    },

    counter: 0,

    highWaterMark: 16384

  }

}

Node.js v18.12.1
abdulrahman1s commented 1 year ago

Fixed with the latest release, try npm fem-dl@latest