[+] Readme
This commit is contained in:
@@ -1,2 +1,47 @@
|
||||
# ChannelTree
|
||||
|
||||
|
||||
<center><img src="public/banner.png" width="100%"></center>
|
||||
|
||||
# TGCN 频道树
|
||||
|
||||
这是 2025 年植树节的时候在 telegram 上和大家一起种下的频道树 qwq
|
||||
|
||||
活动结束的时候树上有 214 个频道,其中有 74 根树枝和 140 个树叶。树上大小频道都有,最大的频道有 83,385 订阅量哇。开坑的时完全没有想到会有这样的影响力,感谢大家参与哦~
|
||||
|
||||
可以在 https://tree.aza.moe 查看最终的完整频道树,或者从[树根](https://tree.aza.moe/c/hykilp)开始跟随树杈🔗探索频道树。
|
||||
|
||||
这个仓库里是「TGCN 植树机器人」和网页服务器的源码,以及频道树的数据备份。
|
||||
|
||||
### 颁奖(?)
|
||||
|
||||
下面是一些在可能有意思的极值上的频道 qwq
|
||||
(因为包含自己的树根频道有些作弊,下面是除了树根以外的频道哦)
|
||||
|
||||
**最高的树叶**: [@PaffWarehouse](https://t.me/PaffWarehouse)
|
||||
离树根的距离为 10 个频道
|
||||
|
||||
**树叶最多的树枝**: [@XLDFDZ](https://t.me/XLDFDZ)
|
||||
有 17 个分叉(3 个树枝和 14 个树叶)
|
||||
|
||||
**树枝最多的树枝**: [@Billchenla](https://t.me/Billchenla)
|
||||
有 5 个分叉(全都是树枝)
|
||||
|
||||
**订阅量最多**: [@pixiv_top50](https://t.me/pixiv_top50)
|
||||
有 83,385 位订阅者
|
||||
|
||||
**频道@名最长**: [@TooLongloonglooongloooonglooooon](https://t.me/TooLongloonglooongloooonglooooon)
|
||||
@名有 32 个字符
|
||||
|
||||
**自挂东南枝**: [@lovemachine520](https://t.me/lovemachine520) 和 [@MG08ACA16TE](https://t.me/MG08ACA16TE)
|
||||
学会了用奇妙改名漏洞让自己爬上树的人类
|
||||
|
||||
**上树频道最多的管理**: [@clanstnya](https://t.me/clanstnya)
|
||||
给频道树添加了 6 个频道
|
||||
|
||||
**名字听起来最好吃的频道(R1 钦定)**: [@chheese_cookie_bedrock](https://t.me/chheese_cookie_bedrock)
|
||||
「奶酪基岩饼干」
|
||||
|
||||
<img src="docs/deepseek-food-selection.png" width="400px" />
|
||||
|
||||
~~**名字听起来最圆圆的让人想 ruarua 的频道**: [@catttballl](https://t.me/catttballl)~~
|
||||
「Rua~rua~猫猫球」🐈
|
||||
|
||||
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
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()
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
Reference in New Issue
Block a user