import os from dotenv import load_dotenv from kontur_focus.req import Request from datetime import datetime class Focus(Request): _basedir = os.path.abspath(os.path.dirname(__file__)) def __init__(self, inn: str, ogrn: str = None): load_dotenv() super().__init__( base_url=os.environ.get('FOCUS_BASE_URL'), access_key=os.environ.get('FOCUS_ACCESS_KEY'), inn=inn, ogrn=ogrn ) def base_info(self): """Выгрузка базовых реквизитов Российских юридических лиц и индивидуальных предпринимателей :return: Информация о ЮЛ :rtype: str """ return self.get(path='/req') def advanced_info(self): """Расширенные сведения на основе ЕГРЮЛ/ЕГРИП :return: Информация о ЮЛ :rtype: str """ return self.get('/egrDetails') def excerpt(self, path: str = None) -> dict: """Выписка из ЕГРЮЛ/ЕГРИП :param path: Путь выгрузки файла. Если не указан, выгружается в текущий каталог. :type path: str, необязательный :return: Результат, имя файла и путь выгрузки :rtype: str """ response = self.get('/excerpt') current_datetime = datetime.now().strftime('%d-%m-%Y_%H-%M') filename = f'Выписка_{self.inn}_{current_datetime}.pdf' if not path: file_path = os.path.join(self._basedir, filename) else: file_path = os.path.join(path, filename) try: with open(file_path, mode='wb') as file: file.write(response.content) return {'success': True, 'filename': filename, 'path': file_path} except Exception as e: return {'success': False, 'message': e} def express_report(self, pdf: bool = True, path: str = None) -> dict: """Экспресс-отчет по контрагенту :param pdf: Выгрузить PDF файл, по-умолчанию True :type pdf: bool, optional :param path: Путь выгрузки файла. Если не указан, выгружается в текущий каталог. :type path: str, optional :return: _description_ :rtype: _type_ """ response = self.get('/briefReport', pdf=pdf) current_datetime = datetime.now().strftime('%d-%m-%Y_%H-%M') filename = f'Экспресс-отчет_{self.inn}_{current_datetime}.pdf' if pdf: if not path: file_path = os.path.join(self._basedir, filename) else: file_path = os.path.join(path, filename) try: with open(file_path, mode='wb') as file: file.write(response.content) return {'success': True, 'filename': filename, 'path': file_path} except Exception as e: return {'success': False, 'message': e} else: return response def finan(self, path: str = None): """В файле указана рейтинговая таблица и окончательное заключение о финансовых показателях компании. :param path: Путь выгрузки файла. Если не указан, выгружается в текущий каталог, defaults to None :type path: str, optional """ response = self.get('/finan') current_datetime = datetime.now().strftime('%d-%m-%Y_%H-%M') filename = f'Финансовый_анализ_{self.inn}_{current_datetime}.pdf' if not path: file_path = os.path.join(self._basedir, filename) else: file_path = os.path.join(path, filename) try: with open(file_path, mode='wb') as file: file.write(response.content) return {'success': True, 'filename': filename, 'path': file_path} except Exception as e: return {'success': False, 'message': e} def founders_history(self): """История владения организацией :return: Набор полей с информацией об изменениях :rtype: str """ return self.get('/foundersHistory') def foreign_representatives(self): """Иностранные представительства и филиалы :return: Набор данных о представительствах :rtype: str """ return self.get('/foreignRepresentatives') def government_lists(self): # DEPRECATED """Вхождение организации в государственные реестры :return: Список реестров :rtype: _type_ """ response = self.get('/analyticLists') return response['listsEntries'] def is_foreign_agent(self): # DEPRECATED """Проверка наличия организации в Едином реестре иностранных агентов :return: Результат проверки :rtype: bool """ foreign_agents_list = next(lst for lst in self.government_lists() if lst['id'] == 'fcfc856d-89f8-408b-afef-56750cb90fed') return foreign_agents_list['isInList']