first commit

This commit is contained in:
Alex 2023-10-09 18:28:14 +03:00
commit 55f2888951
4 changed files with 157 additions and 0 deletions

30
.gitignore vendored Normal file
View File

@ -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/

9
README.md Normal file
View File

@ -0,0 +1,9 @@
# Добавление с коментариев в товар вес продуктов!
* :white_check_mark: Получаем у какого товара есть вес это в коментариях
* :white_check_mark: Получаем получаем товар в сделке
* :white_check_mark: Собираем в товары товар с Весом из коментариев!
> Что нужно не забыть и нет в проекте!
> файл со всеми паролями и доступами

18
requirements.txt Normal file
View File

@ -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

100
tov.py Normal file
View File

@ -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
}
)