/**
* @module btch-downloader
* @description A module for downloading media from various platforms, including Instagram, TikTok, Facebook, Twitter, YouTube, and MediaFire.
* @see {@link https://github.com/hostinger-bot/btch-downloader|GitHub Repository} for contributions and issue reporting.
* @version 4.0.15
* @author Tio
* @license MIT
* @example
* // Install the module
* npm install btch-downloader
*
* // Import and use the module
* const { aio, igdl, ttdl, fbdown, twitter, youtube, mediafire, pinterest, gdrive, capcut } = require('btch-downloader');
*/
/**
* Downloads media from a given URL across supported platforms.
* @async
* @function aio
* @param {string} url - The URL of the media to download (e.g., Instagram, TikTok, etc.).
* @returns {Promise<Object>} A JSON object containing the media data.
* @throws {Error} If the URL is invalid or the media is not accessible.
* @example
* const { aio } = require('btch-downloader');
* aio('https://www.instagram.com/p/ByxKbUSnubS/?utm_source=ig_web_copy_link')
* .then(data => console.log(data))
* .catch(err => console.error(err));
* // JSON
*/
/**
* Downloads media from Instagram.
* @async
* @function igdl
* @param {string} url - The Instagram media URL.
* @returns {Promise<Array<Object>|Object>} An array of JSON objects or an error object.
* @throws {Error} If the URL is invalid or the media is not accessible.
* @example
* const { igdl } = require('btch-downloader');
* igdl('https://www.instagram.com/p/ByxKbUSnubS/?utm_source=ig_web_copy_link')
* .then(data => console.log(data))
* .catch(err => console.error(err));
* // JSON
*/
/**
* Downloads media from TikTok.
* @async
* @function ttdl
* @param {string} url - The TikTok media URL.
* @returns {Promise<Object>} A JSON object containing the media data.
* @throws {Error} If the URL is invalid or the media is not accessible.
* @example
* const { ttdl } = require('btch-downloader');
* ttdl('https://www.tiktok.com/@omagadsus/video/7025456384175017243')
* .then(data => console.log(data))
* .catch(err => console.error(err));
* // JSON
*/
/**
* Downloads media from Facebook.
* @async
* @function fbdown
* @param {string} url - The Facebook media URL.
* @returns {Promise<Object>} A JSON object containing the media data.
* @throws {Error} If the URL is invalid or the media is not accessible.
* @example
* const { fbdown } = require('btch-downloader');
* fbdown('https://www.facebook.com/watch/?v=1393572814172251')
* .then(data => console.log(data))
* .catch(err => console.error(err));
* // JSON
*/
/**
* Downloads media from Twitter.
* @async
* @function twitter
* @param {string} url - The Twitter media URL.
* @returns {Promise<Object>} A JSON object containing the media data.
* @throws {Error} If the URL is invalid or the media is not accessible.
* @example
* const { twitter } = require('btch-downloader');
* twitter('https://twitter.com/gofoodindonesia/status/1229369819511709697')
* .then(data => console.log(data))
* .catch(err => console.error(err));
* // JSON
*/
/**
* Downloads media from YouTube.
* @async
* @function youtube
* @param {string} url - The YouTube media URL.
* @returns {Promise<Object>} A JSON object containing the media data.
* @throws {Error} If the URL is invalid or the media is not accessible.
* @example
* const { youtube } = require('btch-downloader');
* youtube('https://youtube.com/watch?v=C8mJ8943X80')
* .then(data => console.log(data))
* .catch(err => console.error(err));
* // JSON
*/
/**
* Downloads media from MediaFire.
* @async
* @function mediafire
* @param {string} url - The MediaFire media URL.
* @returns {Promise<Object>} A JSON object containing the media data.
* @throws {Error} If the URL is invalid or the media is not accessible.
* @example
* const { mediafire } = require('btch-downloader');
* mediafire('https://www.mediafire.com/file/941xczxhn27qbby/GBWA_V12.25FF-By.SamMods-.apk/file')
* .then(data => console.log(data))
* .catch(err => console.error(err));
* // JSON
*/
/**
* Downloads media from Capcut.
* @async
* @function capcut
* @param {string} url - The Capcut media URL.
* @returns {Promise<Object>} A JSON object containing the media data.
* @throws {Error} If the URL is invalid or the media is not accessible.
* @example
* const { capcut } = require('btch-downloader');
* capcut('https://www.capcut.com/template-detail/7299286607478181121?template_id=7299286607478181121&share_token=80302b19-8026-4101-81df-2fd9a9cecb9c&enter_from=template_detail®ion=ID&language=in&platform=copy_link&is_copy_link=1')
* .then(data => console.log(data))
* .catch(err => console.error(err));
* // JSON
*/
/**
* Downloads media from Gdrive.
* @async
* @function gdrive
* @param {string} url - The Google Drive media URL.
* @returns {Promise<Object>} A JSON object containing the media data.
* @throws {Error} If the URL is invalid or the media is not accessible.
* @example
* const { gdrive } = require('btch-downloader');
* gdrive('https://drive.google.com/file/d/1thDYWcS5p5FFhzTpTev7RUv0VFnNQyZ4/view?usp=drivesdk')
* .then(data => console.log(data))
* .catch(err => console.error(err));
* // JSON
*/
/**
* Downloads or searches media from Pinterest using a URL or text query.
* @async
* @function pinterest
* @param {string} input - The Pinterest media URL or a search query.
* @returns {Promise<Object>} A JSON object containing the media data.
* @throws {Error} If the input is invalid or the media is not accessible.
* @example
* const { pinterest } = require('btch-downloader');
* // Using a URL
* pinterest('https://pin.it/4CVodSq')
* .then(data => console.log(data))
* .catch(err => console.error(err));
* @example
* // Using a search query
* pinterest('Zhao Lusi')
* .then(data => console.log(data))
* .catch(err => console.error(err));
*/