lib-af-api/lib_af_api/helpers.py

91 lines
2.8 KiB
Python
Raw Permalink Normal View History

2024-01-02 07:32:46 +00:00
#!/usr/bin/env python3
"""
Helpers for Alliance Forge API objects
"""
from datetime import datetime
import pytz
def get_event_segments(event : dict, event_campaign : dict) -> dict:
"""
get_event_segments Calculate the segments for the event.
:param event: The Event object
:param event_campaign: The Campaign object for the event
:return The segments for the event as dict
"""
# Default segments
event_segments = {
"sms_segments": 0,
"mms_segments": 0,
"crystal_segments": 0
}
# Get the values to calculate with
content = event["content"]
if content is None:
content = ""
message_length = len(content)
segment_counter = 1
# Get the allowed size of the first segment. Static 160 except for MMS
first_segment_size = 160
# Update to MMS segment size
if event["media_name"] is not None:
# Based on contract negotiations
first_segment_size = event_campaign["mms_included_characters"]
event_segments["mms_segments"] = 1
# Check if Crystal
if event["media_name"].endswith("mp4"):
event_segments["crystal_segments"] = 1
# Count the segments
message_length -= first_segment_size
while message_length > 0:
segment_counter += 1
message_length -= first_segment_size
event_segments["sms_segments"] = segment_counter
return event_segments
def get_datetime_convert(af_datetime_str : str, af_time_zone : str) -> datetime:
"""
get_datetime_convert Get the datetime string to a datetime object converted to timezone.
:param af_datetime_str: The datetime string. Format "%Y-%m-%dT%H:%M"
:param af_time_zone: The alliance forge timezone
"""
# AF time zone mapping
time_zone_convert = {"hawaii": "US/Hawaii",
"alaska": "US/Alaska",
"pacific": "US/Pacific",
"mountain": "US/Mountain",
"arizona": "US/Arizona",
"central": "US/Central",
"eastern": "US/Eastern",
"aleutian": "US/Aleutian",
"east_indiana": "US/East-Indiana",
"indiana_starke": "US/Indiana-Starke",
"michigan": "US/Michigan",
"samoa": "US/Samoa"}
# Get the datetime to an object and properly set the timezone
gmt_datetime = datetime.strptime(af_datetime_str, "%Y-%m-%dT%H:%M")
gmt_timezone = pytz.timezone('GMT')
gmt_datetime = gmt_timezone.localize(gmt_datetime)
# Convert to the target timezone
target_timezone = pytz.timezone(time_zone_convert.get(af_time_zone, "US/Pacific"))
target_datetime = gmt_datetime.astimezone(target_timezone)
return target_datetime