Arkadaşlar merhaba 0.5sn de apiye istek atsın diyorum ama ekranda başarılı istek sayısı 2 sn de bir artıyor , istek gönderme sayısını nasıl artırabilirim , ve birde aynı anda 2 rezervasyon geliyor 2. sini bazen alamıyor napmam gerekli
import time
import json
import certifi
import cloudscraper
import random
import sys
import requests
import threading
from fake_useragent import UserAgent



# API URL'leri
BOOKING_URL = "Api1"
ACCEPT_URL = "Api2"

# API'ye gönderilecek login bilgileri
LOGIN_HASH = "Hash1"
ACCEPT_LOGIN_HASH = "Hash2"

# Araç ID
VEHICLE_ID = "36979"

# Telegram Bot API Bilgileri
TELEGRAM_BOT_TOKEN = "Token"
TELEGRAM_CHAT_ID = "id

# Proxy listesi
proxy_list = [
    {"Proxy"},
    {"Proxy "},
    {"Proxy "},
    {"Proxy "},
  
    
]

# CloudScraper başlat
scraper = cloudscraper.create_scraper(
    browser={"browser": "chrome", "platform": "windows", "mobile": False}
)

previous_hashes = set()

# Yeniden deneme ayarları
MAX_RETRIES = 5
RETRY_DELAY = 3

# Başarılı istek sayacı
success_count = 0
lock = threading.Lock()  # Thread güvenliği için kilitleme mekanizması

def get_random_headers():
    """Her istek için rastgele User-Agent döndürür"""
    ua = UserAgent()
    return {
        "Content-Type": "application/json",
        "User-Agent": ua.random
    }

def send_telegram_message(message):
    """Telegram'a mesaj gönderen fonksiyon"""
    url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
    payload = {"chat_id": TELEGRAM_CHAT_ID, "text": message}
    try:
        response = requests.post(url, json=payload)
        if response.status_code == 200:
            print("\n📩 Telegram bildirimi gönderildi!")
        else:
            print(f"\n❌ Telegram hata kodu: {response.status_code} - {response.text}")
    except Exception as e:
        print(f"\n⚠️ Telegram bağlantı hatası: {e}")

def accept_booking(booking_hash):
    """Rezervasyonu kabul eden fonksiyon (Thread ile çalışır)"""
    global previous_hashes

    if booking_hash in previous_hashes:
        return  # Aynı rezervasyonu iki kez işlememek için

    print(f"\n🚀 Yeni Rezervasyon İşleniyor! Booking Hash: {booking_hash}")
    accept_payload = {
        "login_hash": ACCEPT_LOGIN_HASH,
        "booking_hash": booking_hash,
        "vehicle_id": VEHICLE_ID,
        "refuse": "accept"
    }

    proxies = random.choice(proxy_list)  # Her istek için farklı proxy
    headers = get_random_headers()  # Her istek için farklı User-Agent

    for attempt in range(MAX_RETRIES):
        try:
            accept_response = scraper.post(ACCEPT_URL, headers=headers, json=accept_payload, verify=certifi.where(), proxies=proxies)
            if accept_response.status_code == 200:
                with lock:
                    previous_hashes.add(booking_hash)  # Önceki rezervasyonlara ekle
                print(f"\n✅ Rezervasyon kabul edildi! {booking_hash}")

                # Telegram bildirimi gönder
                send_telegram_message(f"✅ Rezervasyon Kabul Edildi! ✅\n\n{booking_hash})")
                break
            else:
                print(f"\n❌ Rezervasyon kabul hatası: {accept_response.status_code} - {accept_response.text}")
                time.sleep(RETRY_DELAY * (2 ** attempt))  # Exponential backoff
        except Exception as e:
            print(f"\n⚠️ Bağlantı hatası (Rezervasyon kabulü): {e}, tekrar deneniyor...")
            time.sleep(RETRY_DELAY * (2 ** attempt))  # Exponential backoff

def check_new_bookings(response):
    """Yeni rezervasyonları kontrol edip, işleme alan fonksiyon"""
    try:
        current_data = response.json().get("data", {}).get("bookings", [])
    except json.JSONDecodeError as e:
        print(f"\n❌ JSON dönüşüm hatası: {e}. Yanıt içeriği: {response.text}")
        return

    for booking in current_data:
        booking_hash = booking["booking_hash_link"]

        if booking_hash not in previous_hashes:
            thread = threading.Thread(target=accept_booking, args=(booking_hash,))
            thread.start()  # Yeni rezervasyonlar için ayrı bir thread başlat

def send_booking_request():
    """Rezervasyonları takip eden ana fonksiyon"""
    global success_count  # Global sayaç

    while True:
        time.sleep(0.5)
        proxies = random.choice(proxy_list)  # Her istek için farklı proxy
        headers = get_random_headers()  # Her istek için farklı User-Agent

        for attempt in range(MAX_RETRIES):
            try:
                payload = {"login_hash": LOGIN_HASH}
                response = scraper.post(BOOKING_URL, headers=headers, json=payload, verify=certifi.where(), proxies=proxies)

                if response.status_code == 200:
                    with lock:
                        success_count += 1  # Sayacı artır
                    sys.stdout.write(f"\r✅ Başarılı istek sayısı: {success_count}")  # Aynı satıra yaz
                    sys.stdout.flush()  # Terminali güncelle
                    check_new_bookings(response)
                    break  # Başarılıysa döngüden çık
                else:
                    print(f"\n❌ Hata: {response.status_code} - {response.text}")
                    time.sleep(RETRY_DELAY * (2 ** attempt))  # Exponential backoff
            except Exception as e:
                print(f"\n⚠️ Bağlantı hatası: {e}, tekrar deneniyor...")
                time.sleep(RETRY_DELAY * (2 ** attempt))  # Exponential backoff

# Sürekli çalıştır
send_booking_request()