Files
ChannelTree/analysis.py
T
2025-03-14 17:19:48 -04:00

75 lines
1.8 KiB
Python

import re
from tqdm import tqdm
import db
from bot import channel_html
def exp1():
pop = []
r = re.compile(r"([\d ]+) subscribers")
for channel in tqdm(db.Channel.select()):
html = channel_html(channel.username)
m = r.search(html)
pop.append((channel.username, int(m.group(1).replace(" ", "")) if m else 0))
pop.sort(key=lambda x: x[1], reverse=True)
for channel, subscribers in pop:
print(f"{channel} - {subscribers}")
def exp2(name):
# Count leaf and nodes in children (leaf is a channel without children)
xl = db.channel_info(name)
leaf_count = 0
node_count = 0
for child in xl.children:
if child.children:
node_count += 1
else:
leaf_count += 1
print(f"Leaf: {leaf_count}, Node: {node_count}")
def exp3():
# Find the channel with the most leafs and the channel with the most non-leafs
most_leafs = None
most_non_leafs = None
most_leafs_count = 0
most_non_leafs_count = 0
for channel in tqdm(db.Channel.select()):
if channel.height == 0:
continue
leaf_count = 0
non_leaf_count = 0
for child in channel.children:
if child.children:
non_leaf_count += 1
else:
leaf_count += 1
if leaf_count > most_leafs_count:
most_leafs = channel
most_leafs_count = leaf_count
if non_leaf_count > most_non_leafs_count:
most_non_leafs = channel
most_non_leafs_count = non_leaf_count
print(f"Most Leafs: {most_leafs.username} - {most_leafs_count}")
print(f"Most Non Leafs: {most_non_leafs.username} - {most_non_leafs_count}")
if __name__ == '__main__':
# exp1()
# exp2("XLDFDZ")
# exp2("Billchenla")
exp3()