|
23 | 23 | notify = sdnotify.SystemdNotifier() |
24 | 24 |
|
25 | 25 |
|
| 26 | +def inputs_from_event(event): |
| 27 | + ''' Parse inputs from event attachment |
| 28 | + ''' |
| 29 | + |
| 30 | + inputs = [] |
| 31 | + for attachment in event.get_data().get('attach'): |
| 32 | + data = attachment.get('data') |
| 33 | + if (attachment.get('x-apple-filename') == |
| 34 | + 'org.opencastproject.capture.agent.properties'): |
| 35 | + for prop in data.split('\n'): |
| 36 | + if prop.startswith('capture.device.names'): |
| 37 | + param = prop.split('=', 1) |
| 38 | + inputs = param[1].split(',') |
| 39 | + break |
| 40 | + return inputs |
| 41 | + |
| 42 | + |
| 43 | +def is_track_selected(event, flavor): |
| 44 | + ''' If inputs are configured, check if track was selected |
| 45 | + ''' |
| 46 | + |
| 47 | + # inputs not configured -> add all |
| 48 | + inputs_conf = config('agent', 'inputs') |
| 49 | + if not inputs_conf: |
| 50 | + logger.info('No inputs in config') |
| 51 | + return True |
| 52 | + |
| 53 | + # Get inputs from event attachment |
| 54 | + inputs_event = inputs_from_event(event) |
| 55 | + |
| 56 | + # inputs not in attachment -> add all |
| 57 | + if not inputs_event: |
| 58 | + logger.info('No inputs in schedule') |
| 59 | + return True |
| 60 | + |
| 61 | + # input is selected |
| 62 | + if flavor in inputs_event: |
| 63 | + return True |
| 64 | + |
| 65 | + # input is not selected |
| 66 | + return False |
| 67 | + |
| 68 | + |
26 | 69 | def get_config_params(properties): |
27 | 70 | '''Extract the set of configuration parameters from the properties attached |
28 | 71 | to the schedule |
@@ -87,12 +130,15 @@ def ingest(event): |
87 | 130 |
|
88 | 131 | # add track |
89 | 132 | for (flavor, track) in event.get_tracks(): |
90 | | - logger.info('Adding track (%s -> %s)', flavor, track) |
91 | | - track = track.encode('ascii', 'ignore') |
92 | | - fields = [('mediaPackage', mediapackage), ('flavor', flavor), |
93 | | - ('BODY1', (pycurl.FORM_FILE, track))] |
94 | | - mediapackage = http_request(service_url + '/addTrack', fields, |
95 | | - timeout=0) |
| 133 | + if is_track_selected(event, flavor): |
| 134 | + logger.info('Adding track (%s -> %s)', flavor, track) |
| 135 | + track = track.encode('ascii', 'ignore') |
| 136 | + fields = [('mediaPackage', mediapackage), ('flavor', flavor), |
| 137 | + ('BODY1', (pycurl.FORM_FILE, track))] |
| 138 | + mediapackage = http_request(service_url + '/addTrack', fields, |
| 139 | + timeout=0) |
| 140 | + else: |
| 141 | + logger.info('Not adding track (%s -> %s)', flavor, track) |
96 | 142 |
|
97 | 143 | # ingest |
98 | 144 | logger.info('Ingest recording') |
|
0 commit comments