Source code for nefelibata.assistants.current_weather

import logging
from datetime import datetime
from datetime import timedelta
from datetime import timezone

import requests
from nefelibata.assistants import Assistant
from nefelibata.assistants import Scope
from nefelibata.post import Post
from nefelibata.utils import json_storage

_logger = logging.getLogger(__name__)


MAX_AGE = timedelta(days=1)


[docs]class CurrentWeatherAssistant(Assistant): scopes = [Scope.POST]
[docs] def process_post(self, post: Post, force: bool = False) -> None: post_directory = post.file_path.parent storage = post_directory / "weather.json" if storage.exists() and not force: return post_age = datetime.now(tz=timezone.utc) - post.date if post_age > MAX_AGE: return with json_storage(storage) as weather: response = requests.get("https://wttr.in/?format=j1&m") weather.update(response.json()) # touch file to ensure it rebuilds with the weather info post.file_path.touch()