Skip to content
This repository has been archived by the owner on Feb 21, 2019. It is now read-only.

Commit

Permalink
uses strptime for date and time
Browse files Browse the repository at this point in the history
  • Loading branch information
Matthew Leon Grinshpun authored and Nathan Hamblen committed Jan 20, 2010
1 parent de79e20 commit 48810c8
Showing 1 changed file with 35 additions and 18 deletions.
53 changes: 35 additions & 18 deletions meetup_api_client.py
@@ -1,11 +1,11 @@
#!/usr/bin/env python
from __future__ import with_statement

import datetime
import time
import types
from urllib import urlencode
from urllib2 import HTTPError, HTTPErrorProcessor, urlopen, Request, build_opener
from datetime import datetime

import oauth
import MultipartPostHandler as mph
Expand Down Expand Up @@ -231,21 +231,31 @@ def __init__(self, json, uritype):
def __str__(self):
return 'meta: ' + str(self.meta) + '\n' + str(self.results)

def converttime(str):
"""Given a time string in Meetup's format, return a datetime."""
MEETUP_DATE_FORMAT = '%a %b %d %H:%M:%S %Z %Y'
return datetime.strptime(str, MEETUP_DATE_FORMAT)

class API_Item(object):
"""Base class for an item in a result set returned by the API."""

datafields = [] #override
timefields = [] #override
def __init__(self, properties):
"""load properties that are relevant to all items (id, etc.)"""
for field in self.datafields:
self.__setattr__(field, properties[field])
self.json = properties
"""load properties that are relevant to all items (id, etc.)"""
for field in self.datafields:
self.__setattr__(field, properties[field])
for field in self.timefields:
self.__setattr__(field, converttime(properties[field]))
self.json = properties

def __repr__(self):
return self.__str__();

class Member(API_Item):
datafields = ['bio', 'name', 'link','id','photo_url', 'zip','lat','lon','city','state','country','joined','visited']
datafields = ['bio', 'name', 'link','id','photo_url', 'zip','lat','lon',
'city','state','country']
timefields = ['joined', 'visited']

def get_groups(self, apiclient, **extraparams):
extraparams.update({'member_id':self.id})
Expand All @@ -255,14 +265,19 @@ def __str__(self):
return "Member %s (url: %s)" % (self.name, self.link)

class Photo(API_Item):
datafields = ['albumtitle', 'link', 'member_url', 'descr', 'created', 'photo_url', 'photo_urls', 'thumb_urls']
datafields = ['albumtitle', 'link', 'member_url', 'descr', 'photo_url',
'photo_urls', 'thumb_urls']
timefields = ['created']

def __str__(self):
return "Photo located at %s posted by member at %s: (%s)" % (self.link, self.member_url, self.descr)


class Event(API_Item):
datafields = ['id', 'name', 'updated', 'time', 'photo_url', 'event_url', 'venue_lat', 'venue_lon', 'description', 'status', 'rsvpcount', 'no_rsvpcount', 'maybe_rsvpcount']
datafields = ['id', 'name', 'photo_url', 'event_url', 'venue_lat',
'venue_lon', 'description', 'status', 'rsvpcount',
'no_rsvpcount', 'maybe_rsvpcount']
timefields = ['time', 'updated']

def __str__(self):
return 'Event %s named %s at %s (url: %s)' % (self.id, self.name, self.time, self.event_url)
Expand All @@ -272,17 +287,18 @@ def get_rsvps(self, apiclient, **extraparams):
return apiclient.get_rsvps(**extraparams)

class Rsvp(API_Item):
datafields = ['name', 'link', 'comment','zip','coord','lon','city','state','country','response','guests','answers','updated','created']
datafields = ['name', 'link', 'comment','zip','coord','lon','city','state',
'country','response','guests','answers']
timefields = ['updated', 'created']

def __str__(self):
return 'Rsvp by %s (%s) with comment: %s' % (self.name, self.link, self.comment)

class Group(API_Item):
datafields = [ 'id','name','group_urlname','link','updated',\
'members','created','photo_url',\
'description','zip','lat','lon',\
'city','state','country','organizerProfileURL', \
'topics']
datafields = [ 'id','name','group_urlname','link', 'members','photo_url',
'description','zip','lat','lon', 'city','state','country',
'organizerProfileURL', 'topics']
timefields = ['created', 'updated']

def __str__(self):
return "%s (%s)" % (self.name, self.link)
Expand Down Expand Up @@ -316,8 +332,8 @@ def get_events(self,apiclient, **extraparams):
return apiclient.get_events(**extraparams)

class Topic(API_Item):
datafields = ['id','name','description','link','updated',\
'members','urlkey']
datafields = ['id','name','description','link', 'members','urlkey']
timefields = ['updated']

def __str__(self):
return "%s with %s members (%s)" % (self.name, self.members,
Expand All @@ -332,8 +348,9 @@ def get_photos(self, apiclient, **extraparams):
return apiclient.get_photos(**extraparams)

class Comment(API_Item):
datafields = ['name','link','comment','rating','photo_url',\
'created','lat','lon','country','city','state']
datafields = ['name','link','comment','rating','photo_url',
'lat','lon','country','city','state']
timefields = ['created']

def __str__(self):
return "Comment from %s (%s)" % (self.name, self.link)
Expand Down

0 comments on commit 48810c8

Please sign in to comment.