Skip to main content

Sync/async Python wrapper for 5sim API

Project description

5sim

PyFiveSim

Sync/async Python wrapper for 5sim API

Installing

pip install PyFiveSim

Features

  • Two available clients: sync (HTTPX) and async (AIOHTTP), which can be used as context managers or as instances
  • Methods return Pydantic model as result for easier interaction with data
  • Enums for prettier code
  • Full exception handling

Library documentation is already in development...

Usage

import asyncio

from pyfivesim import PyFiveSimAsync
from pyfivesim.exceptions import (
    FiveSimNotEnoughBalance,
    FiveSimUnknownError,
    FiveSimNoFreePhones,
)
from pyfivesim.enums import (
    OrderAction,
    Status,
)


async def main():
    api_key = "YOUR_API_KEY"
    
    # Create a client instance or use async with ...
    client = PyFiveSimAsync(
        api_key=api_key,
        base_url="https://5sim.net/v1" # Optional, default is "https://5sim.biz/v1",
    )
    # or use sync client PyFiveSimSync(api_key=api_key)
    
    # Get the user profile and print the ID, balance, and rating
    profile = await client.get_user_profile()
    print("ID >>>", profile.id)
    print("Balance >>>", profile.balance)
    print("Rating >>>", profile.rating)
    # Get last 5 user orders and print the service and price
    for order in profile.last_top_orders:
        print("Service >>>", order.service)
        print("Operator >>>", order.operator)
        print("Price >>>", order.price)

    # Try to buy a number
    try:
        order = await client.buy_number(
            product="youdo",
            country="russia",
            max_price=5,
        )
    except FiveSimNotEnoughBalance:
        print("O-o-p-s! Not enough balance :(")
    except FiveSimNoFreePhones:
        print("O-o-p-s! No free numbers :(")
    except FiveSimUnknownError as exc:
        print("Unknown error occurred :(")
        print("Error status code >>>", exc.status_code)
        print("Error message >>>", exc.data)
    else:
        print("W-o-o-h-o-o! Number bought successfully!")
        print("Phone number >>>", order.phone)
        print("Price >>>", order.price)

        print("Start checking for SMS...")
        sleep_for = 5
        while not order.status == Status.FINISHED:
            await asyncio.sleep(sleep_for)
            order = await client.get_order_info(order.id)
            if order.sms:
                print("SMS received! :)")
                print("SMS text >>>", order.sms.text)
                print("SMS code >>>", order.sms.code)
                print("Finish the order...")
                await client.action_with_order(OrderAction.FINISH, order.id)
                print("Order finished successfully!")
                break
            else:
                print(f"No SMS received yet, sleep for {sleep_for} seconds :(")


if __name__ == "__main__":
    asyncio.run(main())

Docs

Go to https://5sim.biz/ for more information about API methods

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PyFiveSim-1.0.4.tar.gz (15.0 kB view details)

Uploaded Source

File details

Details for the file PyFiveSim-1.0.4.tar.gz.

File metadata

  • Download URL: PyFiveSim-1.0.4.tar.gz
  • Upload date:
  • Size: 15.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.0

File hashes

Hashes for PyFiveSim-1.0.4.tar.gz
Algorithm Hash digest
SHA256 dee5a1dba71667eca209990d3db9ad400998fd42f403c1a3e790ac1ad8428c97
MD5 6a0ee134bcd1d7713c1cdb4c5fdd1138
BLAKE2b-256 38605a8703c216a4b28a9f6b8311556eebf5ddae417dd1ed1bbdba35374b86a5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page