Api dadata ИНН

Запрос через Api с помощью ИНН реквизиты компании. Результат в буфер обмена
 avatar
user_2065311
python
a year ago
3.5 kB
12
Indexable
// write your code import requests
import pyperclip
import tkinter as tk
from tkinter import filedialog

# Функция для получения данных из файла
def get_data_from_file(file_path):
    with open(file_path, 'r') as file:
        return file.read().splitlines()

# Функция для получения данных из буфера обмена
def get_data_from_clipboard():
    return pyperclip.paste().splitlines()

# Функция для отправки запросов в DaData
def query_dadata(inns, token):
    url = "https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/party"
    headers = {
        "Authorization": "Token " + token,
        "Content-Type": "application/json"
    }
    results = []
    for inn in inns:
        response = requests.post(url, headers=headers, json={"query": inn})
        if response.status_code == 200:
            results.append(response.json())
        else:
            results.append({"error": "Request failed with status code " + str(response.status_code)})
    return results

# Функция для форматирования результатов в читаемый вид
def format_results(results):
    formatted_text = "ИНН | Наименование | КПП | ОГРН | Адрес | Статус | Дата регистрации | Руководитель\n"
    formatted_text += "--- | --- | --- | --- | --- | --- | --- | ---\n"
    for result in results:
        if 'suggestions' in result and result['suggestions']:
            suggestion = result['suggestions'][0]
            data = suggestion['data']
            inn = data.get('inn', '')
            name = data.get('name', {}).get('full_with_opf', '')
            kpp = data.get('kpp', '')
            ogrn = data.get('ogrn', '')
            address = data.get('address', {}).get('unrestricted_value', '')
            status = data.get('state', {}).get('status', '')
            registration_date = data.get('state', {}).get('registration_date', '')
            management_name = data.get('management', {}).get('name', '')
            formatted_text += f"{inn} | {name} | {kpp} | {ogrn} | {address} | {status} | {registration_date} | {management_name}\n"
        else:
            formatted_text += "Ошибка запроса или данные отсутствуют\n"
    return formatted_text

# Функция для сохранения результатов в буфер обмена
def save_results_to_clipboard(results):
    formatted_results = format_results(results)
    pyperclip.copy(formatted_results)

# Основная логика скрипта
def main():
    token = "тут вставляем ключ API"

    # Выбор источника данных
    data_source = input("Введите 'file' для выбора файла или 'clipboard' для использования буфера обмена: ")
    if data_source == 'file':
        root = tk.Tk()
        root.withdraw()
        file_path = filedialog.askopenfilename()
        inns = get_data_from_file(file_path)
    else:
        inns = get_data_from_clipboard()

    # Отправка запросов и получение результатов
    results = query_dadata(inns, token)

    # Сохранение результатов в буфер обмена
    save_results_to_clipboard(results)
    print("Результаты сохранены в буфер обмена.")

if __name__ == "__main__":
    main()
Editor is loading...