FrontendMasters Course Downloader That actually works.

Overview

Frontend Masters Downloader

gif

Features

  • Download episodes sorted by their lesson/section
  • Option to include subtitles/captions to the episodes
  • Support multiple video quality
  • Support multiple video formats (currently: mp4 and mkv)

Requirements

  • Nodejs v16 or newer installed
  • Valid FrontendMasters account cookies (Guide)

Usage

$ npx fem-dl

or via pnpm

$ pnpm dlx fem-dl

Disclaimer

I am not responsible for any use of this program, please read FrontendMasters terms of service before using this.

Comments
  • It is not installed, the error is this way. (npx fem-dl)

    It is not installed, the error is this way. (npx fem-dl)

    internal/modules/cjs/loader.js:905 throw err; ^

    Error: Cannot find module '/root/.npm/_npx/5210/lib/node_modules/fem-dl/node_modules/ffmpeg-static/install.js' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15) at Function.Module._load (internal/modules/cjs/loader.js:746:27) at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:75:12) at internal/main/run_main_module.js:17:47 { code: 'MODULE_NOT_FOUND', requireStack: [] } [############......] - install: info lifecycle [email protected]~install: Failed to[############......] - install: info lifecycle [email protected]~install: Failed to[############......] - install: info lifecycle [email protected]~install: Failed to npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! [email protected] install: node install.js npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the [email protected] install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

    npm ERR! A complete log of this run can be found in: npm ERR! /root/.npm/_logs/2022-10-01T21_35_04_217Z-debug.log Install for [ 'fem-dl@latest' ] failed with code 1

    opened by denemelikibo 7
  • internalBinding('errors').triggerUncaughtException

    internalBinding('errors').triggerUncaughtException

    Any ideas what goes wrong here? (npx [email protected])

    ⠴ [0%] Downloading 3. React Patterns/15. Container/Presentation Pattern.mp4 | Size: 0KB | Remaining: 15/33 node:internal/process/esm_loader:94 internalBinding('errors').triggerUncaughtException( ^

    (Use node --trace-uncaught ... to show where the exception was thrown)

    opened by miminas 4
  • Remove forbidden characters in filesystem

    Remove forbidden characters in filesystem

    Found an error in the Windows file system. It fails when it tries to make a file or folder with one of the forbidden characters. A course or episode with a colon, for example would fail during the mkdir process. Here's a full list of forbidden characters from the prompt: \ / : * ? " < > |

    opened by victoralvelais 3
  • Playlist retrieval no longer works

    Playlist retrieval no longer works

    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:
      [email protected]
    Ok to proceed? (y) y
    npm WARN EBADENGINE Unsupported engine {
    npm WARN EBADENGINE   package: '[email protected]',
    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: '[email protected]',
    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: '[email protected]',
    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
      }
    }```
    opened by ale0xb 2
  • Error: Command failed

    Error: Command failed

    This error pops up in the middle of downloading some of the content, any ideas what goes wrong?

    ⠏ Downloading 5. Expressions/23. What are Variables?.mp4 | Chunks: N/A | Remaining: 70/92node:internal/errors:841 const err = new Error(message); ^

    Error: Command failed: /Users/user/.npm/_npx/97659feec7ea1822/node_modules/ffmpeg-static/ffmpeg -y -allowed_extensions ALL -i /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/What are Variables?/playlist.m3u8 -map 0 -c copy /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/What are Variables?/23. What are Variables?.mp4 ffmpeg version 5.0.1-tessus https://evermeet.cx/ffmpeg/ Copyright (c) 2000-2022 the FFmpeg developers built with Apple clang version 11.0.0 (clang-1100.0.33.17) configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay libavutil 57. 17.100 / 57. 17.100 libavcodec 59. 18.100 / 59. 18.100 libavformat 59. 16.100 / 59. 16.100 libavdevice 59. 4.100 / 59. 4.100 libavfilter 8. 24.100 / 8. 24.100 libswscale 6. 4.100 / 6. 4.100 libswresample 4. 3.100 / 4. 3.100 libpostproc 56. 3.100 / 56. 3.100 [hls @ 0x7fa3d5804280] Skip ('#EXT-X-VERSION:3') [hls @ 0x7fa3d5804280] Opening '/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/key.bin' for reading [hls @ 0x7fa3d5804280] Unable to open key file /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/key.bin [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00001.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00001.ts [hls @ 0x7fa3d5804280] Failed to open segment 1 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00002.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00002.ts [hls @ 0x7fa3d5804280] Failed to open segment 2 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00003.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00003.ts [hls @ 0x7fa3d5804280] Failed to open segment 3 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00004.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00004.ts [hls @ 0x7fa3d5804280] Failed to open segment 4 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00005.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00005.ts [hls @ 0x7fa3d5804280] Failed to open segment 5 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00006.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00006.ts [hls @ 0x7fa3d5804280] Failed to open segment 6 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00007.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00007.ts [hls @ 0x7fa3d5804280] Failed to open segment 7 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00008.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00008.ts [hls @ 0x7fa3d5804280] Failed to open segment 8 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00009.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00009.ts [hls @ 0x7fa3d5804280] Failed to open segment 9 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00010.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00010.ts [hls @ 0x7fa3d5804280] Failed to open segment 10 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00011.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00011.ts [hls @ 0x7fa3d5804280] Failed to open segment 11 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00012.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00012.ts [hls @ 0x7fa3d5804280] Failed to open segment 12 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00013.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00013.ts [hls @ 0x7fa3d5804280] Failed to open segment 13 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00014.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00014.ts [hls @ 0x7fa3d5804280] Failed to open segment 14 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00015.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00015.ts [hls @ 0x7fa3d5804280] Failed to open segment 15 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00016.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00016.ts [hls @ 0x7fa3d5804280] Failed to open segment 16 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00017.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00017.ts [hls @ 0x7fa3d5804280] Failed to open segment 17 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00018.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00018.ts [hls @ 0x7fa3d5804280] Failed to open segment 18 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00019.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00019.ts [hls @ 0x7fa3d5804280] Failed to open segment 19 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00020.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00020.ts [hls @ 0x7fa3d5804280] Failed to open segment 20 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00021.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00021.ts [hls @ 0x7fa3d5804280] Failed to open segment 21 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00022.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00022.ts [hls @ 0x7fa3d5804280] Failed to open segment 22 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00023.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00023.ts [hls @ 0x7fa3d5804280] Failed to open segment 23 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00024.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00024.ts [hls @ 0x7fa3d5804280] Failed to open segment 24 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00025.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00025.ts [hls @ 0x7fa3d5804280] Failed to open segment 25 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00026.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00026.ts [hls @ 0x7fa3d5804280] Failed to open segment 26 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00027.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00027.ts [hls @ 0x7fa3d5804280] Failed to open segment 27 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00028.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00028.ts [hls @ 0x7fa3d5804280] Failed to open segment 28 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00029.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00029.ts [hls @ 0x7fa3d5804280] Failed to open segment 29 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00030.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00030.ts [hls @ 0x7fa3d5804280] Failed to open segment 30 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00031.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00031.ts [hls @ 0x7fa3d5804280] Failed to open segment 31 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00032.ts' for reading [crypto @ 0x7fa3d5804ec0] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00032.ts [hls @ 0x7fa3d5804280] Failed to open segment 32 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00033.ts' for reading [crypto @ 0x7fa3d4705100] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00033.ts [hls @ 0x7fa3d5804280] Failed to open segment 33 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00034.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00034.ts [hls @ 0x7fa3d5804280] Failed to open segment 34 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00035.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00035.ts [hls @ 0x7fa3d5804280] Failed to open segment 35 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00036.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00036.ts [hls @ 0x7fa3d5804280] Failed to open segment 36 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00037.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00037.ts [hls @ 0x7fa3d5804280] Failed to open segment 37 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00038.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00038.ts [hls @ 0x7fa3d5804280] Failed to open segment 38 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00039.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00039.ts [hls @ 0x7fa3d5804280] Failed to open segment 39 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00040.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00040.ts [hls @ 0x7fa3d5804280] Failed to open segment 40 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00041.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00041.ts [hls @ 0x7fa3d5804280] Failed to open segment 41 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00042.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00042.ts [hls @ 0x7fa3d5804280] Failed to open segment 42 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00043.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00043.ts [hls @ 0x7fa3d5804280] Failed to open segment 43 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00044.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00044.ts [hls @ 0x7fa3d5804280] Failed to open segment 44 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00045.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00045.ts [hls @ 0x7fa3d5804280] Failed to open segment 45 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00046.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00046.ts [hls @ 0x7fa3d5804280] Failed to open segment 46 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00047.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00047.ts [hls @ 0x7fa3d5804280] Failed to open segment 47 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00048.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00048.ts [hls @ 0x7fa3d5804280] Failed to open segment 48 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00049.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00049.ts [hls @ 0x7fa3d5804280] Failed to open segment 49 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00050.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00050.ts [hls @ 0x7fa3d5804280] Failed to open segment 50 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00051.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00051.ts [hls @ 0x7fa3d5804280] Failed to open segment 51 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00052.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00052.ts [hls @ 0x7fa3d5804280] Failed to open segment 52 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00053.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00053.ts [hls @ 0x7fa3d5804280] Failed to open segment 53 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00054.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00054.ts [hls @ 0x7fa3d5804280] Failed to open segment 54 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00055.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00055.ts [hls @ 0x7fa3d5804280] Failed to open segment 55 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00056.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00056.ts [hls @ 0x7fa3d5804280] Failed to open segment 56 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00057.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00057.ts [hls @ 0x7fa3d5804280] Failed to open segment 57 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00058.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00058.ts [hls @ 0x7fa3d5804280] Failed to open segment 58 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00059.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00059.ts [hls @ 0x7fa3d5804280] Failed to open segment 59 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00060.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00060.ts [hls @ 0x7fa3d5804280] Failed to open segment 60 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00061.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00061.ts [hls @ 0x7fa3d5804280] Failed to open segment 61 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00062.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00062.ts [hls @ 0x7fa3d5804280] Failed to open segment 62 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00063.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00063.ts [hls @ 0x7fa3d5804280] Failed to open segment 63 of playlist 0 [hls @ 0x7fa3d5804280] Opening 'crypto:/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00064.ts' for reading [crypto @ 0x7fa3d4705140] Unable to open resource: /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00064.ts [hls @ 0x7fa3d5804280] Failed to open segment 64 of playlist 0 [hls @ 0x7fa3d5804280] Error when loading first segment '/Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/index_2160p_Q10_20mbps_00001.ts' /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/What are Variables?/playlist.m3u8: Invalid data found when processing input

    at ChildProcess.exithandler (node:child_process:398:12)
    at ChildProcess.emit (node:events:527:28)
    at maybeClose (node:internal/child_process:1092:16)
    at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5) {
    

    code: 1, killed: false, signal: null, cmd: '/Users/user/.npm/_npx/97659feec7ea1822/node_modules/ffmpeg-static/ffmpeg -y -allowed_extensions ALL -i /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/What are Variables?/playlist.m3u8 -map 0 -c copy /Users/user/Downloads/JavaScript: From First Steps to Professional/5. Expressions/.tmp/index_2160p_Q10_20mbps/What are Variables?/23. What are Variables?.mp4'

    opened by miminas 2
  • Hash function for mobile api?

    Hash function for mobile api?

    I came here from your comment on https://github.com/20lives/FrontendMastersDownloader/ Do you have source code for this hash api, https://fed-hasher.herokuapp.com/timestamp= Its not working for 2.5. Can you provide the source code, I want to update it Or do you know how to generate it?

    opened by Deshdeepak1 2
  • Unable to download old courses

    Unable to download old courses

    course : https://frontendmasters.com/courses/css-grid-flexbox-v2/

    I have a stable internet connection many courses give me this error

    ⠙ Downloading 1. Introduction/1. Introduction.mp4 | Chunks: N/A | Remaining: 44/44 node:internal/process/esm_loader:94 internalBinding('errors').triggerUncaughtException( ^ Response { size: 0, [Symbol(Body internals)]: { body: PassThrough { _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: 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: false, ended: false, finished: false, destroyed: false, decodeStrings: true, defaultEncoding: 'utf8', length: 0, writing: false, corked: 0, sync: true, bufferProcessing: false, onwrite: [Function: bound onwrite], writecb: null, writelen: 0, afterWriteTickInfo: null, buffered: [], bufferedIndex: 0, allBuffers: true, allNoop: true, pendingcb: 0, constructed: true, prefinished: false, errorEmitted: false, emitClose: true, autoDestroy: true, errored: null, closed: false, closeEmitted: false, [Symbol(kOnFinished)]: [] }, allowHalfOpen: true, [Symbol(kCapture)]: false, [Symbol(kCallback)]: null }, stream: PassThrough { _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: 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: false, ended: false, finished: false, destroyed: false, decodeStrings: true, defaultEncoding: 'utf8', length: 0, writing: false, corked: 0, sync: true, bufferProcessing: false, onwrite: [Function: bound onwrite], writecb: null, writelen: 0, afterWriteTickInfo: null, buffered: [], bufferedIndex: 0, allBuffers: true, allNoop: true, pendingcb: 0, constructed: true, prefinished: false, errorEmitted: false, emitClose: true, autoDestroy: true, errored: null, closed: false, closeEmitted: false, [Symbol(kOnFinished)]: [] }, allowHalfOpen: true, [Symbol(kCapture)]: false, [Symbol(kCallback)]: null }, boundary: null, disturbed: false, error: null }, [Symbol(Response internals)]: { type: 'default', url: 'https://stream.frontendmasters.com/2021/10/26/ePdSMfagcI/nrxyGtRpmz/index_2160p_Q10_20mbps.m3u8', status: 403, statusText: 'Forbidden', headers: Headers { [Symbol(query)]: [ 'access-control-allow-credentials', 'true', 'access-control-allow-methods', 'GET', 'access-control-allow-origin', 'https://frontendmasters.com', 'access-control-max-age', '3000', 'connection', 'close', 'content-type', 'application/xml', 'date', 'Thu, 06 Oct 2022 04:21:12 GMT', 'server', 'AmazonS3', 'transfer-encoding', 'chunked', 'vary', 'Origin,Access-Control-Request-Headers,Access-Control-Request-Method', 'via', '1.1 b29e77b539ee60c59c6b595481ca2fdc.cloudfront.net (CloudFront)', 'x-amz-cf-id', 'kBgl7Ov8KpA1e3LPqRiexZQRBf5aXsGgwk0Gv2PyICfk2UohF_wmcg==', 'x-amz-cf-pop', 'MAA50-C2', 'x-cache', 'Error from cloudfront' ], [Symbol(context)]: null }, counter: 0, highWaterMark: 16384 } }

    opened by gladiatorgiftson 2
  • Download is not working

    Download is not working

    Hi! First of all, thank you for your HUGE work..really! I opened this issue because something seems to have changed from our FrontendMaster friends: it looks like that the cookie wordpress_logged_in_xxx has changed and now it is called fem_auth_mod and the script no longer downloads. Can you help us? Thanks a lot!

    opened by ilbuonteo22 1
  • Await Error while Installing

    Await Error while Installing

    While installing it shows this error

    file:///home/pratyushmahapatra/.npm/_npx/97659feec7ea1822/node_modules/fem-dl/src/index.js:32
    } = await prompts([{
        ^^^^^
    
    SyntaxError: Unexpected reserved word
        at Loader.moduleStrategy (internal/modules/esm/translators.js:133:18)
        at async link (internal/modules/esm/module_job.js:42:21)
    
    opened by pranikz 2
Releases(v0.1.6)
  • v0.1.6(Dec 4, 2022)

  • v0.1.5(Nov 20, 2022)

  • v0.1.4(Nov 20, 2022)

    Fixes

    • fix: throw child process errors (b24fdb07848d97d95f147339558acffe9d3085b4)
    • fix: don't save missing/corrupted files (4b47d98f288a6ed9542ae34690639edf6e47619a)
    Source code(tar.gz)
    Source code(zip)
  • v0.1.3(Nov 20, 2022)

    Improvements

    • Enable keep-alive for http to improve performance (1a7330b01fcdf2a166fa885b02406e70efba0b22)

    Features

    • Detect environment variables (FEM_DL_DOWNLOAD_PATH, FEM_DL_COOKIES, FEM_DL_COURSE_URL) (b1d6675183eaa819017c4c2766200824877943f2)

    Fixes

    • Using ffmpeg to download chunks (653068ed029d14a6c56cff8b15e3d71840d0f687)
    Source code(tar.gz)
    Source code(zip)
  • v0.1.2(Oct 6, 2022)

  • v0.1.1(Oct 5, 2022)

    Improvements

    • Connect to FrontendMasters directly without chromium engine bloat (06537fb5aa5943e18254652bb0c473bcb13f0b0b)

    Features

    • Retry on fail (083f61da933e26a86a571a34524600332091b2d5)

    Fixes

    • npx installation fail (e19fe99f14704d2139def91ff2edeb1efc6d09b7)
    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Sep 19, 2022)

    Features

    • Multiple video formats
    • Multiple video quality
    • Include captions/subtitles to episodes
    • Publish executable file to npm (Try npx fem-dl)
    • Format lesson name by it's index (ex: 1. lesson one)
    • Format episode name by it's index (ex: 1. lesson one/1. episode one)

    Fixes

    • Remove forbidden path characters for windows (#1)
    • Accept direct course link without the need of lesson/section slug
    Source code(tar.gz)
    Source code(zip)
Owner
Abdulrahman Salah
He is not a true believer who eats his fill while his neighbour is hungry. - Prophet Muhammad (ﷺ)
Abdulrahman Salah
Full-stack-todo-rust-course - we are building this out now in prep for the real course

full-stack-todo-rust-course wip - we are building this out now in prep for the real course Plan Come up with the requirements Create user stories Desi

Brooks Builds 89 Jan 2, 2023
We are students of group named "Special-Team" of GоIT academy. We graduated JavaScript course and for consolidate in practice 📌 knowledges received on this course, we together 🤝 developed graduation project

Проект сайту "Filmoteka" Привіт! ?? Ми студенти групи під назвою "Special-Team" академії GоIT ?? ?? Ми закінчили курс JavaScript і для того, щоб закрі

Oksana Banshchykova 12 Jan 3, 2023
Course material for a ~10 hours introductionary course for Julia. Topics: Introduction, Parallel Programming, Data Science

Development We use Franklin.jl to generate the lecture material. To do so, simply activate the environment, use Franklin and run the local server: act

GregorE 3 Dec 15, 2022
Jaime Gómez-Obregón 119 Dec 24, 2022
A rate-limiter using Durable Objects on CF Workers that actually doesn't rate limit anything.

Rate Limiter - built for Cloudflare Workers, using Durable Objects Features Supports fixed or sliding window algorithms Scoped rate-limiting Caching C

Ian 11 Dec 15, 2022
Hacktoberfest is all about meeting up all brains. In this repository we are planning to come with many ideas and works. You all can share your ides/works here.

Hacktoberfest Submit your Work Hacktoberfest is all about meeting up all brains. In this repository we are planning to come with many ideas and works.

Chinmay Patil 3 Oct 5, 2022
Migirh is an HLS downloader based on Minyami.

Migirh Migirh (Minyami GUI for Independent Recording HLS)是一个 Minyami GUI。 Minyami 是空空( @Last-Order )开发的一个可爱的HLS下载器。 Migirh 怎么念 就像 みぎり (me-gi-li)一样,当然你

Ted Zyzsdy 5 Dec 18, 2022
All in one YouTube App with downloader , background player and many more features.

YT PRO Download YT PRO Features Video Downloader Ads Blocker Picture in Picture Mode Shows Number of Dislikes Background Audio Player Auto Updation of

Prateek Chaubey 22 Dec 31, 2022
Probably the friendliest social media downloader.

cobalt Sleek and easy to use social media downloader built on JavaScript. Try it out live: co.wukko.me! What is cobalt? Everyone is annoyed by the mes

null 328 Dec 30, 2022
Archive for LeechersParadise.com, the free leech downloader.

LeechersParadise This project has no been archived due to the project being discontinued for many reasons. Thank you to the pirate community for makin

David 14 Nov 5, 2022
This is the FARM Stack course, where you are going to learn how to build an application from scratch using FASTAPI, React and mongoDB

FARM-Stack-Course This is the FARM Stack course, where you are going to learn how to build an application from scratch using FASTAPI, React and mongoD

Bek Brace 121 Jan 2, 2023
Team project within the course of Software System Design and Analysis.

?? InnoBookCrossing - Application for sharing books at Innopolis gh-md-toc ?? General Information Description The application is designed to help peop

Dariya 33 Oct 22, 2022
The culmination of Encode Academy, the 8-week long Solidity course by Encode Club in collaboration with Extropy

Encode Academy | DAO: Real Estate & Renting What is this? This is the culmination of Encode Academy, the 8-week long Solidity course by Encode Club in

Oliver H. D. 5 May 25, 2022
Javascript-testing-practical-approach-2021-course-v3 - Javascript Testing, a Practical Approach (v3)

Javascript Testing, a Practical Approach Description This is the reference repository with all the contents and the examples of the "Javascript Testin

Stefano Magni 2 Nov 14, 2022
Nftix-demo-ui - Demo UI used in my NFT course on Egghead.io

NFTix Demo UI This repository contains the UI used for my Egghead course on building a NFT ticketing system ?? ?? If you're watching the videos, use t

Ryan Harris 10 Dec 17, 2022
The code for Leveluptutorials.com course on Remix

Level Up Tutorials Remix Tutorial Series 23 Video tutorials to teach you the ins and outs of Remix For Sale & Streaming https://www.leveluptutorials.c

Level Up Tutorials 5 Aug 2, 2022
My hometask for pre-basic course on OTUS

Репозиторий с домашними заданиями по подготовительному курсу JS OTUS Домашнее задание №1 «Линейные алгоритмы» В переменных a и b хранятся числа. Напис

null 1 Jan 21, 2022
Netflix clone, React Advance, scrimba course

Final Project from React Advance in Scrimba, excellent and complex work, features like redirection, HOC's, Hooks, Firebase to authenticated, styled-components and more...

Hendrid Gonzalez 5 Feb 9, 2022
Demo repo used in crash course for students learning web development.

Web Development Crash Course Hosted by Rubberdøk Preparation Following these steps prepares you to join the interactive React demo of the crash course

Rubberdøk 3 Sep 20, 2022