class MeetupAdapter: """Pull the upcoming events from Meetup and send the message to Slack.""" def __init__(self, api_key): self.meetup_client = MeetupClient(api_key) def get_events(self, group_name: str, count: int = 1) -> List[EventDetails]: events = self.meetup_client.GetEvents(group_urlname=group_name) if not events.results: raise NoMeetupEventsFound upcoming_events = [] for event in events.results[:count]: if "venue" in event: venue_name = event["venue"]["name"] else: venue_name = "TBD" start_epoch = int(event["time"] / 1000) upcoming_events.append( EventDetails( id=event["id"], name=event["name"], url=event["event_url"], venue=venue_name, start_epoch=start_epoch, end_epoch=start_epoch + int(event["duration"]), ) ) return upcoming_events
class MeetupAdapter: """Pull the upcoming events from Meetup and send the message to Slack.""" def __init__(self, api_key): self.meetup_client = MeetupClient(api_key) def get_events(self, count=1): events = self.meetup_client.GetEvents( group_urlname=config.MEETUP_GROUP_NAME) if not events.results: raise NoMeetupEventsFound return events.results[:count]
def api_client(): return Client()
from datetime import datetime from meetup.api import Client, MeetupObject MEETUP_CLIENT_KEY = 'alpha_num_key' CLIENT = Client(MEETUP_CLIENT_KEY) def from_epoch(epoch: int, tz_offset: int = 0) -> datetime: """ Returns a datetime from an epoch int with optional UTC timezone offset """ return datetime.fromtimestamp((epoch - tz_offset) / 1000) def get_group(name: str) -> MeetupObject: """ Returns a MeetupObject for a group by url name """ return CLIENT.GetGroup({'urlname': name}) def extract_details(group: MeetupObject) -> dict: """ Returns a dict of extracted meetup group info """ return { 'name': group.name, 'category': group.category['name'], 'created': from_epoch(group.created), 'city': group.city, 'state': group.state, 'country': group.country, 'description': group.description,
def __init__(self, api_key): self.meetup_client = MeetupClient(api_key)