#!/usr/bin/env python3 # -*- coding: utf-8 -*- import time import shutil from pathlib import Path from selenium import webdriver from selenium.webdriver.firefox.service import Service from webdriver_manager.firefox import GeckoDriverManager # Path to your Firefox profile firefox_profile_path = "/home/jawz/.mozilla/firefox/yw8fhvh4.default-release" # Initialize the Firefox driver with the existing profile options = webdriver.FirefoxOptions() options.add_argument("-profile") options.add_argument(firefox_profile_path) service = Service(GeckoDriverManager().install()) driver = webdriver.Firefox(service=service, options=options) # Directory containing the image files source_dir = Path("/srv/server/jawz/Pictures/To Organize") target_dir = Path("/srv/server/pool/scrapping/JawZ/gallery-dl") delete_dir = Path("/srv/server/jawz/Pictures/To Organize/to_delete/") # Function to get Twitter username from tweet status ID def get_username_from_tweet_id(tweet_id): url = f"https://x.com/anyuser/status/{tweet_id}" driver.get(url) time.sleep(2.5) # Wait for the page to load fixed_url = driver.current_url username = fixed_url.replace("https://x.com/", "").replace( f"/status/{tweet_id}", "" ) return username # Extract tweet IDs, ensure they are unique and sorted file_ids = map(lambda x: x.name.split("_")[0], source_dir.iterdir()) tweet_ids = sorted(set(file_ids))[:49] # Iterate through unique and sorted tweet IDs for tweet_id in tweet_ids: username = get_username_from_tweet_id(tweet_id) if username is None: continue if username == "anyuser": continue dest_dir = Path(target_dir, username) if not dest_dir.exists(): continue if not dest_dir.is_dir(): continue files_to_move = filter(lambda x: tweet_id in x.name, source_dir.iterdir()) for file in files_to_move: target_file = Path(dest_dir, file.name) if target_file.exists(): delete_file = Path(delete_dir, file.name) shutil.move(str(file.resolve()), str(delete_file.resolve())) print(f"Moved {file.name} to {str(delete_file.resolve())}") continue # If file does not exist in target_dir, move it from source_dir to target_dir shutil.move(str(file.resolve()), str(target_file.resolve())) print(f"Moved {file.name} to {str(target_file.resolve())}") # Close the driver driver.quit()