This commit is contained in:
2026-03-21 08:22:24 -04:00
parent 47aeebd86f
commit c5a563f047
5 changed files with 229 additions and 28 deletions

View File

@@ -1,13 +1,35 @@
import asyncio
import json
from dotenv import load_dotenv
import os
import json
import logging
from pyicloud import PyiCloudService
from pyicloud.exceptions import PyiCloud2FARequiredException
class JsonFormatter(logging.Formatter):
def format(self, record: logging.LogRecord) -> str:
payload = {
"ts": self.formatTime(record, "%Y-%m-%dT%H:%M:%S%z"),
"level": record.levelname,
"logger": record.name,
"message": record.getMessage(),
}
if record.exc_info:
payload["exc_info"] = self.formatException(record.exc_info)
return json.dumps(payload, ensure_ascii=True)
handler = logging.StreamHandler()
handler.setFormatter(JsonFormatter())
root_logger = logging.getLogger()
root_logger.handlers = [handler]
root_logger.setLevel(logging.INFO)
logger = logging.getLogger("ios-api")
class FindMyMonitor:
def __init__(self, username, password, queue: asyncio.Queue, token_file="icloud_token.txt"):
self.username = username
self.password = password
def __init__(self, queue: asyncio.Queue, token_file="icloud_token.txt"):
self.username = os.getenv("APPLE_ID")
self.password = os.getenv("APPLE_PW")
self.token_file = token_file
self.queue = queue
self.api = None
@@ -72,6 +94,7 @@ class FindMyMonitor:
self.start()
while self.running:
logger.info("Starting iCloud FMF loop")
try:
lat, lon, ts = await self.get_location()
print(f"[{ts}] Location: {lat}, {lon}")