Untitled

 avatar
unknown
plain_text
2 years ago
4.3 kB
4
Indexable
import requests
import tkinter as tk
from tkinter import messagebox

class SMMServiceApp:
    def __init__(self, api_key):
        self.api_key = api_key
        self.root = tk.Tk()
        self.root.title("SMM Service App")

        self.balance_label = tk.Label(self.root, text="Current Balance: $0.00")
        self.balance_label.pack()

        self.services_label = tk.Label(self.root, text="Available Services:")
        self.services_label.pack()

        self.services_listbox = tk.Listbox(self.root, selectmode=tk.SINGLE)
        self.services_listbox.pack()

        self.quantity_var = tk.StringVar()
        self.link_var = tk.StringVar()

        quantity_label = tk.Label(self.root, text="Quantity:")
        quantity_label.pack()
        quantity_entry = tk.Entry(self.root, textvariable=self.quantity_var)
        quantity_entry.pack()

        link_label = tk.Label(self.root, text="Link:")
        link_label.pack()
        link_entry = tk.Entry(self.root, textvariable=self.link_var)
        link_entry.pack()

        confirm_button = tk.Button(self.root, text="Confirm and Process", command=self.confirm_order)
        confirm_button.pack()

        self.update_services()
        self.update_balance()
        self.root.mainloop()

    def update_services(self):
        try:
            services = self.get_services()
            for service in services:
                self.services_listbox.insert(tk.END, f"{service['name']} - ${service['rate']} per unit")
        except Exception as e:
            self.show_error(f"Error getting services: {e}")

    def get_services(self):
        try:
            response = self.make_api_request(action="services")
            return response.json()
        except Exception as e:
            self.show_error(f"Error getting services: {e}")
            return []

    def update_balance(self):
        balance_info = self.get_balance()
        if balance_info:
            balance = float(balance_info.get("balance", 0))
            currency = balance_info.get("currency", "USD")
            self.balance_label.config(text=f"Current Balance: ${balance:.2f} {currency}")
            self.root.after(5000, self.update_balance)  # Update balance every 5 seconds

    def get_balance(self):
        try:
            response = self.make_api_request(action="balance")
            return response.json()
        except Exception as e:
            self.show_error(f"Error getting balance: {e}")
            return None

    def confirm_order(self):
        selected_index = self.services_listbox.curselection()
        if not selected_index:
            self.show_error("Please select a service.")
            return

        service = self.services_listbox.get(selected_index)
        service_id = int(service.split('-')[0].strip())

        quantity = self.quantity_var.get()
        link = self.link_var.get()

        if not quantity or not link:
            self.show_error("Please fill in all fields.")
            return

        try:
            quantity = int(quantity)
        except ValueError:
            self.show_error("Please enter a valid numeric value for Quantity.")
            return

        try:
            response = self.make_api_request(
                action="add",
                service=service_id,
                link=link,
                quantity=quantity
            )
            order_id = response.json().get("order")
            charge = response.json().get("charge")

            confirmation_message = f"Order ID: {order_id}\nCharge: ${charge:.5f}"
            messagebox.showinfo("Order Confirmation", confirmation_message)
        except Exception as e:
            self.show_error(f"Error processing order: {e}")

    def make_api_request(self, **params):
        try:
            url = "https://smmfollows.com/api/v2"
            params["key"] = self.api_key
            response = requests.post(url, data=params)
            response.raise_for_status()
            return response
        except requests.exceptions.RequestException as e:
            self.show_error(f"API Request Error: {e}")
            raise

    def show_error(self, message):
        messagebox.showerror("Error", message)

# Example Usage
api_key = 'ddce6233f5792cf86de317a2bda6d3b3'
app = SMMServiceApp(api_key)
Editor is loading...