Spaces:
Sleeping
Sleeping
| import logging | |
| from obsei.analyzer.base_analyzer import BaseAnalyzer, BaseAnalyzerConfig | |
| from obsei.configuration import ObseiConfiguration | |
| from obsei.sink.base_sink import BaseSink, BaseSinkConfig | |
| from obsei.source.base_source import BaseSourceConfig, BaseSource | |
| logger = logging.getLogger(__name__) | |
| # Extract config via yaml file using `config_path` and `config_filename` | |
| obsei_configuration = ObseiConfiguration() | |
| # Initialize objects using configuration | |
| source_config: BaseSourceConfig = obsei_configuration.initialize_instance("source_config") | |
| source: BaseSource = obsei_configuration.initialize_instance("source") | |
| analyzer: BaseAnalyzer = obsei_configuration.initialize_instance("analyzer") | |
| analyzer_config: BaseAnalyzerConfig = obsei_configuration.initialize_instance("analyzer_config") | |
| sink_config: BaseSinkConfig = obsei_configuration.initialize_instance("sink_config") | |
| sink: BaseSink = obsei_configuration.initialize_instance("sink") | |
| # This will fetch information from configured source ie twitter, app store etc | |
| source_response_list = source.lookup(source_config) | |
| for idx, source_response in enumerate(source_response_list): | |
| logger.info(f"source_response#'{idx}'='{vars(source_response)}'") | |
| # This will execute analyzer (Sentiment, classification etc) on source data with provided analyzer_config | |
| # Analyzer will it's output to `segmented_data` inside `analyzer_response` | |
| analyzer_response_list = analyzer.analyze_input( | |
| source_response_list=source_response_list, | |
| analyzer_config=analyzer_config | |
| ) | |
| for idx, analyzer_response in enumerate(analyzer_response_list): | |
| logger.info(f"source_response#'{idx}'='{vars(analyzer_response)}'") | |
| # This will send analyzed output to configure sink ie Slack, Zendesk etc | |
| sink_response_list = sink.send_data(analyzer_response_list, sink_config) | |
| for idx, sink_response in enumerate(sink_response_list): | |
| logger.info(f"source_response#'{idx}'='{vars(sink_response)}'") | |