A collection of local scrapers for the Nuvio streaming application. These scrapers allow you to fetch streams from various sources directly within the app.
-
Open Nuvio app
-
Go to Settings → Local Scrapers
-
Add this repository URL (Copy exactly as shown below):
https://raw.githubusercontent.com/michat88/nuvio-providers/refs/heads/main/Note: The
refs/heads/main/part is required by the Nuvio app. Do not remove it. -
Enable the scrapers you want to use (e.g., Kisskh, MovieBox)
💡 Tip: Check existing scrapers in the providers/ directory for real working examples before starting your own.
Your scraper must export a getStreams function that returns a Promise:
function getStreams(tmdbId, mediaType, seasonNum, episodeNum) {
return new Promise((resolve, reject) => {
// Your scraping logic here - NO async/await allowed
// Use .then() and .catch() for all async operations
// Return array of stream objects or empty array on error
resolve(streams);
});
}
// Export for React Native compatibility
if (typeof module !== 'undefined' && module.exports) {
module.exports = { getStreams };
} else {
global.getStreams = getStreams;
}Parameters:
tmdbId(string): TMDB IDmediaType(string): "movie" or "tv"seasonNum(number): Season number (TV only)episodeNum(number): Episode number (TV only)
Each stream must return this exact format (see providers/moviebox.js for real examples):
{
name: "MovieBox - 1080p", // Provider + server name
title: "Movie Title (2024)", // Media title with year
url: "https://stream.url", // Direct stream URL
quality: "1080p", // Quality (720p, 1080p, 4K, etc.)
size: "Unknown", // Optional file size
headers: WORKING_HEADERS, // Required headers for playback
provider: "moviebox" // Provider identifier
}- ❌ async/await is NOT supported in this sandboxed environment
- ✅ Promise-based approach is COMPULSORY - use
.then()and.catch() - Use
fetch()for HTTP requests (no axios) - Use
cheerio-without-node-nativefor HTML parsing - Avoid Node.js modules (fs, path, crypto)
Add your scraper to manifest.json. If you have set up the GitHub Action, this will happen automatically when you push a new .js file to the providers folder.
Manual entry example:
{
"id": "kisskh",
"name": "Kisskh",
"description": "Asian Drama & Anime streaming",
"version": "1.0.0",
"author": "Michat88",
"supportedTypes": ["movie", "tv"],
"filename": "providers/kisskh.js",
"enabled": true,
"formats": ["mp4"],
"logo": "https://kisskh.ovh/favicon.ico",
"contentLanguage": ["en", "id"]
}-
Clone this repository
git clone https://github.com/michat88/nuvio-providers.git cd nuvio-providers -
Create a new scraper
- Create
providers/newscraper.js - (Optional) The GitHub Action will update
manifest.jsonautomatically upon push.
- Create
-
Commit and push
git add . git commit -m "Add NewScraper" git push origin main
Before submitting, ensure your scraper:
- Follows naming conventions (camelCase, descriptive names)
- Has proper error handling (try-catch blocks, graceful failures)
- Is React Native compatible (no Node.js modules, uses fetch())
- Respects rate limits (reasonable delays between requests)
- Returns proper stream objects (correct format and required fields)
These scrapers are free software: you can use, study, share, and modify them as you wish.
They are distributed under the terms of the GNU General Public License version 3 or later, published by the Free Software Foundation.
We hereby issue this notice to clarify that these scrapers function similarly to a standard web browser by fetching video files from the internet.
- No content is hosted by this repository or the Nuvio application.
- Any content accessed is hosted by third-party websites.
- Users are solely responsible for their usage and must comply with their local laws.
If you believe content is violating copyright laws, please contact the actual file hosts, not the developers of this repository or the Nuvio app.
Thank You for using Michat88's Nuvio Providers!
