Monday, August 18, 2025
import csv, time, random, requests
from datetime import datetime
import praw # pip install praw
BITLY_TOKEN = "BITLY_TOKEN"
TELEGRAM_BOT = "TELEGRAM_BOT_TOKEN"
TELEGRAM_CHAT = "@your_channel"
REDDIT = praw.Reddit(
client_id="RID",
client_secret="RSEC",
username="RUSER",
password="RPASS",
user_agent="aff-auto/0.1"
)
def bitly_shorten(long_url):
r = requests.post(
"https://api-ssl.bitly.com/v4/shorten",
headers={"Authorization": f"Bearer {BITLY_TOKEN}","Content-Type":"application/json"},
json={"long_url": long_url}
)
r.raise_for_status()
return r.json()["link"]
def add_utm(url, platform):
glue = "&" if "?" in url else "?"
tag = f"utm_source={platform}&utm_medium=social&utm_campaign=aff_{datetime.utcnow().date()}"
return f"{url}{glue}{tag}"
HOOKS = [
"ये डील सच में काम की है! 🔥",
"पैसे बचाने वाला बढ़िया विकल्प ✨",
"क्वालिटी चाहिए तो इसे ट्राय करो ✅",
]
CTAS = ["ऑफ़र यहाँ देखें", "अभी चेक करें", "डील मिस न करें"]
def spin_caption(title, platform):
hook = random.choice(HOOKS)
cta = random.choice(CTAS)
return f"{hook}\n{title}\n{cta} ⬇️\n#ad #affiliate #savings #{platform}"
def post_telegram(text):
requests.get(f"https://api.telegram.org/bot{TELEGRAM_BOT}/sendMessage",
params={"chat_id": TELEGRAM_CHAT, "text": text, "disable_web_page_preview":False}).raise_for_status()
def post_reddit(subreddit, title, url):
REDDIT.subreddit(subreddit).submit(title=title, url=url)
with open("aff_queue.csv") as f:
reader = csv.DictReader(f)
for row in reader:
base = row["url"].strip()
title = row["title"].strip()
# Telegram
t_url = bitly_shorten(add_utm(base, "telegram"))
t_text = spin_caption(title, "deals") + f"\n{t_url}"
post_telegram(t_text)
time.sleep(2)
# Reddit (use relevant sub)
r_url = bitly_shorten(add_utm(base, "reddit"))
post_reddit("deals", f"{title} | Limited?", r_url)
time.sleep(5)