diff --git a/ChangeLog b/ChangeLog index 5ced1187..d4f510f4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -22743,3 +22743,10 @@ * Modified the 'AddCut()', 'ListCut()' and 'ListCuts()' methods to use the 'Cut' class in the 'rivwebapi' API. * Added an 'EditCut()' method to the 'rivwebpyapi' API. +2021-12-11 Fred Gleason + * Added a 'Log' class to the 'rivwebapi' API. + * Modified the 'ListLogs()' method to use the 'Log' class in the + 'rivwebapi' API. + * Added a 'LogLine' class to the 'rivwebapi' API. + * Modified the 'ListLog()' method to use the 'LogLine' class in the + 'rivwebapi' API. diff --git a/apis/rivwebpyapi/api/rivwebpyapi.py b/apis/rivwebpyapi/api/rivwebpyapi.py index e9266fca..817190eb 100755 --- a/apis/rivwebpyapi/api/rivwebpyapi.py +++ b/apis/rivwebpyapi/api/rivwebpyapi.py @@ -121,6 +121,102 @@ CUT_FIELDS={ 'talkEndPoint': 'integer' } +LOG_FIELDS={ + 'name': 'string', + 'serviceName': 'string', + 'description': 'string', + 'originUserName': 'string', + 'originDatetime': 'datetime', + 'linkDatetime': 'datetime', + 'modifiedDatetime': 'datetime', + 'purgeDate': 'date', + 'autoRefresh': 'boolean', + 'startDate': 'date', + 'endDate': 'date', + 'scheduledTracks': 'integer', + 'completedTracks': 'integer', + 'musicLinks': 'integer', + 'musicLinked': 'boolean', + 'trafficLinks': 'integer', + 'trafficLinked': 'boolean' +} + +LOGLINE_FIELDS={ + 'line': 'integer', + 'id': 'integer', + 'type': 'string', + 'cartType': 'string', + 'cartNumber': 'integer', + 'cutNumber': 'integer', + 'groupName': 'string', + 'groupColor': 'string', + 'title': 'string', + 'artist': 'string', + 'publisher': 'string', + 'composer': 'string', + 'album': 'string', + 'label': 'string', + 'year': 'integer', + 'client': 'string', + 'agency': 'string', + 'conductor': 'string', + 'userDefined': 'string', + 'usageCode': 'integer', + 'enforceLength': 'boolean', + 'forcedLength': 'string', + 'evergreen': 'boolean', + 'source': 'string', + 'timeType': 'string', + 'startTime': 'time', + 'transitionType': 'string', + 'cutQuantity': 'integer', + 'lastCutPlayed': 'integer', + 'markerComment': 'string', + 'markerLabel': 'string', + 'description': 'string', + 'isrc': 'string', + 'isci': 'string', + 'recordingMbId': 'string', + 'releaseMbId': 'string', + 'originUser': 'string', + 'originDateTime': 'datetime', + 'startPointCart': 'integer', + 'startPointLog': 'integer', + 'endPointCart': 'integer', + 'endPointLog': 'integer', + 'segueStartPointCart': 'integer', + 'segueStartPointLog': 'integer', + 'segueEndPointCart': 'integer', + 'segueEndPointLog': 'integer', + 'segueGain': 'integer', + 'fadeupPointCart': 'integer', + 'fadeupPointLog': 'integer', + 'fadeupGain': 'integer', + 'fadedownPointCart': 'integer', + 'fadedownPointLog': 'integer', + 'fadedownGain': 'integer', + 'duckUpGain': 'integer', + 'duckDownGain': 'integer', + 'talkStartPoint': 'integer', + 'talkEndPoint': 'integer', + 'hookMode': 'boolean', + 'hookStartPoint': 'integer', + 'hookEndPoint': 'integer', + 'eventLength': 'integer', + 'linkEventName': 'string', + 'linkStartTime': 'time', + 'linkStartSlop': 'integer', + 'linkEndSlop': 'integer', + 'linkId': 'integer', + 'linkEmbedded': 'boolean', + 'extStartTime': 'time', + 'extLength': 'integer', + 'extCartName': 'string', + 'extData': 'string', + 'extEventId': 'integer', + 'extAnncType': 'string' +} + class RivWebPyApi_ListHandler(ContentHandler): def __init__(self,base_tag,fields): self.__output=[] @@ -313,6 +409,40 @@ class Cut(object): if(key in self.__values.keys()): self.__values[key]=values[key] +class Log(object): + def __init__(self,values={}): + if(len(values)==0): + self.__values={} + for key in LOG_FIELDS: + self.__values[key]=None + else: + self.__values=values + + def values(self): + return self.__values + + def setValues(self,values): + for key in values: + if(key in self.__values.keys()): + self.__values[key]=values[key] + +class LogLine(object): + def __init__(self,values={}): + if(len(values)==0): + self.__values={} + for key in LOGLINE_FIELDS: + self.__values[key]=None + else: + self.__values=values + + def values(self): + return self.__values + + def setValues(self,values): + for key in values: + if(key in self.__values.keys()): + self.__values[key]=values[key] + class rivwebpyapi(object): """ Create a 'RivWebPyApi' object for accessing the Web API. @@ -1399,7 +1529,8 @@ class rivwebpyapi(object): def ListLog(self,log_name): """ - Returns the contents of a Rivendell log (list of dictionaries). + Returns the contents of a Rivendell log + (list of rivwebpyapi.LogLine objects). Takes the following argument: @@ -1426,91 +1557,20 @@ class rivwebpyapi(object): # # Generate the output dictionary # - fields={ - 'line': 'integer', - 'id': 'integer', - 'type': 'string', - 'cartType': 'string', - 'cartNumber': 'integer', - 'cutNumber': 'integer', - 'groupName': 'string', - 'groupColor': 'string', - 'title': 'string', - 'artist': 'string', - 'publisher': 'string', - 'composer': 'string', - 'album': 'string', - 'label': 'string', - 'year': 'integer', - 'client': 'string', - 'agency': 'string', - 'conductor': 'string', - 'userDefined': 'string', - 'usageCode': 'integer', - 'enforceLength': 'boolean', - 'forcedLength': 'string', - 'evergreen': 'boolean', - 'source': 'string', - 'timeType': 'string', - 'startTime': 'time', - 'transitionType': 'string', - 'cutQuantity': 'integer', - 'lastCutPlayed': 'integer', - 'markerComment': 'string', - 'markerLabel': 'string', - 'description': 'string', - 'isrc': 'string', - 'isci': 'string', - 'recordingMbId': 'string', - 'releaseMbId': 'string', - 'originUser': 'string', - 'originDateTime': 'datetime', - 'startPointCart': 'integer', - 'startPointLog': 'integer', - 'endPointCart': 'integer', - 'endPointLog': 'integer', - 'segueStartPointCart': 'integer', - 'segueStartPointLog': 'integer', - 'segueEndPointCart': 'integer', - 'segueEndPointLog': 'integer', - 'segueGain': 'integer', - 'fadeupPointCart': 'integer', - 'fadeupPointLog': 'integer', - 'fadeupGain': 'integer', - 'fadedownPointCart': 'integer', - 'fadedownPointLog': 'integer', - 'fadedownGain': 'integer', - 'duckUpGain': 'integer', - 'duckDownGain': 'integer', - 'talkStartPoint': 'integer', - 'talkEndPoint': 'integer', - 'hookMode': 'boolean', - 'hookStartPoint': 'integer', - 'hookEndPoint': 'integer', - 'eventLength': 'integer', - 'linkEventName': 'string', - 'linkStartTime': 'time', - 'linkStartSlop': 'integer', - 'linkEndSlop': 'integer', - 'linkId': 'integer', - 'linkEmbedded': 'boolean', - 'extStartTime': 'time', - 'extLength': 'integer', - 'extCartName': 'string', - 'extData': 'string', - 'extEventId': 'integer', - 'extAnncType': 'string' - } - handler=RivWebPyApi_ListHandler(base_tag='logLine',fields=fields) + handler=RivWebPyApi_ListHandler(base_tag='logLine', + fields=LOGLINE_FIELDS) xml.sax.parseString(r.text,handler) - - return handler.output() + out=handler.output() + ret=[] + for item in out: + ret.append(LogLine(item)) + return ret def ListLogs(self,service_name='',log_name='',trackable=False, filter_string='',recent=False): """ Returns the metadata for a set of Rivendell logs - (list of dictionaries). + (list of rivwebpyapi.Log objects). Takes the following arguments: @@ -1561,29 +1621,13 @@ class rivwebpyapi(object): # # Generate the output dictionary # - fields={ - 'name': 'string', - 'serviceName': 'string', - 'description': 'string', - 'originUserName': 'string', - 'originDatetime': 'datetime', - 'linkDatetime': 'datetime', - 'modifiedDatetime': 'datetime', - 'purgeDate': 'date', - 'autoRefresh': 'boolean', - 'startDate': 'date', - 'endDate': 'date', - 'scheduledTracks': 'integer', - 'completedTracks': 'integer', - 'musicLinks': 'integer', - 'musicLinked': 'boolean', - 'trafficLinks': 'integer', - 'trafficLinked': 'boolean' - } - handler=RivWebPyApi_ListHandler(base_tag='log',fields=fields) + handler=RivWebPyApi_ListHandler(base_tag='log',fields=LOG_FIELDS) xml.sax.parseString(r.text,handler) - - return handler.output() + out=handler.output() + ret=[] + for item in out: + ret.append(Log(item)) + return ret def ListSchedulerCodes(self): """ diff --git a/apis/rivwebpyapi/tests/list_log.py b/apis/rivwebpyapi/tests/list_log.py index 90b70445..23c1d130 100755 --- a/apis/rivwebpyapi/tests/list_log.py +++ b/apis/rivwebpyapi/tests/list_log.py @@ -76,83 +76,9 @@ except rivwebpyapi.RivWebPyError as err: sys.exit(1) # -# Display the log list +# Display the log listing # for ll in loglines: - print('line: '+str(ll['line'])) - print('id: '+str(ll['id'])) - print('type: '+str(ll['type'])) - print('cartType: '+str(ll['cartType'])) - print('cartNumber: '+str(ll['cartNumber'])) - print('cutNumber: '+str(ll['cutNumber'])) - print('groupName: '+str(ll['groupName'])) - print('groupColor: '+str(ll['groupColor'])) - print('title: '+str(ll['title'])) - print('artist: '+str(ll['artist'])) - print('publisher: '+str(ll['publisher'])) - print('composer: '+str(ll['composer'])) - print('album: '+str(ll['album'])) - print('label: '+str(ll['label'])) - print('year: '+str(ll['year'])) - print('client: '+str(ll['client'])) - print('agency: '+str(ll['agency'])) - print('conductor: '+str(ll['conductor'])) - print('userDefined: '+str(ll['userDefined'])) - print('usageCode: '+str(ll['usageCode'])) - print('enforceLength: '+str(ll['enforceLength'])) - print('forcedLength: '+str(ll['forcedLength'])) - print('evergreen: '+str(ll['evergreen'])) - print('source: '+str(ll['source'])) - print('timeType: '+str(ll['timeType'])) - print('startTime: '+str(ll['startTime'])) - print('transitionType: '+str(ll['transitionType'])) - print('cutQuantity: '+str(ll['cutQuantity'])) - print('lastCutPlayed: '+str(ll['lastCutPlayed'])) - print('markerComment: '+str(ll['markerComment'])) - print('markerLabel: '+str(ll['markerComment'])) - print('description: '+str(ll['description'])) - print('isrc: '+str(ll['isrc'])) - print('isci: '+str(ll['isci'])) - print('recordingMbId: '+str(ll['recordingMbId'])) - print('releaseMbId: '+str(ll['releaseMbId'])) - print('originUser: '+str(ll['originUser'])) - print('originDateTime: '+str(ll['originDateTime'])) - print('startPointCart: '+str(ll['startPointCart'])) - print('startPointLog: '+str(ll['startPointLog'])) - print('endPointCart: '+str(ll['endPointCart'])) - print('endPointLog: '+str(ll['endPointLog'])) - print('segueStartPointCart: '+str(ll['segueStartPointCart'])) - print('segueStartPointLog: '+str(ll['segueStartPointCart'])) - print('segueEndPointCart: '+str(ll['segueEndPointCart'])) - print('segueEndPointLog: '+str(ll['segueEndPointLog'])) - print('segueGain: '+str(ll['segueGain'])) - print('fadeupPointCart: '+str(ll['fadeupPointCart'])) - print('fadeupPointLog: '+str(ll['fadeupPointLog'])) - print('fadeupGain: '+str(ll['fadeupGain'])) - print('fadedownPointCart: '+str(ll['fadedownPointCart'])) - print('fadedownPointLog: '+str(ll['fadedownPointLog'])) - print('fadedownGain: '+str(ll['fadedownGain'])) - print('duckUpGain: '+str(ll['duckUpGain'])) - print('duckDownGain: '+str(ll['duckDownGain'])) - print('talkStartPoint: '+str(ll['talkStartPoint'])) - print('talkEndPoint: '+str(ll['talkEndPoint'])) - print('hookMode: '+str(ll['hookMode'])) - print('hookStartPoint: '+str(ll['hookStartPoint'])) - print('hookEndPoint: '+str(ll['hookEndPoint'])) - print('eventLength: '+str(ll['eventLength'])) - print('linkEventName: '+str(ll['linkEventName'])) - print('linkStartTime: '+str(ll['linkStartTime'])) - print('linkStartSlop: '+str(ll['linkStartSlop'])) - print('linkEndSlop: '+str(ll['linkEndSlop'])) - print('linkId: '+str(ll['linkId'])) - print('linkEmbedded: '+str(ll['linkEmbedded'])) - print('extStartTime: '+str(ll['extStartTime'])) - print('extLength: '+str(ll['extLength'])) - print('extCartName: '+str(ll['extCartName'])) - print('extData: '+str(ll['extData'])) - print('extEventId: '+str(ll['extEventId'])) - print('extAnncType: '+str(ll['extAnncType'])) + for key in ll.values(): + print(key+': '+str(ll.values()[key])) print('') - - -# print(': '+ll['']) diff --git a/apis/rivwebpyapi/tests/list_logs.py b/apis/rivwebpyapi/tests/list_logs.py index a9178468..271a6241 100755 --- a/apis/rivwebpyapi/tests/list_logs.py +++ b/apis/rivwebpyapi/tests/list_logs.py @@ -84,23 +84,9 @@ except rivwebpyapi.RivWebPyError as err: sys.exit(1) # -# Display the log list +# Display the list of logs # for log in logs: - print('name: '+log['name']) - print('serviceName: '+log['serviceName']) - print('description: '+log['description']) - print('originUserName: '+log['originUserName']) - print('originDatetime: '+str(log['originDatetime'])) - print('linkDatetime: '+str(log['linkDatetime'])) - print('modifiedDatetime: '+str(log['modifiedDatetime'])) - print('startDate: '+str(log['startDate'])) - print('endDate: '+str(log['endDate'])) - print('purgeDate: '+str(log['purgeDate'])) - print('scheduledTracks: '+str(log['scheduledTracks'])) - print('completedTracks: '+str(log['completedTracks'])) - print('musicLinks: '+str(log['musicLinks'])) - print('musicLinked: '+str(log['musicLinked'])) - print('trafficLinks: '+str(log['trafficLinks'])) - print('trafficLinked: '+str(log['trafficLinked'])) + for key in log.values(): + print(key+': '+str(log.values()[key])) print('')