Skip to content
forked from bachya/pytile

📡 A simple Python API for Tile® Bluetooth trackers

License

Notifications You must be signed in to change notification settings

katieescoto/pytile

 
 

Repository files navigation

📡 pytile: A simple Python API for Tile® Bluetooth trackers

CI PyPi Version License Code Coverage Maintainability Say Thanks

pytile is a simple Python library for retrieving information on Tile® Bluetooth trackers (including last location and more).

This library is built on an unpublished, unofficial Tile API; it may alter or cease operation at any point.

Python Versions

pytile is currently supported on:

  • Python 3.6
  • Python 3.7
  • Python 3.8

Installation

pip install pytile

Usage

import asyncio

from aiohttp import ClientSession

from pytile import async_login


async def main() -> None:
    """Run!"""
    client = await async_login("<EMAIL>", "<PASSWORD>")

    # Get all Tiles associated with an account:
    await client.tiles.all()


asyncio.run(main())

By default, the library creates a new connection to Tile with each coroutine. If you are calling a large number of coroutines (or merely want to squeeze out every second of runtime savings possible), an aiohttp ClientSession can be used for connection pooling:

import asyncio

from aiohttp import ClientSession

from pytile import async_login


async def main() -> None:
    """Run!"""
    async with ClientSession() as session:
        client = await async_login("<EMAIL>", "<PASSWORD>", session)

        # Get all Tiles associated with an account:
        await client.tiles.all()


asyncio.run(main())

If for some reason you need to use a specific client UUID (to, say, ensure that the Tile API sees you as a client it's seen before) or a specific locale, you can do so easily:

import asyncio

from aiohttp import ClientSession

from pytile import async_login


async def main() -> None:
    """Run!"""
    client = await async_login(
        "<EMAIL>", "<PASSWORD>", client_uuid="MY_UUID", locale="en-GB"
    )

    # Get all Tiles associated with an account:
    await client.tiles.all()


asyncio.run(main())

Contributing

  1. Check for open features/bugs or initiate a discussion on one.
  2. Fork the repository.
  3. (optional, but highly recommended) Create a virtual environment: python3 -m venv .venv
  4. (optional, but highly recommended) Enter the virtual environment: source ./.venv/bin/activate
  5. Install the dev environment: script/setup
  6. Code your new feature or bug fix.
  7. Write tests that cover your new functionality.
  8. Run tests and ensure 100% code coverage: script/test
  9. Update README.md with any new documentation.
  10. Add yourself to AUTHORS.md.
  11. Submit a pull request!

About

📡 A simple Python API for Tile® Bluetooth trackers

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 92.1%
  • Shell 7.9%