


Built a Rating System for streams using AIOStreams formatting options.
Built a Rating System for streams using AIOStreams formatting options.
My family members got confused every time they opened Stremio 😅
i wanted them to adopt stremio because its so wonderful but the technical jargon was too intimidating for them.
Then I discovered AIOStreams and I instantly recognized it as a game changer.
So I went down the rabbit hole of formatting options and designed a star-rating based system that ranks streams based on the actual expected viewing experience, making them instantly recognizable at a glance.
I used AI mainly to help finalize the emojis and formatter syntax (because I absolutely hate debugging syntax ), but the rating philosophy and system design itself is completely my own.
Rating Logic
The stars represent the actual expected viewing experience.
Base stars assume CAM-quality source:
- 4K = ⭐⭐⭐
- 1080p = ⭐⭐
- 720p = ⭐
Then streams gain stars depending on source quality:
- WEB-DL / WEBRip → Adds 1 Star ⭐
- BluRay / REMUX → Adds 2 stars ⭐⭐
So the final ratings look something like
| Resolution | Base (CAM-tier) | WEB-DL / WEBRip | BluRay / REMUX |
|---|---|---|---|
| 2160p | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 1080p | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| 720p | ⭐ | ⭐⭐ | ⭐⭐⭐ |
Audio & Visual Tags
In addition to resolution and source, the audio & video tags also influence the stream quality a lot. So i created these "flags" corresponding to various audio & video tags. (And another one for p2p streams)
| Flags | Meaning |
|---|---|
| 🎞️ | REMUX |
| 📀 | BluRay |
| 🌈 | Dolby Vision (great colors) |
| 🔆 | HDR / HDR10 / HDR10+ |
| 🎻 | Premium Audio |
| 📹 | CAM / SCR / TS (poor quality) |
| 🐢 | P2P stream, may take time to start |
Stream Details & other tweaks
I also customized the stream descriptions to surface only the useful metadata in a clean readable way:
🌎 English | Italian ⏱️ 2h 32m
📦 62.5 GB / 125 GB (54.8 Mbps) 👥 125
🎥 BluRay ⚙️ HEVC
📺 DV 🎧 Atmos | TrueHD 🔊 7.1
🎬 Movie Title (2023)
And last but not the least, I renamed the addons to something easy to remember - like Public Server (for p2p) , Http Server 1/2/3, etc (for direct streams)
Why this system works so well
A user immediately understands:
4K•UHD 📀 🌈 🎻
⭐⭐⭐⭐⭐
Http Server 1 ⚡
= superior quality stream as well as source.
vs
⭐⭐ 🐢 📹
Public Server ⚠️
= watchable but bad overall quality.
all without reading any guide (or asking me to play the correct one for them)
Honestly this feels much cleaner than the default cluttered mess that most addons show.
It’s definitely not perfect, but it’s been working great for me and my family so far. Any suggestions or ideas are welcome. Cheers!! :)
Edit: Forgot to add the codes, so here they are:
Title:
{stream.resolution::exists["{stream.resolution::replace('2160p','4K•UHD')::replace('1080p','FHD•1080p')::replace('720p','HD•720p')::replace('576p','SD•576p')::replace('480p','SD•480p')::replace('360p','SD•360p')}"||""]}{stream.quality::~Remux[" 🎞️"||""]}{stream.quality::~BluRay[" 📀"||""]}{stream.quality::~CAM[" 📹"||""]}{stream.quality::~SCR[" 📹"||""]}{stream.quality::~TS[" 📹"||""]}{stream.visualTags::~DV[" 🌈"||""]}{stream.visualTags::~HDR[" 🔆"||""]}{stream.visualTags::~HDR10[" 🔆"||""]}{stream.visualTags::~HDR10+[" 🔆"||""]}{stream.visualTags::~IMAX[" 🔆"||""]}{stream.audioTags::exists[" 🎻"||""]}{stream.type::~P2P[" 🐢"||""]}
{stream.resolution::exists["{stream.resolution::replace('2160p','⭐⭐⭐')::replace('1080p','⭐⭐')::replace('720p','⭐')::replace('576p','⭐')::replace('480p','⭐')::replace('360p','⭐')}"||""]}{stream.quality::~WEBRip["⭐"||""]}{stream.quality::~WEB-DL["⭐"||""]}{stream.quality::~BluRay["⭐⭐"||""]}{stream.quality::~Remux["⭐⭐"||""]}
{addon.name::exists["{addon.name}"||""]}
Description:
{stream.languages::exists["🌎 {stream.languages::join(' | ')}"||""]} {stream.duration::>0["⏱️ {stream.duration::time} "||""]}
{stream.size::>0["📦 {stream.size::sbytes} "||""]}{stream.folderSize::>0["/ {stream.folderSize::sbytes} "||""]}{stream.bitrate::>0["({stream.bitrate::sbitrate})"||""]} {stream.seeders::>0["👥 {stream.seeders} "||""]}
{stream.quality::exists["🎥 {stream.quality} "||""]}{stream.encode::exists["⚙️ {stream.encode} "||""]}{stream.network::exists["📡 {stream.network} "||""]}
{stream.visualTags::exists["📺 {stream.visualTags::join(' | ')} "||""]}{stream.audioTags::exists["🎧 {stream.audioTags::join(' | ')} "||""]}{stream.audioChannels::exists["🔊 {stream.audioChannels::join(' | ')}"||""]}
{stream.title::exists["🎬 {stream.title::title} "||""]}{stream.year::exists["({stream.year}) "||""]}{stream.formattedSeasons::exists["🍂 {stream.formattedSeasons} "||""]}{stream.formattedEpisodes::exists["🎞️ {stream.formattedEpisodes}"||""]}
{stream.seadexBest::istrue["🎚️ Best "||""]}{stream.seadex::istrue::and::stream.seadexBest::isfalse["🎚️ Alternative"||""]}
{stream.rseMatched::exists::and::stream.seadex::isfalse::and::stream.rseMatched::string::~T1::or::stream.rseMatched::string::~T2::or::stream.rseMatched::string::~T3::or::stream.rseMatched::string::~T4::or::stream.rseMatched::string::~T5::or::stream.rseMatched::string::~T6::or::stream.rseMatched::string::~T7::or::stream.rseMatched::string::~T8[" 🎚️ {stream.rseMatched::first}"||""]}
{stream.regexMatched::exists::and::stream.rseMatched::exists::isfalse::and::stream.seadex::isfalse["🎚️ {stream.regexMatched} "||""]}