import praw
import pandas as pd
from datetime import datetime
reddit = praw.Reddit(
client_id="ID",
client_secret="SECRET",
user_agent="UserResearchBot v1.0 by u/USERNAME",
username="USERNAME",
password="******"
)
# --- Define target subreddits and search terms ---
target_subreddits = ["soccer", "bootroom", "TheFA", "Gunners", "reddevils"]
target_apps = ["matchday", "my england football", "full-time"]
complaint_keywords = ["issue", "problem", "bug", "down", "broken", "frustrated", "doesn't work", "crap", "bad"]
# --- Search for relevant posts ---
def search_fa_platforms(subreddit_name):
print(f"\n--- Searching r/{subreddit_name} ---")
subreddit = reddit.subreddit(subreddit_name)
results = []
# Search by app name
for app in target_apps:
# Reddit's search functionality
for submission in subreddit.search(f'"{app}"', limit=50, time_filter="year"):
# Check if it's likely a complaint/issue
title_lower = submission.title.lower()
is_complaint = any(keyword in title_lower for keyword in complaint_keywords)
results.append({
"subreddit": subreddit_name,
"app_mentioned": app,
"title": submission.title,
"is_complaint": is_complaint,
"score": submission.score,
"num_comments": submission.num_comments,
"created_utc": datetime.fromtimestamp(submission.created_utc),
"url": submission.url,
"text_preview": submission.selftext[:300] if submission.selftext else ""
})
return results
# --- Run the search ---
all_results = []
for sub in target_subreddits:
try:
results = search_fa_platforms(sub)
all_results.extend(results)
except Exception as e:
print(f"Error searching r/{sub}: {e}")
# --- Convert to DataFrame for analysis ---
df = pd.DataFrame(all_results)
# --- Save to CSV ---
df.to_csv("fa_platform_feedback.csv", index=False)
print(f"\nā
Found {len(df)} relevant posts")
print(f"š Saved to fa_platform_feedback.csv")
# --- Basic summary ---
if len(df) > 0:
print("\n--- Summary by App ---")
print(df.groupby("app_mentioned").size())
print("\n--- Summary by Subreddit ---")
print(df.groupby("subreddit").size())
print("\n--- Sample Complaints ---")
complaints = df[df["is_complaint"] == True]
for idx, row in complaints.head(5).iterrows():
print(f"\nš r/{row['subreddit']} - {row['app_mentioned']}")
print(f" Title: {row['title'][:100]}")
print(f" URL: {row['url']}")
This is a placeholder for the report content. The original report content was missing; it can be added here.