Beispiel #1
0
def check(name, query):
    dadata = Dadata(token, secret)  # Данные для авторизации в сервисе DaData
    infoCompany = dadata.find_by_id(name, query)  # Поиск информации о компании
    if infoCompany[0]['data']['type'] == 'LEGAL':
        print(infoCompany[0]['data']['name']['full'])  # Названия компании
        print(infoCompany[0]['data']['type'])  # Тип компании
        print(infoCompany[0]['data']['opf']['full'])  # Полный префикс компании
        print(infoCompany[0]['data']['opf']
              ['short'])  # Короткий префикс компании
        print(infoCompany[0]['data']['address']['data']
              ['region_type_full'])  # Тип региона
        print(infoCompany[0]['data']['address']['data']
              ['region'])  # Название региона
        print(infoCompany[0]['data']['address']['data']
              ['city_type'])  # Название города
        print(infoCompany[0]['data']['address']['data']
              ['city'])  # Название города
        print(infoCompany[0]['data']['address']['data']
              ['street_type_full'])  # Тип улица/проспект
        print(infoCompany[0]['data']['address']['data']
              ['street'])  # Название улицы
        print(infoCompany[0]['data']['address']['data']
              ['house_type_full'])  # Тип улица/проспект
        print(infoCompany[0]['data']['address']['data']
              ['house'])  # Название улицы
    else:
        print(infoCompany[0]['data']['name']['full'])  # Названия компании
        print(infoCompany[0]['data']['type'])  # Тип компании
        print(infoCompany[0]['data']['opf']['full'])  # Полный префикс компании
        print(infoCompany[0]['data']['opf']
              ['short'])  # Короткий префикс компании
        print(infoCompany[0]['data']['address']['data']
              ['region_type_full'])  # Тип региона
        print(infoCompany[0]['data']['address']['data']
              ['region'])  # Название региона
Beispiel #2
0
def get_dadata(inn, request):
    dadata = Dadata(token)
    result = dadata.suggest("party", inn, count=20)

    if len(result) == 0:
        res = "Проверьте ИНН. ИНН не найден в базе"
        response_status = status.HTTP_404_NOT_FOUND
    else:
        res = [{
            'desc': '{}, {}. {}, {}'.format(
                r['data']['inn'],
                r['data']['address']['data']['city_type'],
                r['data']['address']['data']['city'],
                r['value']),
            'inn': r['data']['inn'],
            'kpp': r['data'].get('kpp', None),
            'ogrn': r['data']['ogrn'],
            'phone': r['data']['phones'],
            'email': r['data']['emails'],
            'full_name': r['data']['name']['full'],
            'type_customer': r['data']['opf']['short'],
            'head': r['data']['management']['post'] if r['data'].get('management') else r['data']['opf']['full'],
            'head_name': get_name(r['data'])['name'],
            'head_surname': get_name(r['data'])['surname'],
            'head_lastname': get_name(r['data'])['lastname'],
            'legal_address': r['data']['address']['value']
        } for r in result]
        response_status = status.HTTP_200_OK
    return Response(res, status=response_status)
Beispiel #3
0
 def __call__(self, query: str, token=settings.DADATA_API_TOKEN):
     self._token = token
     self.ddata = Dadata(token=self._token)
     self.query = query
     response = self._get_request()
     data = self._parse_response(response)
     return data
Beispiel #4
0
 def get_address_code(cls, address):
     token = settings.DADATA_TOKEN
     secret = settings.DADATA_SECRET_KEY
     dadata = Dadata(token, secret)
     data = dadata.clean("address", address)
     result = (data.get('geo_lat'), data.get('geo_lon'))
     return result
def get_geo_from_dadata():
    api_key = "Тут секретный API ключ"
    secret_key = "Тут секретный ключ"

    dadata = Dadata(api_key, secret_key)

    counter, good, error = 0, 0, 0
    file_path = 'address.txt'

    with open(file_path, 'r') as file:

        for row in file:
            print('-' * 50)
            print(f'№ {counter}')
            print('address = ', row)
            try:
                result = dadata.clean(name="address",
                                      source="москва сухонская 11")
                print('lat = ', result['geo_lat'])
                print('lng = ', result['geo_lon'])
                good += 1
            except Exception as e:
                error += 1
                print('Не распознан')

            counter += 1

    print('===== Результат =====')
    print(
        f'Всего записей = {counter} \n Распознано = {good} \n Не распознано {error}'
    )

    dadata.close()
def get_coords_dadata(address: str, region_code: int) -> str:
    """
    принимает address
    получает lon, lat из API Dadata
    выдаёт строку с координатами
    """
    try:
        result = Dadata(DA_API, DA_SC).suggest("address", address,
                                               locations=[{"kladr_id": region_code}]
                                               )
        if result[0]['data']['geo_lon'] is None:
            result = Dadata(DA_API, DA_SC).suggest('address', address[:address.rfind(',')],
                                                   locations=[{"kladr_id": region_code}]
                                                   )
        return f",{result[0]['data']['geo_lon']},{result[0]['data']['geo_lat']}"
    except IndexError:
        return ',None,None'
Beispiel #7
0
def get_dadata_suggest(address):
    dadata = Dadata(settings.DADATA_APIKEY, settings.DADATA_SECRET)

    try:
        return dadata.suggest(name='address', query=address)
    except Exception as e:
        log.error('Dadata request exception ' + str(e))
        return None
Beispiel #8
0
def get_organization_by_inn(inn, request):
    dadata = Dadata(token)
    result = dadata.suggest("party", inn)
    url = "https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/party"
    headers = {
        "Content-Type": "application/json",
        "Accept": "application/json",
        "Authorization": "Token {}".format(token)
    }
    data = {"query": inn}
    r = requests.post(url, headers=headers, json=data)
    try:
        res = r.json()['suggestions'][0]['data']
        try:
            type_customer = TypeOrganisation.objects.get(name=res['opf']['full'])
        except TypeOrganisation.DoesNotExist:
            type_customer = TypeOrganisation.objects.create(name=res['opf']['full'])

        if res['type'] == 'LEGAL':
            head_name = res['management']['name'].split()
            data = {
                'full_name': res['name']['short_with_opf'],
                'head': res['management']['post'],
                'head_name': head_name[1],
                'head_surname': head_name[2],
                'head_last_name': head_name[0],
                'kpp': res['kpp'],
                'ogrn': res['ogrn'],
                'inn': res['inn'],
                'address': res['address']['unrestricted_value'],
                'type_customer': TypeCustomerSer(type_customer, context={'request': request}).data
                # {"id":type_customer.pk,"name":type_customer.name}
            }
        elif res['type'] == 'INDIVIDUAL':
            head_name = res['name']['full'].split()
            data = {
                'full_name': res['name']['short_with_opf'],
                'head': res['opf']['full'],
                'head_name': head_name[1],
                'head_surname': head_name[2],
                'head_last_name': head_name[0],
                'kpp': '',
                'ogrn': res['ogrn'],
                'inn': res['inn'],
                'address': res['address']['unrestricted_value'],
                'type_customer': TypeCustomerSer(type_customer, context={'request': request}).data
            }
        else:
            raise Exception("Не известная форма собственности: {}".format(res['type']))
        response_status = status.HTTP_200_OK
        data['len'] = len(r.json()['suggestions'])
    except IndexError:
        data = "Проверьте ИНН. ИНН не найден в базе"
        response_status = status.HTTP_404_NOT_FOUND

    return Response(data, status=response_status)
Beispiel #9
0
 def update_currency():
     keys = {}
     r = requests.get(f'https://api.exchangeratesapi.io/latest?')
     currency_codes = json.loads(r.content)['rates']
     for record in currency_codes:
         with Dadata(DADATA_TOKEN, DADATA_SECRET) as dadata:
             result = dadata.find_by_id("currency", record)
             if result != []:
                 _ = result[0]['value'].lower()
         keys[_] = record
     return keys
Beispiel #10
0
    def __dadata_address_shop(self, address):
        token = "5c9f229cb333ab8a4dde5de28588d4d0a9aff404"
        secret = "14b621d1269cac31c29384eb76f318ac6d30ae9a"
        dadata = Dadata(token, secret)

        def check_address(address):
            res = dadata.suggest(name="address", query=address, count=1)
            try:
                return f"{res[0]['data']['city']} {res[0]['data']['street']} "  # {res[0]['data']['house']}"
            except IndexError:
                return f'bad {address}'

        address = check_address(address)
        return address
Beispiel #11
0
def get_dadata_bank(bank, request):
    dadata = Dadata(token)
    result = dadata.suggest("bank", bank)
    if len(result) == 0:
        res = "Проверьте реквизиты банка. Банк не найден в базе"
        response_status = status.HTTP_404_NOT_FOUND
    else:
        res = [{
            'desc': "{}, БИК {}, ИНН {}".format(r['value'], r['data']['bic'], r['data']['inn']),
            'name': r['value'],
            'bic': r['data']['bic'],
            'inn': r['data']['inn'],
            'kpp': r['data']['kpp'],
            'correspondent_account': r['data']['correspondent_account']
        } for r in result]
        response_status = status.HTTP_200_OK
    return Response(res, status=response_status)
    def __init__(self, logger = None, env='local'):
        self.env = env
        if logger is None:
            self.logger = logging.getLogger("LegalEntitiesValidator")
            self.logger.setLevel(logging.DEBUG)
            handler = RotatingFileHandler("legal_entities_validator.log", mode='a', encoding='utf-8', backupCount=5,
                                          maxBytes=1 * 1024 * 1024)
            formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
            handler.setFormatter(formatter)
            self.logger.addHandler(handler)
        else:
            self.logger = logger

        self.dblocal = mysqltool.mysqlTool(self.logger, config.DB_USER, config.DB_PASSWORD,
                                           config.DB_HOST, config.DB_PORT, config.DB_DATABASE)

        self.dadata = Dadata(config.DADATA_TOKEN)
Beispiel #13
0
                base['okved'][i] = "пусто"
            elif len(result) == 1:
                base['same'][i] = "одна компания"
                base['okved'][i] = result[0]['data']['okved']
            else:
                base['same'][i] = "много подобных компаний"
                base['okved'][i] = result[0]['data']['okved']

    base = pd.merge(base,
                    okved,
                    how='left',
                    left_on='okved',
                    right_on='Новый код ОКВЭД')
    base.drop(['Новый код ОКВЭД'], inplace=True, axis=1)
    base.to_excel(f'new_{file}', index=False)


def main():
    for file in os.listdir():
        parse(file)


if __name__ == '__main__':
    from token_holder import *
    import os
    dadata = Dadata(token)
    okved = pd.read_excel('new_okved.xlsx')
    directory = input('Папка с файлами: ')
    os.chdir(directory)
    main()
Beispiel #14
0
from tqdm import tqdm
from json import dump, dumps, load, loads

data = {}
current_date_and_time = format_time('%Y-%m-%d-%H-%M-%S')
data_file = f'{current_date_and_time}.json'


file_dir = path.dirname(path.realpath(__file__))
data_dir = f'{file_dir}/data'
assert path.isdir(data_dir), 'Data directory is absent'

config = ConfigParser()
config.read('config.ini')
token = config['CREDENTIALS']['token']
search = Dadata(token)

with open('tax_numbers.txt', 'r') as file:
    tax_numbers_list = file.read().split('\n')

for item in tqdm(tax_numbers_list):
    # find_by_id returns a list
    response = search.find_by_id("party", str(item))
    print(response)
    data.update({f'{item}': response})

print(data)

with open(f'{data_dir}/{data_file}', 'w') as json_file:
    dump(data, json_file)
Beispiel #15
0
 def get_suggestions(cls, address):
     token = settings.DADATA_TOKEN
     dadata = Dadata(token)
     return dadata.suggest('address', address)
Beispiel #16
0
def check_remain() -> int:
    """проверка сколько осталось запросов"""
    return 10_000 - Dadata(DA_API, DA_SC).get_daily_stats()['services']['suggestions']
 def __init__(self, dadata_api_key=None):
     if dadata_api_key is None:
         dadata_api_key = environ.get('DADATA_API_KEY')
     self.dadata = Dadata(dadata_api_key)
Beispiel #18
0
 def __init__(self):
     self.dadata = Dadata(DADATA_TOKEN)
Beispiel #19
0
 def __init__(self, query, token=settings.DADATA_API_TOKEN):
     self._token = token
     self.ddata = Dadata(token=self._token)
     self.query = query
def get_gender(full_name):
    token = "f1f65baffababb3c9a5f1f89303aa95b671a10a3"
    secret = "0123b896ae0502c432e990444e0dd1a8b4eb8923"
    dadata = Dadata(token, secret)
    result = dadata.clean("name", full_name)
    return result['gender']
Beispiel #21
0
from dadata import Dadata
import app_config
import sys

a = str(sys.argv[1])
t = app_config.address_api_key

dadata = Dadata(t)

result = dadata.suggest("address", a)
resp = str(result).replace("'", '"').replace("None", "null")
print(resp)