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
Exemple #2
0
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()
Exemple #4
0
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,
Exemple #5
0
 def __init__(self, api_key):
     self.meetup_client = MeetupClient(api_key)