def sequence(sequence_identifier, time_base): ref_clock = None if time_base == 'clock': ref_clock = LocalMachineClock() elif time_base == 'media': ref_clock = MediaClock() elif time_base == 'smpte': raise NotImplementedError() sequence = EBUTT3DocumentSequence(sequence_identifier, ref_clock, 'en-GB', verbose=True) return sequence
def setUp(self): self.reference_clock = LocalMachineClock() self.sequence = EBUTT3DocumentSequence( sequence_identifier='sequenceTesting', reference_clock=self.reference_clock, lang='en-GB') self.document1 = self._create_document(1, 2) self.document2 = self._create_document(3, 4) self.document3 = self._create_document(5, 6)
def main(): create_loggers() parsed_args = parser.parse_args() do_export = False if parsed_args.folder_export: do_export = True reference_clock = LocalMachineClock() reference_clock.clock_mode = 'local' document_sequence = EBUTT3DocumentSequence( sequence_identifier='TestSequence1', lang='en-GB', reference_clock=reference_clock ) if parsed_args.reference_clock: subtitle_tokens = None # Instead of text we provide the availability time as content. else: # Let's read our example conversation full_text = get_example_data('simple_producer.txt') if do_export: subtitle_tokens = iter(tokenize_english_document(full_text)) else: # This makes the source cycle infinitely. subtitle_tokens = cycle(tokenize_english_document(full_text)) # This object is used as flexible binding to the carriage mechanism and twisted integrated as dependency injection prod_impl = None if do_export: prod_impl = FilesystemProducerImpl(parsed_args.folder_export) else: prod_impl = TwistedProducerImpl() simple_producer = SimpleProducer( node_id='simple-producer', carriage_impl=prod_impl, document_sequence=document_sequence, input_blocks=subtitle_tokens ) if do_export: prod_impl.resume_producing() else: factory = wsFactory(u"ws://127.0.0.1:9000") factory.protocol = StreamingServerProtocol factory.listen() # We are using a pull producer because it is the looping_task timer that triggers the production from the websocket # level. Every time the factory gets a pull signal from the timer it tells the producer to generate data. TwistedPullProducer( consumer=factory, custom_producer=prod_impl ) looping_task = task.LoopingCall(factory.pull) looping_task.start(2.0) reactor.run()
def main(): create_loggers() parsed_args = parser.parse_args() sequence_identifier = 'TestSequence1' do_export = False if parsed_args.folder_export: do_export = True reference_clock = LocalMachineClock() reference_clock.clock_mode = 'local' document_sequence = EBUTT3DocumentSequence( sequence_identifier=sequence_identifier, lang='en-GB', reference_clock=reference_clock ) if parsed_args.reference_clock: subtitle_tokens = None # Instead of text we provide the availability time as content. else: # Let's read our example conversation full_text = get_example_data('simple_producer.txt') if do_export: subtitle_tokens = iter(tokenize_english_document(full_text)) else: # This makes the source cycle infinitely. subtitle_tokens = cycle(tokenize_english_document(full_text)) # This object is used as flexible binding to the carriage mechanism and twisted integrated as dependency injection prod_impl = None if do_export: prod_impl = FilesystemProducerImpl(parsed_args.folder_export, reference_clock) else: prod_impl = WebsocketProducerCarriage() prod_impl.sequence_identifier = sequence_identifier simple_producer = SimpleProducer( node_id='simple-producer', producer_carriage=None, document_sequence=document_sequence, input_blocks=subtitle_tokens ) # Chaining a converter ProducerNodeCarriageAdapter( producer_carriage=prod_impl, producer_node=simple_producer ) if do_export: prod_impl.resume_producing() else: twisted_producer = TwistedWSPushProducer( custom_producer=prod_impl ) factory = BroadcastServerFactory( url=u"ws://127.0.0.1:9000", producer=twisted_producer ) factory.protocol = BroadcastServerProtocol factory.listen() # Here we schedule in the simple producer to create content responding to a periodic interval timer. looping_task = task.LoopingCall(simple_producer.process_document) looping_task.start(2.0) reactor.run()