assemblyai,缺的代码自己补

任何人禁止修改我帖子权限!

import httpx
import json
import random
import string
import time
from cf import YesCaptchaSolver
import os

# 用于存储已经使用过的邮箱,避免重复
used_emails = set()

# 尝试从现有文件加载已使用的邮箱
try:
    if os.path.exists("assemblyai_accounts.json"):
        with open("assemblyai_accounts.json", "r") as f:
            accounts = json.load(f)
            for account in accounts:
                used_emails.add(account["email"])
        print(f"已从文件加载 {len(used_emails)} 个已使用的邮箱")
except Exception as e:
    print(f"加载已使用邮箱时出错: {e}")

# 初始化验证码解决器
solver = YesCaptchaSolver("")

# 用于生成随机名字的列表
first_names = [
    "James",
    "John",
    "Robert",
    "Michael",
    "William",
    "David",
    "Richard",
    "Joseph",
    "Thomas",
    "Charles",
    "Mary",
    "Patricia",
    "Jennifer",
    "Linda",
    "Elizabeth",
    "Barbara",
    "Susan",
    "Jessica",
    "Sarah",
    "Karen",
    "Emma",
    "Olivia",
    "Ava",
    "Isabella",
    "Sophia",
    "Charlotte",
    "Mia",
    "Amelia",
    "Harper",
    "Evelyn",
]

last_names = [
    "Smith",
    "Johnson",
    "Williams",
    "Jones",
    "Brown",
    "Davis",
    "Miller",
    "Wilson",
    "Moore",
    "Taylor",
    "Anderson",
    "Thomas",
    "Jackson",
    "White",
    "Harris",
    "Martin",
    "Thompson",
    "Garcia",
    "Martinez",
    "Robinson",
    "Clark",
    "Rodriguez",
    "Lewis",
    "Lee",
    "Walker",
    "Hall",
    "Allen",
    "Young",
    "Hernandez",
    "King",
]

# 邮箱域名列表
email_domains = [
    "gmail.com",
    "outlook.com",
    "hotmail.com",
    "yahoo.com",
    "icloud.com",
    "protonmail.com",
]


def generate_random_name():
    """生成随机的名字"""
    first_name = random.choice(first_names)
    last_name = random.choice(last_names)
    return first_name, last_name


def generate_random_email():
    """生成随机的邮箱地址,确保不重复"""
    global used_emails
    
    # 最大尝试次数,避免无限循环
    max_attempts = 100
    attempts = 0
    
    while attempts < max_attempts:
        first_name, last_name = generate_random_name()
        
        # 增加更多随机性的用户名生成选项
        random_num = random.randint(1, 9999)
        random_chars = ''.join(random.choices(string.ascii_lowercase, k=random.randint(1, 3)))
        current_year = random.choice(["2023", "2024", "2025"])
        
        username_options = [
            f"{first_name.lower()}{last_name.lower()}",
            f"{first_name.lower()}.{last_name.lower()}",
            f"{first_name.lower()}_{last_name.lower()}",
            f"{first_name.lower()}{random_num}",
            f"{last_name.lower()}{first_name.lower()}",
            f"{first_name.lower()[0]}{last_name.lower()}",
            f"{first_name.lower()}{last_name.lower()}{random.randint(1, 99)}",
            f"{first_name.lower()}{random.randint(100, 999)}_{random_chars}",
            f"{first_name.lower()}.{last_name.lower()}{current_year}",
            f"{first_name.lower()[0]}{last_name.lower()}{random.randint(10, 9999)}",
            f"{random_chars}{first_name.lower()}{random.randint(1, 99)}",
            f"{last_name.lower()}{first_name.lower()[0]}{random.randint(1, 999)}",
        ]
        
        username = random.choice(username_options)
        domain = random.choice(email_domains)
        
        email = f"{username}@{domain}"
        
        # 检查邮箱是否已经使用过
        if email not in used_emails:
            used_emails.add(email)  # 添加到已使用集合
            return email
            
        attempts += 1
    
    # 如果尝试多次仍然无法生成唯一邮箱,使用时间戳确保唯一性
    timestamp = int(time.time())
    email = f"{first_name.lower()}{last_name.lower()}{timestamp}@{random.choice(email_domains)}"
    used_emails.add(email)
    return email


def generate_random_password(length=12):
    """生成随机密码"""
    # 确保密码包含大小写字母、数字和特殊字符
    lowercase = string.ascii_lowercase
    uppercase = string.ascii_uppercase
    digits = string.digits
    special = "!@#$%^&*()_+-=[]{}|;:,.<>?"

    # 确保至少包含每种字符
    password = [
        random.choice(lowercase),
        random.choice(uppercase),
        random.choice(digits),
        random.choice(special),
    ]

    # 填充剩余长度
    remaining_length = length - len(password)
    all_chars = lowercase + uppercase + digits + special
    password.extend(random.choice(all_chars) for _ in range(remaining_length))

    # 打乱密码顺序
    random.shuffle(password)

    return "".join(password)


def register_assemblyai_account():
    """注册 AssemblyAI 账号并返回账号信息"""
    # 生成随机邮箱和密码
    email = generate_random_email()
    password = "me15259649051."  # 使用固定密码

    print(f"生成的邮箱: {email}")
    print(f"生成的密码: {password}")

    try:
        # 解决 reCAPTCHA v3 验证码
        print("正在解决 reCAPTCHA v3 验证码...")
        recaptcha_result = solver.recaptcha_v3(
            sitekey="6Le8MNsqAAAAAIGamHeHFTVdsoUF22Jzdkx6G9Qe",
            url="https://www.assemblyai.com/dashboard/signup",
        )
        recaptcha_token = recaptcha_result["code"]
        print(f"reCAPTCHA Token: {recaptcha_token[:30]}...(已截断)")

        # 准备注册请求
        signup_url = "https://www.assemblyai.com/dashboard/api/auth/signup"
        headers = {
            "Content-Type": "application/json",
            "accept": "application/json",
            "origin": "https://www.assemblyai.com",
            "referer": "https://www.assemblyai.com/dashboard/signup",
        }

        data = {
            "email": email,
            "password": password,
            "signupSource": "Google",
            "utm": {},
            "recaptchaToken": recaptcha_token,
        }

        # 发送注册请求
        print("正在发送注册请求...")
        with httpx.Client() as client:
            response = client.post(signup_url, json=data, headers=headers)

            if response.status_code == 200:
                result = response.json()
                print("注册成功!")

                # 提取需要的信息
                account_info = {
                    "email": email,
                    "password": password,
                    "api_token": result.get("api_token"),
                    "id": result.get("id"),
                    "created": result.get("created"),
                }

                # 保存账号信息到文件并更新已使用邮箱集合
                save_account_info(account_info)
                used_emails.add(email)  # 确保添加到已使用集合

                return account_info
            else:
                print(f"注册失败,状态码: {response.status_code}")
                print(f"响应内容: {response.text}")
                return None

    except Exception as e:
        print(f"注册过程中出现错误: {e}")
        return None


def save_account_info(account_info):
    """保存账号信息到文件"""
    # 确保结果文件存在
    result_file = "assemblyai_accounts.json"

    # 如果文件不存在,创建一个空的 JSON 数组
    if not os.path.exists(result_file):
        with open(result_file, "w") as f:
            json.dump([], f)

    # 读取现有数据
    with open(result_file, "r") as f:
        try:
            accounts = json.load(f)
        except json.JSONDecodeError:
            accounts = []

    # 检查是否已存在相同邮箱的账号(额外检查)
    for account in accounts:
        if account.get("email") == account_info["email"]:
            print(f"警告:邮箱 {account_info['email']} 已存在于账号文件中!")
            # 这里我们仍然继续保存,因为可能是同一账号的不同信息

    # 添加新账号
    accounts.append(account_info)

    # 写回文件
    with open(result_file, "w") as f:
        json.dump(accounts, f, indent=2)

    print(f"账号信息已保存到 {result_file}")

    # 同时保存为简单格式
    with open("assemblyai_accounts.txt", "a") as f:
        f.write(
            f"{account_info['email']}----{account_info['password']}----{account_info['api_token']}"
        )

    print("账号信息已保存到 assemblyai_accounts.txt")


def main():
    """主函数"""
    print("开始注册 AssemblyAI 账号...")
    print(f"当前已有 {len(used_emails)} 个已使用的邮箱地址")

    # 注册账号数量
    num_accounts = 1
    try:
        num_accounts = int(input("请输入要注册的账号数量: "))
    except ValueError:
        print("输入无效,默认注册 1 个账号")

    successful_registrations = 0

    for i in range(num_accounts):
        print(f"正在注册第 {i + 1}/{num_accounts} 个账号...")
        account_info = register_assemblyai_account()

        if account_info:
            successful_registrations += 1
            print(f"账号 {i + 1} 注册成功!")
            print(f"邮箱: {account_info['email']}")
            print(f"密码: {account_info['password']}")
            print(f"API Token: {account_info['api_token']}")
        else:
            print(f"账号 {i + 1} 注册失败!")

        # 如果不是最后一个账号,等待一段时间再继续
        if i < num_accounts - 1:
            wait_time = random.randint(3, 8)
            print(f"等待 {wait_time} 秒后继续...")
            time.sleep(wait_time)

    print(f"注册完成!成功注册 {successful_registrations}/{num_accounts} 个账号。")
    print(f"总共已使用 {len(used_emails)} 个唯一邮箱地址")


if __name__ == "__main__":
    main()

57 Likes

成福利合集了 :tieba_087:

40 Likes

赶紧收藏起来

39 Likes

:tieba_087: 中转站的底裤都要被佬削完了

40 Likes

:tieba_087:大幅提高了中转站的技术水平

7 Likes

:tieba_087: 国外 AI 灾难日,佬以一己之力让 AI 届验证体系换代。

1 Like

太猛了吧

中转站技术提升

大脑升级系列

大佬太猛了,直接挑战他们网站的压力。

好家伙,太猛了!

这家是语音转文字?, :tieba_009:佬们别薅太多这个,这个哔哩哔哩提取音频+用这个转文字+Gemini工作流能大幅度提升学习效率,这个是真有用,大学生学习效率能快速提升

2 Likes

这倒不至于,反而是助长了大部分的api商,本来没这方面业务的直接clone使用 :tieba_087:

1 Like