add full capacity email X posting

main
Shane 7 months ago
parent 173897d6eb
commit 66fab42c73
  1. 41
      check_x_capacity.py

@ -8,6 +8,10 @@ from foodie_utils import (
import time import time
import sys import sys
import os import os
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from foodie_config import EMAIL_CONFIG
# Configure logging # Configure logging
logging.basicConfig( logging.basicConfig(
@ -16,6 +20,39 @@ logging.basicConfig(
) )
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def send_capacity_alert(username, remaining, reset_time):
"""Send email alert when an author's tweet capacity is full."""
try:
msg = MIMEMultipart()
msg['From'] = EMAIL_CONFIG['from_email']
msg['To'] = EMAIL_CONFIG['to_email']
msg['Subject'] = f" X Capacity Alert: {username}"
body = f"""
X Tweet Capacity Alert!
Username: {username}
Time: {datetime.now(timezone.utc).strftime('%Y-%m-%d %H:%M:%S UTC')}
Remaining Tweets: {remaining}/17
Reset Time: {reset_time}
This author has reached their daily tweet limit.
The quota will reset at the time shown above.
This is an automated alert from your foodie_automator system.
"""
msg.attach(MIMEText(body, 'plain'))
with smtplib.SMTP(EMAIL_CONFIG['smtp_server'], EMAIL_CONFIG['smtp_port']) as server:
server.starttls()
server.login(EMAIL_CONFIG['smtp_username'], EMAIL_CONFIG['smtp_password'])
server.send_message(msg)
logger.info(f"Sent capacity alert email for {username}")
except Exception as e:
logger.error(f"Failed to send capacity alert email: {e}")
def display_author_status(author): def display_author_status(author):
"""Display detailed status for a single author.""" """Display detailed status for a single author."""
username = author['username'] username = author['username']
@ -38,6 +75,10 @@ def display_author_status(author):
print(f" • Reset time: {reset_time}") print(f" • Reset time: {reset_time}")
print(f" • Can post: {'Yes' if can_post else 'No'}") print(f" • Can post: {'Yes' if can_post else 'No'}")
# Send alert if capacity is full
if remaining == 0:
send_capacity_alert(username, remaining, reset_time)
# Show API status for verification # Show API status for verification
if not is_any_script_running(): if not is_any_script_running():
api_remaining, api_reset = get_x_rate_limit_status(author) api_remaining, api_reset = get_x_rate_limit_status(author)

Loading…
Cancel
Save