import requests import json import time # Global constant for Authorization header DONNA_AUTH_HEADER = "Basic bW9iYWltdXNpY3VzZXI6TW9iYWltdXNpYzE0MjYhaGlnaGZpdmU=" # Authorization: Basic bW9iYWltdXNpY3VzZXI6TW9iYWltdXNpYzE0MjYhaGlnaGZpdmU= def fetch_donna_external_ids(page_number, device_id, auth_header=DONNA_AUTH_HEADER): url = "https://donna.appsthatworth.com/explore/new" params = {"limit": "20", "page": str(page_number), "review": "false"} headers = { "Host": "donna.appsthatworth.com", "invitefriendab": "1", "version": "1.0.39", "current": str(int(time.time() * 1000000)), # Current epoch microseconds "Authorization": auth_header, "Accept": "*/*", "premium": "false", "creditgroup": "first", "Accept-Language": "en-US;q=1.0", "showsingle": "true", "Cache-Control": "no-cache", "deviceId": device_id, "User-Agent": "donna/1.0.39 (com.ai.sound.donna; build:11; iOS 18.0.0) Alamofire/5.9.1", "lang": "en", "Connection": "keep-alive", } proxies = {"http": "http://localhost:9090", "https": "http://localhost:9090"} response = requests.get( url, params=params, headers=headers, verify=False, proxies=proxies ) if response.status_code == 200: data = response.json() external_ids = [item["externalId"] for item in data["data"]] return external_ids else: print(f"Error: {response.status_code}") return [] # Example usage if __name__ == "__main__": import random import time from datetime import datetime # device_id = "2DF22A37-D8D0-498B-8E38-9B6F17134D63" device_id = "02167ECA-E096-4B3A-8A9A-16EA8AC8E8B2" all_external_ids = [] # Generate a unique filename with date and time current_time = datetime.now().strftime("%Y%m%d_%H%M%S") filename = f"donna_recent_clip_ids_{current_time}.txt" for page_number in range( 1, 2500 ): # 2640 was the last page we could fetch without 503 timeout external_ids = fetch_donna_external_ids(page_number, device_id) if external_ids: print(f"External IDs for page {page_number}:") for ext_id in external_ids: print(ext_id) all_external_ids.extend(external_ids) # Append the most recent batch of IDs to the file with open(filename, "a") as f: for ext_id in external_ids: f.write(f"{ext_id}\n") print(f"Appended {len(external_ids)} IDs to {filename}") else: print(f"No external IDs found for page {page_number}") break # Sleep for a random duration between 2000 and 7000 milliseconds sleep_duration = random.uniform(2, 7) time.sleep(sleep_duration) print(f"Total external IDs fetched: {len(all_external_ids)}")