Skip to content

Combine all your streams into one addon and display them with consistent formatting, sorting, and filtering

License

Notifications You must be signed in to change notification settings

Viren070/AIOStreams

Repository files navigation

AIOStreams

Table of Contents

Description

Combines streams from other addons into one and provides much greater customisation:

  • Change the format of the resutls
  • Filter all results by resolution, quality, visual tags, audio tags, encodes.
  • Remove duplicate results, and prioritise specific services for a given file.
  • Sort all results by quality, resolution, size, cached, visual tags, audio tags, encodes, seeders, service, language
  • Prioritise or exclude specific languages
  • Specify a minimum and/or maximum size
  • Limiting to a specific number of results per resolution
  • Proxy your streams with MediaFlow

You simply configure your options, add any API keys for any services you use, then enable whichever addons you want, and install.

The addon will scrape all results from all addons, apply your configuration, and give the results back to you in one go.

Note

Do not install other addons that you have enabled through this addon. You will only cause unnecessary requests to the addon. I also do not recommend installing/enabling too many addons as they all scrape mostly the same sources.

FAQ

How does it work?

The addon has parsers for specific addons and can extract the relevant information. It goes through each addon you selected and obtains the results with all the parsed information.

Once it has all the parsed information for each result, it can apply your configured sorting and filtering options.

Why was this addon created?

I wanted to have a single addon that could scrape all the sources I wanted and apply my own custom filters and sorting options. Many addons lack the ability to finely tune how you want your results to be sorted and filtered.

Being able to change the format of every result was also a big factor in creating this addon. I preferred the format of my GDrive addon and wanted to use that format for all my results. This makes it easier to parse the results and explain to less tech-savvy people how to pick the best result.

It also means you only have to install one addon instead of configuring multiple addons.

Furthermore, being able to apply a global filter and sort to all results means that you can get the best results from all sources displayed first, rather than having to check each addon individually.

What are the currently supported addons?

It currently supports:

  • Torrentio
  • MediaFusion
  • Comet
  • Torbox Addon
  • Easynews
  • Easynews+
  • Stremio GDrive
  • Custom: You can input an addon URL and name and it will parse as much information as it can.

Note

The URL can either be a URL to the manifest.json or the url without the manifest.json e.g. https://torrentio.strem.fun/ or https://torrentio.strem.fun/manifest.json

What are the supported formatters?

The addon can display your results in different formats. The formats available are:

  • gdrive: Uses the format from this Stremio GDrive addon

    image

  • torrentio: Uses the format from the Torrentio addon.

    image

  • torbox: Uses the format from the Torbox stremio addon.

    image

What is Stremio or How do I use this addon?

Read my Stremio guide.

Usage

Public Instance

ElfHosted have been kind enough to host a community instance of AIOStreams.

This community instance does have a ratelimit in place, but it is unlikely you will reach it. It also avoids the ratelimits of ElfHosted addons like Comet and MediaFusion as AIOStreams' requests to these addons are routed internally. However, other non-ElfHosted addons may rate limit the community instance.

Deploying your own instance

Rather than hosting the addon locally, you can make use of some services to deploy the addon for you. This would be your own instance. However, if anyone has the URL to it, they can also use it.

I would recommend using Hugging Face over the other options, it is fast and is still easy to set up.

Hugging Face

This addon can be deployed as a Hugging Face space.

Warning

Hugging Face is centered around AI and as this addon is not related to AI, they may take it down.

Note

GDrive doesn't seem to work on Hugging Face Spaces. I'm not sure why.

  1. Create a Hugging Face account and on the home page create a new space.

Screenshot 2024-12-29 133648

  1. In the 'Create a space' menu, choose 'Docker' as the Space SDK and 'Blank' for the docker template.

image

  • Ensure the space is set to Public
  • The Space name can be anything.
  1. After clicking 'Create Space', you should be taken to your space. Scroll down to 'Create your dockerfile', and click the link contained in the hint.

image

  1. Copy and paste the following Dockerfile into the text box. Do not use the Dockerfile in this repository. Make sure to use the one below
Dockerfile - Click to expand

FROM node:22-alpine AS builder
WORKDIR /build
RUN apk add --no-cache git && \
git clone https://github.com/Viren070/AIOStreams.git . && \
apk del git

RUN npm install

RUN npm run build

RUN npm --workspaces prune --omit=dev

FROM node:22-alpine AS final

WORKDIR /app

COPY --from=builder /build/package*.json /build/LICENSE ./

COPY --from=builder /build/packages/addon/package.*json ./packages/addon/ COPY --from=builder /build/packages/frontend/package.*json ./packages/frontend/ COPY --from=builder /build/packages/formatters/package.*json ./packages/formatters/ COPY --from=builder /build/packages/parser/package.*json ./packages/parser/ COPY --from=builder /build/packages/types/package.*json ./packages/types/ COPY --from=builder /build/packages/wrappers/package.*json ./packages/wrappers/ COPY --from=builder /build/packages/utils/package.*json ./packages/utils/

COPY --from=builder /build/packages/addon/dist ./packages/addon/dist COPY --from=builder /build/packages/frontend/out ./packages/frontend/out COPY --from=builder /build/packages/formatters/dist ./packages/formatters/dist COPY --from=builder /build/packages/parser/dist ./packages/parser/dist COPY --from=builder /build/packages/types/dist ./packages/types/dist COPY --from=builder /build/packages/wrappers/dist ./packages/wrappers/dist COPY --from=builder /build/packages/utils/dist ./packages/utils/dist

COPY --from=builder /build/node_modules ./node_modules

EXPOSE 7860

ENV PORT=7860

ENTRYPOINT ["npm", "run", "start:addon"]

  1. Click Commit new file to main

  2. Your addon will be hosted at {username}-{space-name}.hf.space. You can also find a direct URL to it by clicking the 3 dots > Embed this space > Direct URL > Copy

Warning

The build process generally takes around 5 minutes. However, it can sometimes get stuck sometimes or fail. In this case, go to Settings, and click Factory Rebuild. If it fails after factory rebuilding more than 3 times, you can create an issue.

Updating

To update the addon, you can simply go to the Settings tab and click Factory rebuild. This will rebuild the addon with the latest changes.

Cloudflare Workers

This addon can be deployed as a Cloudflare Worker.

Note

Cloudflare Workers cannot make requests to other Cloudflare Workers from the same account. If you have deployed the Stremio GDrive addon already on a Cloudflare account, the AIOStreams worker on the same account will not be able to fetch streams from your Stremio GDrive worker.

Warning

Cloudflare Workers tend to get blocked by Torrentio quickly. It is also not possible to use the ADDON_PROXY environment variable with Cloudflare Workers. You must also edit the code for it to be possible to run on a cloudflare worker due to an issue.

  1. Sign up for a Cloudflare Account
  2. Install Node.js (I would recommend using package managers e.g. fnm on Windows)
  3. Install Git
  4. Run the following commands:
git clone https://github.com/Viren070/AIOStreams.git
cd AIOStreams
npm i
npm run build
npm run deploy:cloudflare-worker

If you get an error about the node:sqlite module, follow these instructions

Updating

To update the addon, you can simply run the following commands to pull the latest changes, build the project, and deploy the worker. This will update the worker with the latest changes, which may not be stable. You must also repeat step 6. You may get some sort of merge conflict, in this case, just delete the AIOStreams folder and start over.

git pull
npm run build
npm run deploy:cloudflare-worker

Render

https://render.com/

Warning

Free instances 'spin down' after 15 minutes of inactivity. In this suspended state, it can take around a minute to start back up again when you make a request to it.

  1. Deploy a new web service
  2. Select Public Git Repository as the source
  3. Enter https://github.com/Viren070/AIOStreams
  4. Deploy
Updating

When you deploy with Render, it automatically builds the addon every time a commit is pushed to this repository. You can also manually trigger a build by clicking the Deploy button.

It is recommend to disable the Auto Deploy feature as the latest changes may not be stable. You can do this by going to the Settings tab and scrolling down to the Auto Deploy setting near the bottom of the Build & Deploy section.

ElfHosted (paid)

AIOStreams is available as a paid product on ElfHosted. This offers you a no-hassle setup where everything is done for you.

Self-Hosting

Docker

Docker is a quick and convenient way to run this. Official images are available at the ghcr.io and docker.io registries

You can use the prebuilt images using one of the following commands:

GitHub Container Registry:

docker run -p 8080:3000 ghcr.io/viren070/aiostreams:latest

Docker Hub:

docker run -p 8080:3000 viren070/aiostreams:latest

If you would like to pass one of the environment variables, you can provide the -e flag, e.g. to provide a SECRET_KEY (recommended, see CONFIGURING.md for how to generate a secret key.):

docker run -p 8080:3000 -e SECRET_KEY=... viren070/aiostreams:latest

If you don't want to use a prebuilt image, or want to build from a commit that isn't tagged with a version yet, you can build the image yourself using the following commands:

git clone https://github.com/Viren070/aiostreams.git
cd aiostreams
docker build -t aiostreams .
docker run -p 8080:3000 aiostreams

From source

You need Node.js and git installed. Node v22 and npm v10.9 were used in the development of this project. I can not guarantee earlier versions will work.

  1. Clone the project and set it as the current directory
    git clone https://github.com/Viren070/AIOStreams.git
    
    cd aiostreams
    
  2. Install project dependencies
    npm i
    
  3. Build project
    npm run build
    
  4. Run project
    npm run start:addon
    
  5. Go to http://localhost:3000/configure

You can change the PORT environment variable to change the port that the addon will listen on.

Configuring

Outside of the configuration page, the behaviour of this addon can also be changed with environment variables.
Most users don't need to set any environment variables. However, if you do, the SECRET_KEY is the one you might want to configure. This key enables encrypted manifest URLs, which help protect your API keys.

With encryption, someone who has your manifest URL can't directly see your API keys. However, they can still install the addon using the encrypted URL. Once installed, they can view API keys within other addons' URLs that are contained within AIOStreams' responses, as most addons don’t encrypt their manifest URLs.

Environment Variables

Please see CONFIGURING for all the environment variables you can set.

Below, you can find how to set environment variables for the different methods of deployment.

Cloudflare Workers

Unfortunately, it is not currently possible to set environment variables for this addon on a Cloudflare Worker. You will have to modify the code directly. You can look in packages/utils/src/settings.ts to change the default values.

Render

You can set environment variables in the Render dashboard.

  1. Go to the Render dashboard and select the AIOStreams service.
  2. Click on the Environment tab under the Manage section.
  3. Click on the Edit button.
  4. Click Add Environment Variable and enter the name and value of the environment variable you want to set.
  5. Once you have added all the environment variables you want to set, click Save, build, and deploy.

Hugging Face

  1. Go to your Hugging Face space and click on the Settings tab.
  2. Scroll down to Variables and Secrets and click on New secret.

    [!WARNING] Ensure you are using Secrets, especially for SECRET_KEY. Variables are public and can be seen by anyone.

  3. Enter the name and value of the environment variable you want to set. The description is optional and can be left empty.

Local

You can set environment variables using a .env file in the root of the project.

ADDON_NAME=AIOStreams
ADDON_ID=aiostreams.viren070.com
PORT=3000
SECRET_KEY=your_secret_key
COMET_URL=https://comet.elfhosted.com/
...

Development

  1. Clone the project and set it as the current directory
    git clone https://github.com/Viren070/AIOStreams.git
    
    cd aiostreams
    
  2. Install project dependencies
    npm i
    

Now, you can run various aspects of the project in development.

Note

Most of these commands require that you build the project beforehand. Changes in other packages do not reflect immediately as it needs to be compiled into JavaScript first. Run npm run build to build the project.

To start the addon in development mode, run the following command:

npm run start:addon:dev

To run the cloudflare worker in development mode, run the following command

npm run start:cloudflare-worker:dev

To run the frontend of the project, run the following command

npm run start:frontend:dev

Deploying

To deploy your cloudflare worker, run the following command:

npm run deploy:cloudflare-worker

Disclaimer

AIOStreams and its developer do not host, store, or distribute any content that is found using this addon. All content is sourced from publicly available addons. AIOStreams does not endorse or promote piracy in any form. It is the user's responsibility to ensure that their use of this addon is in compliance with their local laws and regulations.

Credits

  • Thanks to sleeyax/stremio-easynews-addon for the repository structure and dockerfile.
  • Thanks to all addon devs for creating the upstream addons that AIOStreams scrapes.
  • MediaFlow for MediaFlow Proxy which is used in this addon to proxy your streams
  • Issue templates were stolen from 5rahim/seanime (You should really try out this app)

About

Combine all your streams into one addon and display them with consistent formatting, sorting, and filtering

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages