from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import os
chrome_options = webdriver.ChromeOptions()
chrome_options.binary_location = "C:\Program Files\Google\Chrome\Application\chrome.exe" # Set this to the local path of your chrome
driver = webdriver.Chrome(options=chrome_options)
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
def login_twitter(my_username, my_password):
driver.get('https://twitter.com/login')
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
time.sleep(2)
username_input = driver.find_element(By.NAME, "text")
username_input.send_keys(my_username)
username_input.send_keys('\n')
time.sleep(5)
password_input = driver.find_element(By.NAME, "password")
password_input.send_keys(my_password)
password_input.send_keys('\n')
time.sleep(5)
driver.get(f'https://twitter.com/{target_username}/likes')
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
def load_logged_tweet_ids(filename):
if os.path.exists(filename):
with open(filename, 'r') as file:
return set(line.strip() for line in file)
return set()
def save_logged_tweet_ids(filename, logged_tweet_ids):
with open(filename, 'w') as file:
for tweet_id in logged_tweet_ids:
file.write(f"{tweet_id}\n")
def fetch_likes(target_username, logged_tweet_ids):
likes = driver.find_elements(By.XPATH, '//article[@role="article"]')
new_liked_tweets = []
for like in likes:
tweet_id = like.get_attribute('data-tweet-id')
if tweet_id not in logged_tweet_ids:
tweet_text = like.find_element(By.XPATH, './/div[2]/div[2]//span').text
new_liked_tweets.append((tweet_id, tweet_text))
logged_tweet_ids.add(tweet_id)
return new_liked_tweets
my_username = 'Username' #your username
my_password = 'Password' #your password
target_username = 'ImmyBisouNSFW' #person you want to track
log_file = 'logged_tweet_ids.txt'
logged_tweet_ids = load_logged_tweet_ids(log_file)
login_twitter(my_username, my_password)
while True:
new_liked_tweets = fetch_likes(target_username, logged_tweet_ids)
if new_liked_tweets:
with open('liked_tweets.txt', 'a') as file:
for tweet_id, tweet_text in new_liked_tweets:
file.write(f"{time.ctime()}: {tweet_text}\n")
save_logged_tweet_ids(log_file, logged_tweet_ids)
time.sleep(30)