Twitch Follow Count (Via TwitchTracker)
Shows Twitch follow count via twitch tracker
About this flow
| System | AWTRIX NG Scripts |
|---|---|
| AWTRIX version | AWTRIX NG |
| Topic | Social |
| Built by | korrupt |
| File | cJShYXPQh3QR.ax · 4.5 KB |
| Icons | — |
| Published | 15 Aug 2026 · updated 18 Aug 2026 |
| Downloads | 41 |
Is this your flow?
If you created this flow, open your saved edit link to add it to your account. You can then manage it whenever you sign in. Adding it to your account replaces the edit link.
Flow description
Icon is inside the script
Just edit user name in setting in dashboard -> apps -> twitch_subs -> ... -> settings Make sure to SAVE at the bottom
Note: This uses a 3rd party (twitchtracker) to pull your username and follower_count. This is because i did not want to mess with oauth or client_ids on twitches site to make it easier for you to setup. So as a result follow count is not real time. It takes about an hour or two for TT to update your account. If you want near real time you will need a different script.
To be tracked you need to stream at least every 30 days and have a minimum of 5-10 viewers?? I advise you check you are getting a api response before installing
cJShYXPQh3QR.ax
# @name Twitch_Subs
# @desc Follower count of a Twitch channel via TwitchTracker
# @author Blueforcer / Korrupt (Mod)
# @version 1.2
# @config user text "Twitch Channel" default="UserName" maxlen=32
# @config txt_color color "Text Color" default=#9146FF
# @config fx_name select "Effect" default=None options=None,Matrix,Plasma,ColorWaves,TwinklingStars,Fireworks,Ripple
# @config fx_speed slider "FX Speed" default=0.3 min=0.1 max=2.0 step=0.1
class Twitch
var url, user, period
var count, label, full, err
var ticks, busy
var opts, px, fx_opts
def init()
self.user = store.get("user")
self.url = "https://twitchtracker.com/api/channels/summary/" + self.user
self.period = 3600 # once an hour
self.count = store.get("who") == self.user ? store.get("n") : nil
self.label = self.count == nil ? nil : self.human(self.count)
self.full = self.count == nil ? nil : str(self.count)
self.err = false
self.ticks = 0
self.busy = false
self.opts = {'headers': {'User-Agent': 'Mozilla/5.0'},
'find': "\"followers_total\":", 'keep': 32}
# Settings map for background effect
self.fx_opts = {"speed": store.get("fx_speed")}
# Clean 8x8 Twitch Glitch logo (0x000000 = transparent)
# 0x9146FF = Twitch Purple, 0xFFFFFF = White
self.px = [0x000000, 0x9146FF, 0x9146FF, 0x9146FF, 0x9146FF, 0x9146FF, 0x9146FF, 0x9146FF,
0x9146FF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0x9146FF,
0x9146FF, 0xFFFFFF, 0xFFFFFF, 0x9146FF, 0xFFFFFF, 0x9146FF, 0xFFFFFF, 0x9146FF,
0x9146FF, 0xFFFFFF, 0xFFFFFF, 0x9146FF, 0xFFFFFF, 0x9146FF, 0xFFFFFF, 0x9146FF,
0x9146FF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0x9146FF,
0x9146FF, 0x9146FF, 0x9146FF, 0xFFFFFF, 0xFFFFFF, 0x9146FF, 0x9146FF, 0x9146FF,
0x000000, 0x000000, 0x9146FF, 0xFFFFFF, 0x9146FF, 0x000000, 0x000000, 0x000000,
0x000000, 0x000000, 0x9146FF, 0x9146FF, 0x000000, 0x000000, 0x000000, 0x000000]
end
def human(n)
if n < 1000 return str(n) end
var d = 1000
var suf = "K"
if n >= 1000000000
d = 1000000000
suf = "B"
elif n >= 1000000
d = 1000000
suf = "M"
end
var v = n / (d + 0.0)
if v >= 10 return str(round(v)) + suf end
var t = round(v * 10)
return str(int(t / 10)) + "." + str(t % 10) + suf
end
def on_body(body, status)
self.busy = false
shared.set("f", 0)
if status != 200 || body == nil
self.err = true
return
end
var m = re.search("(\\d+)", body)
if m == nil
self.err = true
return
end
var n = num(m[1])
if n == nil return end
self.err = false
if n == self.count return end
self.count = n
self.full = str(n)
self.label = self.human(n)
store.set("n", n)
store.set("who", self.user)
end
def tls_busy()
for k : shared.keys()
if size(k) > 2 && k[size(k) - 2 .. size(k) - 1] == ".f" && shared.get(k) == 1
var a = shared.age(k)
if a != nil && a < 20000 return true end
end
end
return false
end
def loop()
if self.ticks <= 0
if !self.busy && !self.tls_busy()
self.ticks = self.period
self.busy = true
shared.set("f", 1)
http.get(self.url, / b, st -> self.on_body(b, st), self.opts)
end
end
self.ticks -= 1
end
def draw()
clear()
# Apply background effect first if configured
var fx = store.get("fx_name")
if fx != nil && fx != "None"
self.fx_opts["speed"] = store.get("fx_speed")
effect(fx, self.fx_opts)
end
# Draw Twitch logo pixel matrix over background (skips 0x000000)
for y : 0 .. 7
for x : 0 .. 7
var i = y * 8 + x
if self.px[i] != 0
pixel(x, y, self.px[i])
end
end
end
var color = store.get("txt_color")
if self.label != nil
var avail = width() - 9
var s = self.full
var w = text_ink_width(s)
if w > avail
s = self.label
w = text_ink_width(s)
end
text(9 + (avail - w) / 2, 6, s, color)
return
end
var s = self.err ? "?" : "..."
var w = text_ink_width(s)
text(9 + (width() - 9 - w) / 2, 6, s, self.err ? 0xCC7722 : 0x555555)
end
end
return Twitch()
Install it on your AWTRIX NG
Add this flow to your AWTRIX NG. It will start appearing on your display after installation.
Unable to connect? Download the flow and add it in the Scripts section of your AWTRIX. Advanced users can also use this command:
Discussion 0
Ask a question, suggest a change or share how you use it.
No comments yet. Start the conversation.
More flows for AWTRIX NG Scripts or Social
Something wrong with this flow? Report it.
Have an idea?
Sign in to ask questions and join the conversation.