the-rebel-downloader
Version:
Download video/photo from multiple sites
355 lines (285 loc) • 10.5 kB
Markdown
# All In One Downloader
Download Media From Multiple Website Using One Library.
Allmost all downloader scrape directly from the sites without 3rd api.
# Available Sites
Still Adding New More...
<table>
<tr>
<td align="center">
<img src="https://cdn.simpleicons.org/instagram/FF0000" alt="Instagram Logo"
style="width: 30px; height: 30px; object-fit: contain; display: block; margin: 0 auto 5px auto;" /><br>
<b>Instagram</b>
</td>
<td align="center">
<img src="https://cdn.simpleicons.org/facebook/1877F2" alt="Facebook Logo"
style="width: 30px; height: 30px; object-fit: contain; display: block; margin: 0 auto 5px auto;" /><br>
<b>Facebook</b>
</td>
<td align="center">
<img src="https://cdn.simpleicons.org/tiktok/000000" alt="Tiktok Logo"
style="width: 30px; height: 30px; object-fit: contain; display: block; margin: 0 auto 5px auto;" /><br>
<b>Tiktok</b>
</td>
<td align="center">
<img src="https://cdn.simpleicons.org/x/1DA1F2" alt="X (Twitter) Logo"
style="width: 30px; height: 30px; object-fit: contain; display: block; margin: 0 auto 5px auto;" /><br>
<b>Twitter</b>
</td>
<td align="center">
<img src="https://cdn.simpleicons.org/youtube/FF0000" alt="Youtube Logo"
style="width: 30px; height: 30px; object-fit: contain; display: block; margin: 0 auto 5px auto;" /><br>
<b>Youtube</b>
</td>
<td align="center">
<img src="https://cdn.simpleicons.org/googledrive/4285F4" alt="Google Drive Logo"
style="width: 30px; height: 30px; object-fit: contain; display: block; margin: 0 auto 5px auto;" /><br>
<b>GoogleDrive</b>
</td>
</tr>
<tr>
<td align="center">
<img src="https://logos-world.net/wp-content/uploads/2024/01/CapCut-Symbol.png" alt="Capcut Logo"
style="width: 30px; height: 30px; object-fit: contain; display: block; margin: 0 auto 5px auto;" /><br>
<b>Capcut</b>
</td>
<td align="center">
<img src="https://cdn.simpleicons.org/pixiv/2A95FF" alt="Pixiv Logo"
style="width: 30px; height: 30px; object-fit: contain; display: block; margin: 0 auto 5px auto;" /><br>
<b>Pixiv</b>
</td>
<td align="center">
<img src="https://cdn.simpleicons.org/mega/F00000" alt="Mega Logo"
style="width: 30px; height: 30px; object-fit: contain; display: block; margin: 0 auto 5px auto;" /><br>
<b>Mega</b>
</td>
<td align="center">
<img src="https://1.bp.blogspot.com/-PuWtJg49s_0/YCPIGwfvu6I/AAAAAAAAD40/qSgEwMEWRB0u8yxozbojxWGChflTDrX8ACLcBGAsYHQ/s1600/Logo%2BSnack%2BVideo.png" alt="Snack Video Logo"
style="width: 30px; height: 30px; object-fit: contain; display: block; margin: 0 auto 5px auto;" /><br>
<b>Snack</b>
</td>
<td align="center">
<img src="https://cdn.simpleicons.org/pinterest/E60023" alt="Pinterest Logo"
style="width: 30px; height: 30px; object-fit: contain; display: block; margin: 0 auto 5px auto;" /><br>
<b>Pinterest</b>
</td>
<td align="center">
<img src="https://cdn.simpleicons.org/bilibili/00A1D6" alt="Bilibili Logo"
style="width: 30px; height: 30px; object-fit: contain; display: block; margin: 0 auto 5px auto;" /><br>
<b>Bilibili</b>
</td>
</tr>
<tr>
<td align="center">
<img src="https://sfile.mobi/icon/sfile-icon-192x192.png" alt="Sfile Logo"
style="width: 30px; height: 30px; object-fit: contain; display: block; margin: 0 auto 5px auto;" /><br>
<b>Sfile</b>
</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
# Required
For Youtube & Bilibili you need ffmpeg installed
### LInux Example
```bash
sudo apt update
sudo apt install ffmpeg
ffmpeg -version
```
### Windows Example
1. **Download FFmpeg:**
- Visit the [FFmpeg Download page](https://ffmpeg.org/download.html).
- Click the "Windows" link and choose a build provider like gyan.dev or BtbN.
2. **Extract the ZIP File:**
- Download and extract the ZIP file (e.g., `ffmpeg-release-full.7z`) using 7-Zip or WinRAR.
3. **Add to PATH:**
- Copy the path to the `bin` folder (e.g., `C:\path\to\ffmpeg\bin`).
- Go to "Control Panel" > "System" > "Advanced system settings" > "Environment Variables."
- Edit the `Path` variable and add the copied path. Save changes.
4. **Verify Installation:**
- Open Command Prompt and run:
```bash
ffmpeg -version
```
# Usage
### Installation:
```bash
npm i the-rebel-downloader
```
## Example
For more example will added in future.
```js
const nexo = require("the-rebel-downloader");
// Some Example Url
const listUrl = {
twitter: "https://twitter.com/x_cast_x/status/1809598797603041498?t=tXO1JdAR1Avm2BY5wNQX-w&s=19",
instagram: "https://www.instagram.com/reel/C9cFHKIySEu/?igsh=NnhmdmppdHo3dm9o",
facebook: "https://www.facebook.com/share/r/WsMBxDEAWcMVXCf9/?mibextid=D5vuiz",
tiktok: "https://vm.tiktok.com/ZSYnnbXW7",
"google-drive": "https://drive.google.com/file/d/1E8fOgl4nu4onGR756Lw2ZAVv6NgP1H74/view?usp=drive_link",
sfile: "https://sfile.mobi/5g9STNCU525"
}
(async () => {
// All In One For Available Sites
const result = await nexo.aio('any_url')
console.log(result)
// Instagram Downloader
const insta = await nexo.instagram(listUrl.instagram)
console.log(insta)
// Facebook Downloader
const fb = await nexo.facebook(listUrl.facebook)
console.log(insta)
// ETC....
{
aio,
facebook,
instagram,
youtube,
mega,
tiktok,
sfile,
pixiv,
snack,
bilibili,
capcut,
pinterest: {
download
},
}
})()
```
## Youtube Example
```js
const nexo = require("the-rebel-downloader");
// Example Url
const youtubeUrl = 'https://youtu.be/X_-449tJ7ys?si=iZoyMxNfqZC1iYKf'
// Playlist Example
const playlistUrl = 'https://www.youtube.com/playlist?list=PL8mG-RkN2uTzbbUgvbn2YzBLLU3wktwo0'
// 1: 144p || 2: 360p || 3: 480p || 4: 720p || 5: 1080p || 6: 1440p || 7: 2160p || 8: highestaudio/mp3/audio || 9: bitrate List
const quality = 3
// Check Available Bitrate For Audio
const bitrateList = 9
// Playlist Need Directory
// If Null Will Create New ./temp Directory
const dirPath = './youtube'
(async () => {
// Download Custom Quality Youtube
const youtube = await nexo.youtube(youtubeUrl, quality)
console.log(youtube)
// The Download Will Saved Into Folder
const youtubePlaylist = await nexo.youtubePlaylist(playlistUrl, quality, dirPath)
console.log(youtubePlaylist)
// Download Custom Bitrate Audio
const bitList = await nexo.youtube(youtubeUrl, bitrateList)
/**
Ouput Bitrate Example
{
"creator": "@Rebel",
"status": "true,
"data": {
"bitrateList": [
{
"codec": "opus",
"bitrate": 160,
"itag": 251
},
{
"codec": "mp4a.40.2",
"bitrate": 128,
"itag": 140
},
// Etc...
]
}
}
**/
const customAudio = await nexo.youtube(youtubeUrl, 160) // (videoUrl, bitrate)
console.log(customAudio)
// ETC....
})()
```
## Pixiv Example
For R-18 works require cookie
```js
const nexo = require("the-rebel-downloader");
// Example Url
const pixivUrl = 'https://www.pixiv.net/en/artworks/120829610'// Support URL And IllustID
//Example Batch Download
const userUrl = 'https://www.pixiv.net/en/users/25030629' // Support URL And UserID
const type = 'illust' // illust || manga || novels || mangaSeries || novelSeries || default was illust
// You Can Use The PHPSESSID= Cookie.
const cookie = '55511249_rVrZ0ygXjti1WfuDahh4yCDE4Qo5UUqNK' // This Just Example Cookie
(async () => {
// Without Cookie
const pixiv = await nexo.pixiv(pixivUrl)
console.log(pixiv)
// Download using cookie
const pixiv18 = await nexo.pixiv(pixivUrl, cookie)
console.log(pixiv18)
// Download Batch
const pixivbatch = await nexo.pixivBatch(pixivUrl, cookie, type)
console.log(batch)
})()
```
### How To Get Cookie:
1. Login to pixiv using your account
2. Open the developer tools (<kbd>F12</kbd>, <kbd>Ctrl+Shift+I</kbd>, or <kbd>Cmd+J</kbd>)
3. Go to the `Application` tab
4. Go to the `Storage` section and click on `Cookies`
5. Look for the `PHPSESSID`
6. Open the object, right click on value and copy your session token.

## Bilibili Example
```js
const nexo = require("the-rebel-downloader");
// Example Url
const biliUrl = 'https://www.bilibili.tv/id/video/4791529255207424?bstar_from=bstar-web.homepage.recommend.all'
// 144P || 240P || 360P || 480P || 720P
const quality = '480P' // Default 480P
(async () => {
// Download Custom Quality Bilibili
const bili = await nexo.bilibili(biliUrl, quality)
console.log(bili)
})()
```
## PINTEREST Example
```js
const nexo = require("the-rebel-downloader");
// Example Url
const pinUrl = 'https://id.pinterest.com/pin/774124930087393/'
(async () => {
// Download Pinterest
const pinDownload = await nexo.pinterest.download(pinUrl)
console.log(pinDownload)
// Pinterest Search
// Size optional
const pinSearch = await nexo.pinterest.search('cat', 10)
console.log(pinSearch)
// Pinterest Profile
const pinProfile = await nexo.pinterest.profile('anon')
console.log(pinProfile)
})()
```
# Example Using Proxy
For like instagram that have ip limit
```js
const nexo = require("the-rebel-downloader");
const { HttpsProxyAgent } = require('https-proxy-agent');
const username = 'example_user'
const password = 'example'
const hostname = 'ex.ample.com'
const port = 6060
const httpsProxyAgent = new HttpsProxyAgent(`http://${username}:${password}@${hostname}:${port}`); // Use HttpsProxyAgent
// Some Example Url
const url = "https://www.instagram.com/reel/C9cFHKIySEu/?igsh=NnhmdmppdHo3dm9o"
(async () => {
// Using Proxy
const result = await nexo.aio(url, httpsProxyAgent)
console.log(result)
})()
```
## License
the-rebel-downloader is licensed under the [MIT License](https://opensource.org/licenses/MIT). Please refer to the LICENSE file for more information.