
Security News
Browserslist-rs Gets Major Refactor, Cutting Binary Size by Over 1MB
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
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.
Version 5.0.0 is a complete re-architecture of pytile
– as such, the API has changed.
Please read the documentation carefully!
pytile
is currently supported on:
pip install pytile
pytile
usage starts with an aiohttp
ClientSession
– note that this
ClientSession is required to properly authenticate the library:
import asyncio
from aiohttp import ClientSession
from pytile import async_login
async def main() -> None:
"""Run!"""
async with ClientSession() as session:
api = await async_login("<EMAIL>", "<PASSWORD>", session)
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!"""
async with ClientSession() as session:
api = await async_login(
"<EMAIL>", "<PASSWORD>", session, client_uuid="MY_UUID", locale="en-GB"
)
asyncio.run(main())
Tile Premium Required: No
import asyncio
from aiohttp import ClientSession
from pytile import async_login
async def main() -> None:
"""Run!"""
async with ClientSession() as session:
api = await async_login("<EMAIL>", "<PASSWORD>", session)
tiles = await api.async_get_tiles()
asyncio.run(main())
The async_get_tiles
coroutine returns a dict with Tile UUIDs as the keys and Tile
objects as the values.
Tile
ObjectThe Tile object comes with several properties:
accuracy
: the location accuracy of the Tilealtitude
: the altitude of the Tilearchetype
: the internal reference string that describes the Tile's "family"dead
: whether the Tile is inactivefirmware_version
: the Tile's firmware versionhardware_version
: the Tile's hardware versionkind
: the kind of Tile (e.g., TILE
, PHONE
)last_timestamp
: the timestamp at which the current attributes were receivedlatitude
: the latitude of the Tilelongitude
: the latitude of the Tilelost
: whether the Tile has been marked as "lost"lost_timestamp
: the timestamp at which the Tile was last marked as "lost"name
: the name of the Tileuuid
: the Tile UUIDvisible
: whether the Tile is visible in the mobile appimport asyncio
from aiohttp import ClientSession
from pytile import async_login
async def main() -> None:
"""Run!"""
async with ClientSession() as session:
api = await async_login("<EMAIL>", "<PASSWORD>", session)
tiles = await api.async_get_tiles()
for tile_uuid, tile in tiles.items():
print(f"The Tile's name is {tile.name}")
# ...
asyncio.run(main())
In addition to these properties, the Tile
object comes with an async_update
coroutine
which requests new data from the Tile cloud API for this Tile:
import asyncio
from aiohttp import ClientSession
from pytile import async_login
async def main() -> None:
"""Run!"""
async with ClientSession() as session:
api = await async_login("<EMAIL>", "<PASSWORD>", session)
tiles = await api.async_get_tiles()
for tile_uuid, tile in tiles.items():
await tile.async_update()
asyncio.run(main())
Tile Premium Required: Yes
You can retrieve a Tile's history by calling its async_history
coroutine:
import asyncio
from datetime import datetime
from aiohttp import ClientSession
from pytile import async_login
async def main() -> None:
"""Run!"""
async with ClientSession() as session:
api = await async_login("<EMAIL>", "<PASSWORD>", session)
tiles = await api.async_get_tiles()
for tile_uuid, tile in tiles.items():
# Define a start and end datetime to get history for:
start = datetime(2023, 1, 1, 0, 0, 0)
end = datetime(2023, 1, 31, 0, 0, 0)
history = await tile.async_history(start, end)
# >>> { "version": 1, "revision": 1, ... }
asyncio.run(main())
Thanks to all of our contributors so far!
python3 -m venv .venv
source ./.venv/bin/activate
script/setup
poetry run pytest --cov pytile tests
README.md
with any new documentation.FAQs
A simple Python API for Tile® Bluetooth trackers
We found that pytile demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Research
Security News
Eight new malicious Firefox extensions impersonate games, steal OAuth tokens, hijack sessions, and exploit browser permissions to spy on users.
Security News
The official Go SDK for the Model Context Protocol is in development, with a stable, production-ready release expected by August 2025.