commit 55f28889516425b9754b7e24e91a375cbbec0ea0 Author: Alex Date: Mon Oct 9 18:28:14 2023 +0300 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c3ebcfa --- /dev/null +++ b/.gitignore @@ -0,0 +1,30 @@ +# Игнорировать файлы с расширением .log и .tmp +*.log +*.tmp + +# Игнорировать директорию с именем temp +temp/ +.ruff_cache/ + +# Игнорировать файл config.ini +config.ini + +# Игнорировать все файлы в директории temp_folder +temp_folder/* + +# Игнорировать все файлы и поддиректории в директории logs +logs/* +.venv/ +keyroz.txt +.env +creds_service_acc.json +test.py +test1.py +notfiles.xlsx +__pycache__ +output.json +*.zip +*.db +# Игнорировать все файлы и директории, кроме файла important.txt и директории docs +!/requirements.txt +!/docs/ \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..16c7368 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +# Добавление с коментариев в товар вес продуктов! + +* :white_check_mark: Получаем у какого товара есть вес это в коментариях +* :white_check_mark: Получаем получаем товар в сделке +* :white_check_mark: Собираем в товары товар с Весом из коментариев! + +> Что нужно не забыть и нет в проекте! +> файл со всеми паролями и доступами + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..f22d20b --- /dev/null +++ b/requirements.txt @@ -0,0 +1,18 @@ +aiohttp==3.8.5 +aiosignal==1.3.1 +asttokens==2.4.0 +async-timeout==4.0.3 +attrs==23.1.0 +beartype==0.16.2 +charset-normalizer==3.3.0 +fast-bitrix24==1.5.16 +frozenlist==1.4.0 +icontract==2.6.4 +idna==3.4 +more-itertools==10.1.0 +multidict==6.0.4 +python-dotenv==1.0.0 +six==1.16.0 +tqdm==4.66.1 +typing_extensions==4.8.0 +yarl==1.9.2 diff --git a/tov.py b/tov.py new file mode 100644 index 0000000..28f1011 --- /dev/null +++ b/tov.py @@ -0,0 +1,100 @@ +from fast_bitrix24 import Bitrix +import re +from difflib import SequenceMatcher +from dotenv import load_dotenv +import os +load_dotenv() + + +B24 = os.getenv('BITRIX') + +# замените на ваш вебхук для доступа к Bitrix24 +webhook = B24 +b = Bitrix(webhook) + + + +idss = '35578' +deals = b.get_all( + 'crm.deal.list', + params={ + 'select': ['COMMENTS'], + 'filter': {'ID': idss} +}) + +# print(deals) +for d in deals: + com = d['COMMENTS'] + # print(com) + pattern = re.compile(r'Product - (.*?)\s*Additional info:', re.DOTALL) + pattern_kg = re.compile(r'\[\*\]кг: (.*?)\[/list\]', re.DOTALL) + + # Используем findall для поиска всех совпадений + matches_product = pattern.findall(com) + matches_kg = pattern_kg.findall(com) + + # Объединяем совпадения в одну строку + result = [f"{product} кг: {kg}" for product, kg in zip(matches_product, matches_kg)] + + # Выводим результат + tovar_name = [] + for item in result: + # print(item) + names = item + tovar_name.append(names) + print(tovar_name) + +tov = [] +tovar = b.get_all('crm.deal.productrows.get', params= {"ID": idss} ) +# print(tovar) +for t in tovar: + product_id = t['PRODUCT_ID'] + product_name = t['PRODUCT_NAME'] + price = t['PRICE'] + quan = t['QUANTITY'] + data = {'PRODUCT_ID': product_id, 'PRODUCT_NAME': product_name, + 'PRICE': price, 'QUANTITY': quan} + tov.append(data) +# print(tov) + +def similar(a, b): + return SequenceMatcher(None, a, b).ratio() + +threshold = 0.6 # Задайте порог схожести по вашему усмотрению + +similar_items = [] + +for product_info in tov: + found_similar = False + for product_name in tovar_name: + if similar(product_info['PRODUCT_NAME'], product_name) > threshold: + similar_items.append({'PRODUCT_ID': product_info['PRODUCT_ID'], + 'PRODUCT_NAME': f"{product_info['PRODUCT_NAME']} {product_name}", + 'PRICE': product_info['PRICE'], + 'QUANTITY': product_info['QUANTITY']}) + # Удалить найденный элемент из product_names + tovar_name.remove(product_name) + found_similar = True + break + + if not found_similar: + similar_items.append(product_info) + + +tovar_up = b.call( + "crm.deal.productrows.set", + + { + "ID": idss, + 'rows':similar_items + + } + ) + + + + + + + +