Skip to main content

PyMacro can automate your tasks inside of Python.

Project description

pymacro

Image

PyMacro is a partial wrapper around pyautogui. PyMacro can automate your tasks all inside of Python - give it a try!

Features

  • Object oriented
  • Extra utility functions
  • Asynchronous support

Installation

PyMacro can be easily downloaded with PIP:

pip install pymacro

You can install the latest version from this repository, too:

pip install git+https://github.com/jay3332/PyMacro

Example Usage

Basic Usage

from pymacro import Macro

macro = Macro()
macro.type("Hello, world!", interval=.15)

macro(wait=2)

Mouse/keyboard Macros

from pymacro import Macro

macro = Macro()
macro.move_mouse_relative((0, 50), seconds=0.5)
macro.click()
macro.key_press("enter")

macro(wait=0.5)

Repeat Macro Indefinitely

from pymacro import Macro

macro = Macro()
macro.click()

macro(wait=0.5, repeat=0, delay=0.1)

# Wait 0.5 seconds before starting the macro.
# Repeating 0 times tells pymacro to repeat this macro forever without end.
# Delay of 0.1 means to wait 0.1 seconds between every iteration of the loop.

Async Usage

import asyncio
from pymacro import Macro

macro = Macro()
macro.type("Hello, world!", interval=.15)

async def run_macro():
    await macro.async_run(wait=2)

asyncio.run(run_macro())

Executing Functions

from pymacro import Macro

def fn():
    print("This function is running.")

macro = Macro()
macro.execute(fn, times=5)  # execute this function 5 times 

macro()

Multi-tasking

Because PyMacro has asynchrounous support, it is possible to run two macros at once in the same program.

Multiple Macros at once (asyncio)

import pymacro
import asyncio

macro1 = pymacro.Macro()
macro2 = pymacro.Macro()

def print_one_to_ten():
    for i in range(1, 11):
        print(i)

macro1.execute(print_one_to_ten)
macro2.execute(print_one_to_ten)

loop = asyncio.get_event_loop()
loop.create_task(macro1.async_run())
loop.create_task(macro2.async_run())

Multiple Macros at once (threading)

âš  This is not recommended - use asyncio if possible.

import pymacro
import threading

macro1 = pymacro.Macro()
macro2 = pymacro.Macro()

def print_one_to_ten():
    for i in range(1, 11):
        print(i)

macro1.execute(print_one_to_ten)
macro2.execute(print_one_to_ten)

runner1 = threading.Thread(target=macro1.run)
runner2 = threading.Thread(target=macro2.run)

runner1.start()
runner2.start()

Tips

Special Functions

import pymacro
macro = pymacro.Macro()

# Functions
macro.execute(function, times=1, interval=0, *args, **kwargs)

# End the macro early 
macro.end(condition=True, wait=0)

macro()

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

pymacro-0.1.1.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

pymacro-0.1.1-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

Details for the file pymacro-0.1.1.tar.gz.

File metadata

  • Download URL: pymacro-0.1.1.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for pymacro-0.1.1.tar.gz
Algorithm Hash digest
SHA256 aad622c3839f6741f2492695311c321fcf433e35ad8db74767aca7f5840ad424
MD5 4ef23ab8b09d583ba6b803b6cce04477
BLAKE2b-256 569cad4aeaa22be00305278734eb7fdae89b39b421bd5fed002d65af95d23531

See more details on using hashes here.

File details

Details for the file pymacro-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pymacro-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 5.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for pymacro-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 450ec99f12919fc7b47f6d4ceea5064e7f227dcaa3a29d04512d0cc7d2dd3f49
MD5 11decef38ce8304b726084b636a47f23
BLAKE2b-256 c3809c28e854bbd97f9d27836a080bb31fae1c1d7698a0f43b476d81b7ceacde

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