UNPKG

abot-scraper

Version:

scraper random for downloader and searching

367 lines (276 loc) 10.1 kB
# abot-scraper A comprehensive scraper package for downloading content from social media platforms and performing AI-powered image processing tasks. Supports Facebook, TikTok, Instagram, YouTube, SFile downloads, plus advanced image enhancement and background removal tools. ## Features ### 📥 **Downloader** - **Facebook**: Download videos from Facebook posts - **TikTok**: Download videos from TikTok (watermark-free) - **Instagram**: Download posts, stories, and reels - **YouTube**: Download videos in multiple formats and quality options - **YouTube MP3**: Download YouTube videos as MP3 audio files - **SFile**: Download files from SFile sharing platform ### 🔍 **Search** - **YouTube Search**: Find videos by keywords - **Instagram Stories**: Get user's Instagram stories - **Wallpaper Search**: Find high-quality wallpapers - **Wikimedia Search**: Search for images and media from Wikimedia - **SFile Search**: Search for files on SFile platform ### 🎨 **AI Tools** - **Background Removal**: AI-powered background removal from images - **Image Enhancement**: Enhance image quality using Remini AI (V1 & V2) - **Image Upload**: Upload images and get shareable URLs ### 🛠️ **Technical Features** - **TypeScript Support**: Full type definitions included - **Dual Package**: Works with both CommonJS and ES Modules - **Error Handling**: Comprehensive error handling and validation - **Modern Architecture**: Built with latest Node.js standards ## Installation ### Stable Version Install the latest stable version from npm: ```bash npm install abot-scraper # or yarn add abot-scraper # or bun add abot-scraper ``` ### Development Version Install the latest development version directly from GitHub (not recommended for production): ```bash npm install github:ahlulmukh/abot-scraper ``` ## Usage ### Quick Start Example ```javascript const { Downloader, Search, Tools } = require('abot-scraper'); const fs = require('fs'); async function example() { // Initialize classes const downloader = new Downloader(); const search = new Search(); const tools = new Tools(); try { // Download a TikTok video const tiktokResult = await downloader.tiktokDownloader( 'https://vt.tiktok.com/ZSB2LtXQF/' ); console.log('TikTok download:', tiktokResult); // Search YouTube videos const ytResults = await search.ytSearch('phonk music'); console.log('YouTube search results:', ytResults); // Remove background from image const imageBuffer = fs.readFileSync('path/to/image.jpg'); const bgRemoved = await tools.removeBackground(imageBuffer); console.log('Background removed:', bgRemoved); } catch (error) { console.error('Error:', error.message); } } example(); ``` ### CommonJS (Node.js with require) ```javascript // Import classes directly const { Downloader, Search, Tools } = require('abot-scraper'); const downloader = new Downloader(); const search = new Search(); const tools = new Tools(); // Download a Facebook video const result = await downloader.facebookDownloader( 'https://facebook.com/video/123' ); const searchResult = await search.sfileSearch('query', 1); ``` ### ES Modules (modern JavaScript/TypeScript) ```javascript // Import classes directly import { Downloader, Search, Tools } from 'abot-scraper'; const downloader = new Downloader(); const search = new Search(); const tools = new Tools(); // Download a Facebook video const result = await downloader.facebookDownloader( 'https://facebook.com/video/123' ); const searchResult = await search.sfileSearch('query', 1); ``` ### TypeScript TypeScript declarations are included, providing full type safety and IntelliSense support: ```typescript import { Downloader, Search, Tools, type ApiResponse, type FacebookResult, } from 'abot-scraper'; // TypeScript will provide full type checking and autocomplete const downloader = new Downloader(); const result: ApiResponse<FacebookResult> = await downloader.facebookDownloader( 'https://facebook.com/video/123' ); // Types are automatically inferred const fbResult = await downloader.facebookDownloader('https://example.com'); // Return type is known ``` ## API Reference ### Downloader Class The `Downloader` class provides methods to download content from various platforms. #### Available Methods - `facebookDownloader(url)` - Download Facebook videos - `tiktokDownloader(url)` - Download TikTok videos - `instagramDownloader(url)` - Download Instagram posts/stories/reels - `youtubeDownloader(url)` - Download YouTube videos with multiple formats - `ytMp3Downloader(url)` - Download YouTube videos as MP3 audio - `sfileDownloader(url)` - Download files from SFile #### Example Usage ```javascript // Import the Downloader class const { Downloader } = require('abot-scraper'); const downloader = new Downloader(); // Download YouTube video const result = await downloader.youtubeDownloader( 'https://youtu.be/j_MlBCb9-m8' ); console.log(result); // Download TikTok video const tiktokResult = await downloader.tiktokDownloader( 'https://vt.tiktok.com/ZSB2LtXQF/' ); console.log(tiktokResult); // Download Facebook video const fbResult = await downloader.facebookDownloader( 'https://facebook.com/video/123' ); console.log(fbResult); // Download Instagram content const igResult = await downloader.instagramDownloader( 'https://www.instagram.com/p/CK0tLXyAzEI/' ); console.log(igResult); // Download YouTube as MP3 const mp3Result = await downloader.ytMp3Downloader( 'https://youtu.be/H_z0t5NQs7U' ); console.log(mp3Result); ``` ### Search Class The `Search` class provides methods to search for content across various platforms. #### Available Methods - `ytSearch(query)` - Search YouTube videos by query - `igStory(username)` - Get Instagram stories for a user - `wallpaper(query, page?)` - Search for wallpapers - `wikimedia(query)` - Search Wikimedia content - `sfileSearch(query, page?)` - Search SFile for files #### Example Usage ```javascript // Import the Search class const { Search } = require('abot-scraper'); const search = new Search(); // Search YouTube videos const ytResults = await search.ytSearch('music video'); console.log(ytResults); // Get Instagram stories const igStories = await search.igStory('cristiano'); console.log(igStories); // Search wallpapers const wallpapers = await search.wallpaper('abstract art', 1); console.log(wallpapers); // Search Wikimedia const wikimediaResults = await search.wikimedia('nature photos'); console.log(wikimediaResults); // Search SFile const sfileResults = await search.sfileSearch('Capcut Pro'); console.log(sfileResults); ``` ### Tools Class The `Tools` class provides utility methods for image processing and manipulation. #### Available Methods - `removeBackground(buffer)` - Remove background from an image using AI - `reminiV1(buffer)` - Enhance image quality using Remini V1 API - `reminiV2(buffer)` - Enhance image quality using Remini V2 API - `uploadImage(buffer)` - Upload image and get a shareable URL #### Example Usage ```javascript // Import the Tools class const { Tools } = require('abot-scraper'); const fs = require('fs'); const tools = new Tools(); // Remove background from image const imageBuffer = fs.readFileSync('path/to/image.jpg'); const bgRemoved = await tools.removeBackground(imageBuffer); console.log(bgRemoved); // Enhance image quality const imageBuffer = fs.readFileSync('path/to/image.jpg'); const enhanced = await tools.reminiV1(imageBuffer); console.log(enhanced); // Upload image const uploaded = await tools.uploadImage(imageBuffer); console.log(uploaded); ``` ### Error Handling All methods return promises and should be wrapped in try-catch blocks or use `.catch()` for proper error handling: ```javascript try { const downloader = new Downloader(); const result = await downloader.youtubeDownloader( 'https://youtu.be/invalid-url' ); console.log(result); } catch (error) { console.error('Download failed:', error.message); } // Or using .catch() const downloader = new Downloader(); downloader .facebookDownloader('https://facebook.com/video/123') .then(result => console.log(result)) .catch(error => console.error('Error:', error)); ``` ### Response Format All API methods return a standardized response format: ```typescript interface ApiResponse<T> { creator: string; // Package creator information status: number | boolean; // Success status (200 for success, false for error) result?: T; // The actual data (varies by method) msg?: string; // Error message if status indicates failure } ``` Example responses: ```javascript // Successful TikTok download { creator: "@abotscraper – ahmuq", status: 200, result: { title: "Video Title", video: "https://download-url.com/video.mp4", audio: "https://download-url.com/audio.mp3" } } // Error response { creator: "@abotscraper – ahmuq", status: false, msg: "Invalid URL provided" } ``` ## Requirements - **Node.js**: Version 16.0.0 or higher - **Internet connection**: Required for scraping online content - **Dependencies**: All required dependencies are automatically installed ## Package Information - **Package Type**: Dual (CommonJS + ES Modules) - **Build System**: Modern TypeScript/JavaScript build pipeline - **Source Format**: TypeScript with ES Modules - **Distribution**: Both CommonJS (.cjs) and ESM (.mjs) builds included - **TypeScript**: Full type declarations provided (.d.ts files) - **Testing**: Comprehensive test suite with 100% coverage - **Compatibility**: Works with Node.js, Bun, and other JavaScript runtimes ## Contributing We welcome contributions from the community! If you encounter a bug or have a feature request, please open an issue on our [GitHub repository](https://github.com/ahlulmukh/abot-scraper). To contribute: 1. Fork the repository. 2. Create a new branch for your feature or bug fix. 3. Submit a pull request with a detailed description of your changes. ## License This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details.