{"version":3,"file":"youtube.mjs","sources":["../../../src/extractors/youtube.ts"],"sourcesContent":["import ytdl from \"ytdl-core\";\nimport { downloadVideo } from \"../downloader\";\n\nclass Youtube {\n  url: string;\n\n  constructor(url: string) {\n    this.url = url;\n  }\n\n  async extractVideos() {\n    const videoId = ytdl.getURLVideoID(this.url);\n    const {\n      videoDetails,\n      thumbnail_url: thumbnailUrl,\n      formats,\n    } = await ytdl.getInfo(videoId);\n\n    const videoFormats: any = ytdl\n      .filterFormats(formats, \"videoandaudio\")\n      .map((format) => ({\n        url: format.url,\n        quality: format.qualityLabel || format.quality,\n      }));\n\n    videoFormats.forEach((video: any) => {\n      // eslint-disable-next-line no-param-reassign\n      video.thumbnail =\n        thumbnailUrl ||\n        videoDetails?.thumbnails[0]?.url ||\n        videoDetails?.thumbnail?.thumbnails[0]?.url;\n    });\n    return videoFormats;\n  }\n\n  static async download(videoUrl: string) {\n    await downloadVideo(videoUrl);\n  }\n}\n\nexport default Youtube;\n"],"names":[],"mappings":";;;AAGA,MAAM,OAAQ,CAAA;AAAA,EACZ,GAAA,CAAA;AAAA,EAEA,YAAY,GAAa,EAAA;AACvB,IAAA,IAAA,CAAK,GAAM,GAAA,GAAA,CAAA;AAAA,GACb;AAAA,EAEA,MAAM,aAAgB,GAAA;AACpB,IAAA,MAAM,OAAU,GAAA,IAAA,CAAK,aAAc,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAC3C,IAAM,MAAA;AAAA,MACJ,YAAA;AAAA,MACA,aAAe,EAAA,YAAA;AAAA,MACf,OAAA;AAAA,KACE,GAAA,MAAM,IAAK,CAAA,OAAA,CAAQ,OAAO,CAAA,CAAA;AAE9B,IAAM,MAAA,YAAA,GAAoB,KACvB,aAAc,CAAA,OAAA,EAAS,eAAe,CACtC,CAAA,GAAA,CAAI,CAAC,MAAY,MAAA;AAAA,MAChB,KAAK,MAAO,CAAA,GAAA;AAAA,MACZ,OAAA,EAAS,MAAO,CAAA,YAAA,IAAgB,MAAO,CAAA,OAAA;AAAA,KACvC,CAAA,CAAA,CAAA;AAEJ,IAAa,YAAA,CAAA,OAAA,CAAQ,CAAC,KAAe,KAAA;AAEnC,MAAM,KAAA,CAAA,SAAA,GACJ,YACA,IAAA,YAAA,EAAc,UAAW,CAAA,CAAC,CAAG,EAAA,GAAA,IAC7B,YAAc,EAAA,SAAA,EAAW,UAAW,CAAA,CAAC,CAAG,EAAA,GAAA,CAAA;AAAA,KAC3C,CAAA,CAAA;AACD,IAAO,OAAA,YAAA,CAAA;AAAA,GACT;AAAA,EAEA,aAAa,SAAS,QAAkB,EAAA;AACtC,IAAA,MAAM,cAAc,QAAQ,CAAA,CAAA;AAAA,GAC9B;AACF;;;;"}