pyca/schedule.py
def parse_ical(vcal):
    '''Parse Opencast schedule iCalendar file and return events as dict
    '''
    vcal = vcal.replace('\r\n ', '').replace('\r\n\r\n', '\r\n')
    vevents = vcal.split('\r\nBEGIN:VEVENT\r\n')
    del(vevents[0])
    events = []
    for vevent in vevents:
        event = {}
        for line in vevent.split('\r\n'):
            line = line.split(':', 1)
            key = line[0].lower()
            if len(line) <= 1 or key == 'end':
                continue
            if key.startswith('dt'):
                event[key] = unix_ts(dateutil.parser.parse(line[1]))
                continue
            if not key.startswith('attach'):
                event[key] = line[1]
                continue
            # finally handle attachments
            event['attach'] = event.get('attach', [])
            attachment = {}
            for x in [x.split('=') for x in line[0].split(';')]:
                if x[0].lower() in ['fmttype', 'x-apple-filename']:
                    attachment[x[0].lower()] = x[1]
            attachment['data'] = b64decode(line[1]).decode('utf-8')
            event['attach'].append(attachment)
        events.append(event)
    return events
def parse_ical(vcal):
    '''Parse Opencast schedule iCalendar file and return events as dict
    '''
    vcal = vcal.replace('\r\n ', '').replace('\r\n\r\n', '\r\n')
    vevents = vcal.split('\r\nBEGIN:VEVENT\r\n')
    del(vevents[0])
    events = []
    for vevent in vevents:
        event = {}
        for line in vevent.split('\r\n'):
            line = line.split(':', 1)
            key = line[0].lower()
            if len(line) <= 1 or key == 'end':
                continue
            if key.startswith('dt'):
                event[key] = unix_ts(dateutil.parser.parse(line[1]))
                continue
            if not key.startswith('attach'):
                event[key] = line[1]
                continue
            # finally handle attachments
            event['attach'] = event.get('attach', [])
            attachment = {}
            for x in [x.split('=') for x in line[0].split(';')]:
                if x[0].lower() in ['fmttype', 'x-apple-filename']:
                    attachment[x[0].lower()] = x[1]
            attachment['data'] = b64decode(line[1]).decode('utf-8')
            event['attach'].append(attachment)
        events.append(event)
    return events
def parse_ical ( vcal ) : vcal = vcal . replace ( '\r\n ' , '' ) . replace ( '\r\n\r\n' , '\r\n' ) vevents = vcal . split ( '\r\nBEGIN:VEVENT\r\n' ) del ( vevents [ 0 ] ) events = [ ] for vevent in vevents : event = { } for line in vevent . split ( '\r\n' ) : line = line . split ( ':' , 1 ) key = line [ 0 ] . lower ( ) if len ( line ) <= 1 or key == 'end' : continue if key . startswith ( 'dt' ) : event [ key ] = unix_ts ( dateutil . parser . parse ( line [ 1 ] ) ) continue if not key . startswith ( 'attach' ) : event [ key ] = line [ 1 ] continue # finally handle attachments event [ 'attach' ] = event . get ( 'attach' , [ ] ) attachment = { } for x in [ x . split ( '=' ) for x in line [ 0 ] . split ( ';' ) ] : if x [ 0 ] . lower ( ) in [ 'fmttype' , 'x-apple-filename' ] : attachment [ x [ 0 ] . lower ( ) ] = x [ 1 ] attachment [ 'data' ] = b64decode ( line [ 1 ] ) . decode ( 'utf-8' ) event [ 'attach' ] . append ( attachment ) events . append ( event ) return events
Parse Opencast schedule iCalendar file and return events as dict
Parse Opencast schedule iCalendar file and return events as dict