mirror of
https://github.com/developersIndia/deviras.git
synced 2024-11-14 09:15:57 +05:30
86 lines
2.7 KiB
Python
86 lines
2.7 KiB
Python
import praw
|
|
from collections import defaultdict
|
|
import os
|
|
import json
|
|
import requests
|
|
|
|
client_id = os.environ["REDDIT_CLIENT_ID"]
|
|
client_secret = os.environ["REDDIT_CLIENT_SECRET"]
|
|
reddit_pass = os.environ["REDDIT_PASSWORD"]
|
|
username = os.environ["REDDIT_USERNAME"]
|
|
webhook_url = os.environ["DISCORD_WEBHOOK_URL"]
|
|
user_agent = 'User Flair Usage'
|
|
sub = "developersIndia"
|
|
|
|
# Create a Reddit instance
|
|
reddit = praw.Reddit(
|
|
client_id=client_id,
|
|
client_secret=client_secret,
|
|
username=username,
|
|
password=reddit_pass,
|
|
user_agent=user_agent
|
|
)
|
|
|
|
# Select the subreddit
|
|
subreddit = reddit.subreddit(sub)
|
|
|
|
# Initialize a dictionary to count flairs
|
|
flair_count = defaultdict(int)
|
|
|
|
# Iterate over all the flairs
|
|
emoji_flair_count = 0
|
|
emoji_flair_users = []
|
|
for flair in subreddit.flair(limit=None):
|
|
f = flair['flair_text'].strip()
|
|
|
|
if f.startswith(":") or f.endswith(":"):
|
|
emoji_flair_count += 1
|
|
emoji_flair_users.append(
|
|
dict(
|
|
user=flair['user'],
|
|
flair_text=f
|
|
)
|
|
)
|
|
else:
|
|
flair_count[flair['flair_text'].strip()] += 1
|
|
|
|
# Convert the dictionary to a list of tuples and sort it by the count
|
|
sorted_flairs = sorted(flair_count.items(), key=lambda x: x[1], reverse=True)
|
|
|
|
# Fetch the list of available user flairs
|
|
available_flairs = []
|
|
for flair in subreddit.flair.templates:
|
|
if not flair['mod_only']:
|
|
available_flairs.append(flair['text'].strip())
|
|
|
|
|
|
# Initialize a dictionary to count available flairs
|
|
available_flair_count = defaultdict(int)
|
|
old_available_flair_count = defaultdict(int)
|
|
# Iterate over the sorted flairs
|
|
for flair, count in sorted_flairs:
|
|
# If the flair is available, increment its count
|
|
if flair in available_flairs:
|
|
available_flair_count[flair] += count
|
|
else:
|
|
old_available_flair_count[flair] += count
|
|
|
|
|
|
total_count = sum(available_flair_count.values())
|
|
old_flairs_total_count = sum(old_available_flair_count.values())
|
|
|
|
# print(f"Users with un-supported (old) text flairs: {old_flairs_total_count}")
|
|
# print(f"Users with supported text flairs: {total_count}")
|
|
# print(f"Users with emoji only flairs: {emoji_flair_count}")
|
|
# print(f"Total count of user-flairs: {total_count + emoji_flair_count + old_flairs_total_count}")
|
|
|
|
data = {
|
|
'Users with un-supported (old) text flairs': f"**{old_flairs_total_count}**",
|
|
'Users with supported text flairs': f"**{total_count}**",
|
|
'Users with emoji only flairs': f"**{emoji_flair_count}**",
|
|
'Total count of user-flairs': f"**{total_count + emoji_flair_count + old_flairs_total_count}**"
|
|
}
|
|
|
|
formatted_data = "\n".join([f"{k}: {v}" for k, v in data.items()]) # Format the data as a string with each item on a new line
|
|
|
|
requests.post(webhook_url, json={"content": formatted_data}) |