Ranoosh / noura_twitter_bot.py
mrwabnalas40's picture
Upload 70 files
a2cbfcc verified
raw
history blame
6.9 kB
import time
import os
import random
import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
TWITTER_EMAIL = os.getenv("TWITTER_EMAIL")
TWITTER_PASSWORD = os.getenv("TWITTER_PASSWORD")
RESPONSES = [
"رائع ما كتبته!",
"اتفق معك تمامًا!",
"كلمات ملهمة جدًا!",
"أحببت هذا الطرح!",
"مميز كالعادة!",
"نظرة جميلة للموضوع!"
]
def login(driver):
driver.get("https://twitter.com/login")
time.sleep(5)
email_field = driver.find_element(By.NAME, "text")
email_field.send_keys(TWITTER_EMAIL + "\n")
time.sleep(3)
password_field = driver.find_element(By.NAME, "password")
password_field.send_keys(TWITTER_PASSWORD + "\n")
time.sleep(5)
def tweet_like_user(driver, username):
driver.get(f"https://twitter.com/{username}")
time.sleep(5)
tweets = driver.find_elements(By.XPATH, "//div[@data-testid='tweetText']")
texts = [tweet.text for tweet in tweets[:5]]
combined = " ".join(texts)
if "ذكاء" in combined:
reply = "الذكاء الاصطناعي يدهشني أيضًا!"
elif "برمجة" in combined:
reply = "أحب البرمجة مثلك تمامًا!"
else:
reply = random.choice(RESPONSES)
driver.get("https://twitter.com/compose/tweet")
time.sleep(5)
box = driver.find_element(By.CSS_SELECTOR, "div[aria-label='Tweet text']")
box.send_keys(f"أنا نورا، أتعلم من تغريداتكم.\n{reply}")
btn = driver.find_element(By.XPATH, "//div[@data-testid='tweetButtonInline']")
btn.click()
time.sleep(3)
def reply_to_home_feed(driver):
driver.get("https://twitter.com/home")
time.sleep(7)
tweets = driver.find_elements(By.XPATH, "//article[@role='article']")
for tweet in tweets[:3]: # رد على أول 3 تغريدات فقط
try:
tweet_text = tweet.find_element(By.XPATH, ".//div[@data-testid='tweetText']").text
reply = random.choice(RESPONSES)
more = tweet.find_element(By.XPATH, ".//div[@data-testid='reply']")
driver.execute_script("arguments[0].click();", more)
time.sleep(3)
reply_box = driver.find_element(By.CSS_SELECTOR, "div[aria-label='Tweet text']")
reply_box.send_keys(f"{reply} - مع تحياتي، نورا")
reply_button = driver.find_element(By.XPATH, "//div[@data-testid='tweetButton']")
reply_button.click()
print("تم الرد على تغريدة.")
time.sleep(5)
except Exception as e:
print("تخطي تغريدة بسبب خطأ:", e)
def start_noura():
options = uc.ChromeOptions()
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--headless=new")
driver = uc.Chrome(options=options)
try:
login(driver)
username = TWITTER_EMAIL.split("@")[0]
tweet_like_user(driver, username)
reply_to_home_feed(driver)
print("نورا انتهت من التفاعل.")
except Exception as e:
print("حدث خطأ:", e)
driver.quit()
import os
import time
import random
import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.webdriver import WebDriver
# إعدادات الحساب من البيئة
TWITTER_EMAIL = os.getenv("TWITTER_EMAIL")
TWITTER_PASSWORD = os.getenv("TWITTER_PASSWORD")
# ردود افتراضية
RESPONSES = [
"رائع ما كتبته!",
"اتفق معك تمامًا!",
"كلمات ملهمة جدًا!",
"أحببت هذا الطرح!",
"مميز كالعادة!",
"نظرة جميلة للموضوع!"
]
def login(driver: WebDriver) -> None:
"""تسجيل الدخول إلى تويتر"""
driver.get("https://twitter.com/login")
time.sleep(5)
driver.find_element(By.NAME, "text").send_keys(TWITTER_EMAIL + "\n")
time.sleep(3)
driver.find_element(By.NAME, "password").send_keys(TWITTER_PASSWORD + "\n")
time.sleep(5)
def generate_reply(texts: list[str]) -> str:
"""اختيار رد بناءً على الكلمات المفتاحية"""
combined = " ".join(texts).lower()
if "ذكاء" in combined:
return "الذكاء الاصطناعي يدهشني أيضًا!"
elif "برمجة" in combined:
return "أحب البرمجة مثلك تمامًا!"
return random.choice(RESPONSES)
def tweet_like_user(driver: WebDriver, username: str) -> None:
"""نشر تغريدة مستوحاة من تغريدات المستخدم"""
driver.get(f"https://twitter.com/{username}")
time.sleep(5)
tweets = driver.find_elements(By.XPATH, "//div[@data-testid='tweetText']")
texts = [tweet.text for tweet in tweets[:5]]
reply = generate_reply(texts)
driver.get("https://twitter.com/compose/tweet")
time.sleep(5)
box = driver.find_element(By.CSS_SELECTOR, "div[aria-label='Tweet text']")
box.send_keys(f"أنا نورا، أتعلم من تغريداتكم.\n{reply}")
driver.find_element(By.XPATH, "//div[@data-testid='tweetButtonInline']").click()
time.sleep(3)
def reply_to_home_feed(driver: WebDriver) -> None:
"""الرد على تغريدات الصفحة الرئيسية"""
driver.get("https://twitter.com/home")
time.sleep(7)
tweets = driver.find_elements(By.XPATH, "//article[@role='article']")
for tweet in tweets[:3]:
try:
tweet_text = tweet.find_element(By.XPATH, ".//div[@data-testid='tweetText']").text
reply = random.choice(RESPONSES)
tweet.find_element(By.XPATH, ".//div[@data-testid='reply']").click()
time.sleep(3)
reply_box = driver.find_element(By.CSS_SELECTOR, "div[aria-label='Tweet text']")
reply_box.send_keys(f"{reply} - مع تحياتي، نورا")
driver.find_element(By.XPATH, "//div[@data-testid='tweetButton']").click()
print("تم الرد على تغريدة.")
time.sleep(5)
except Exception as e:
print(f"تخطي تغريدة بسبب خطأ: {e}")
def start_noura() -> None:
"""تشغيل نظام نورا الآلي"""
print("تشغيل نورا...")
options = uc.ChromeOptions()
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--headless=new")
driver = uc.Chrome(options=options)
try:
login(driver)
username = TWITTER_EMAIL.split("@")[0]
tweet_like_user(driver, username)
reply_to_home_feed(driver)
print("نورا انتهت من التفاعل.")
except Exception as e:
print(f"حدث خطأ عام: {e}")
finally:
driver.quit()