Перезалил на новый домен
This commit is contained in:
commit
333fd3d5d3
|
@ -0,0 +1,30 @@
|
|||
# Игнорировать файлы с расширением .log и .tmp
|
||||
*.log
|
||||
*.tmp
|
||||
|
||||
# Игнорировать директорию с именем temp
|
||||
temp/
|
||||
|
||||
# Игнорировать файл 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
|
||||
data.json
|
||||
*.zip
|
||||
*.db
|
||||
# Игнорировать все файлы и директории, кроме файла important.txt и директории docs
|
||||
!/requirements.txt
|
||||
!/docs/
|
|
@ -0,0 +1,12 @@
|
|||
# Lugi получаем контакты с opencatr и заносим их в KeyCrm и создаём в воронке лид
|
||||
|
||||
* :white_check_mark: Проверяем каждых 10 минут новые записи в базе магазина понимаем что есть новые контакты через файл data.json
|
||||
* :white_check_mark: Проверяем есть ли такой контакт в KeyCrm если нет то создаём
|
||||
* :white_check_mark: Если создали контакт создаём лид в воронке с привязаным контактом в KeyCrm
|
||||
* :white_check_mark: Есть функция для проверки создания контакта
|
||||
|
||||
* :white_check_mark: Отчёты для ТГ когда падает сообщает! пофиксил что будет сообщать раз в минуту пока не стопнуть или поднять!
|
||||
|
||||
> Что нужно не забыть и нет в проекте!
|
||||
> файл со всеми паролями и доступами
|
||||
> data.json это для проверки контактов там все контактные данные файл на сервере!
|
|
@ -0,0 +1,269 @@
|
|||
import mysql.connector
|
||||
import requests
|
||||
import json
|
||||
import time
|
||||
from dotenv import load_dotenv
|
||||
import os
|
||||
|
||||
# Загрузка переменных окружения из файла .env
|
||||
load_dotenv()
|
||||
|
||||
# Получение значений переменных окружения
|
||||
db_host = os.getenv('DB_HOST')
|
||||
db_user = os.getenv('USERS')
|
||||
db_password = os.getenv('PASSW')
|
||||
db_name = os.getenv('DATABASE')
|
||||
api_key = os.getenv('TGAPI_KEY')
|
||||
chat = os.getenv('TGCHAT_ID')
|
||||
token_key =os.getenv('KEYCRM_API')
|
||||
|
||||
|
||||
# Подключение к базе данных
|
||||
# Подключение к базе данных
|
||||
db = mysql.connector.connect(
|
||||
host= db_host,
|
||||
user= db_user,
|
||||
password= db_password,
|
||||
database= db_name
|
||||
)
|
||||
|
||||
# Путь к файлу JSON
|
||||
file_path = './data.json'
|
||||
|
||||
|
||||
|
||||
# Функция для загрузки данных из JSON файла
|
||||
def load_data_from_json(file_path):
|
||||
try:
|
||||
with open(file_path, 'r') as file:
|
||||
data = json.load(file)
|
||||
return data
|
||||
except FileNotFoundError:
|
||||
return []
|
||||
|
||||
# Функция для сохранения данных в JSON файл
|
||||
def save_data_to_json(file_path, data):
|
||||
# Сохраняем данные в файл JSON
|
||||
with open(file_path, 'w', encoding='utf-8') as file:
|
||||
json.dump(data, file, ensure_ascii=False, indent=4)
|
||||
|
||||
# Функция для проверки наличия элемента в списке
|
||||
def is_item_in_list(item, item_list):
|
||||
for existing_item in item_list:
|
||||
if existing_item == item:
|
||||
return True
|
||||
return False
|
||||
|
||||
# Функция создания нового пользователя в key_crm
|
||||
def new_customer(full_name, groops, email, phone):
|
||||
headers = {
|
||||
'accept': 'application/json',
|
||||
'Authorization': f'Bearer {token_key}',
|
||||
'Content-Type': 'application/json',
|
||||
}
|
||||
|
||||
json_data = {
|
||||
'full_name': full_name,
|
||||
'email': [
|
||||
email
|
||||
|
||||
],
|
||||
'phone': [
|
||||
|
||||
phone
|
||||
],
|
||||
# 'note': 'Примітка',
|
||||
# 'company_id': 112,
|
||||
'manager_id': 4,
|
||||
# 'shipping': [
|
||||
# {
|
||||
# 'address': 'string',
|
||||
# 'additional_address': 'string',
|
||||
# 'city': 'Kyiv',
|
||||
# 'region': 'Kyivska',
|
||||
# 'zip_code': '50000',
|
||||
# 'country': 'Ukraine',
|
||||
# 'recipient_full_name': 'Ann Doe',
|
||||
# 'recipient_phone': '+1 555-234-7777',
|
||||
# 'warehouse_ref': '1ec09d2e-e1c2-11e3-8c4a-0050568002cf',
|
||||
# },
|
||||
# ],
|
||||
'custom_fields': [
|
||||
{
|
||||
'uuid': 'CT_1007',
|
||||
'value': groops,
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
response = requests.post('https://openapi.keycrm.app/v1/buyer', headers=headers, json=json_data)
|
||||
otv = (response.json())
|
||||
ids_con = otv['id']
|
||||
print(ids_con)
|
||||
return ids_con
|
||||
|
||||
|
||||
|
||||
# Функция создания новой карты в key_crm
|
||||
def new_voronka(ids, full_name, groops, email, phone, ids_cust):
|
||||
headers = {
|
||||
'accept': 'application/json',
|
||||
'Authorization': f'Bearer {token_key}',
|
||||
}
|
||||
|
||||
|
||||
json_data = {
|
||||
'title': f'Новий клиент с Lugi.com.ua с {ids}',
|
||||
'source_id': 3,
|
||||
'manager_comment': f'Гурт: {groops}',
|
||||
'manager_id': 4,
|
||||
'pipeline_id': 1,
|
||||
'contact': {
|
||||
'full_name': full_name,
|
||||
'email': email,
|
||||
'phone': phone,
|
||||
'client_id': ids_cust,
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
response = requests.post('https://openapi.keycrm.app/v1/pipelines/cards', headers=headers, json=json_data)
|
||||
|
||||
print(response.json())
|
||||
|
||||
def prov(email):
|
||||
headers = {
|
||||
'accept': 'application/json',
|
||||
'Authorization': f'Bearer {token_key}',
|
||||
}
|
||||
|
||||
params = {
|
||||
'limit': '15',
|
||||
'page': '1',
|
||||
'include': 'custom_fields',
|
||||
'filter[buyer_email]': email,
|
||||
}
|
||||
|
||||
response = requests.get('https://openapi.keycrm.app/v1/buyer', params=params, headers=headers)
|
||||
dt = response.json()
|
||||
return dt['data']
|
||||
|
||||
|
||||
|
||||
def con():
|
||||
cursor = db.cursor()
|
||||
query = "SELECT * FROM oc_customer"
|
||||
cursor.execute(query)
|
||||
rows = cursor.fetchall()
|
||||
for row in rows:
|
||||
# if row[1] == target_model:
|
||||
ids = row[0]
|
||||
groop = row[1]
|
||||
firstname = row[4]
|
||||
lastname = row[5]
|
||||
email = row[6]
|
||||
phone = row[7]
|
||||
|
||||
# Загрузка данных из файла (если файл существует)
|
||||
data = load_data_from_json(file_path)
|
||||
new_item = {'id': ids, 'groop': groop, 'firstname': firstname, 'lastname': lastname, 'email': email, 'phone': phone}
|
||||
if not is_item_in_list(new_item, data):
|
||||
data.append(new_item)
|
||||
save_data_to_json(file_path, data)
|
||||
print(f"Элемент {new_item} успешно добавлен.")
|
||||
if prov(email) == []:
|
||||
print(f'{ids} {phone} {groop} {email} {lastname}')
|
||||
if groop == 2:
|
||||
groops = 'Гуртовий'
|
||||
elif groop == 3:
|
||||
groops = 'Дропшипер'
|
||||
elif groop == 4:
|
||||
groops = 'Крупно гуртовий'
|
||||
else:
|
||||
groops = ''
|
||||
full_name = f'{firstname} {lastname}'
|
||||
ids_cust = new_customer(full_name, groops, email, phone)
|
||||
new_voronka(ids, full_name, groops, email, phone, ids_cust)
|
||||
|
||||
else:
|
||||
print('YES')
|
||||
|
||||
else:
|
||||
print(f"Элемент {new_item} уже существует в данных.")
|
||||
|
||||
# print(f'{ids} {phone} {groop} {email} {lastname}')
|
||||
# if prov(email) == []:
|
||||
# print(f'{ids} {phone} {groop} {email} {lastname}')
|
||||
# else:
|
||||
# print('YES')
|
||||
"""
|
||||
Groop
|
||||
OC 2 mopt key_crm [{'id': 7, 'uuid': 'CT_1007', 'name': 'Тип покупця', 'type': 'select', 'value': ['Гуртовий']}]}
|
||||
OC 3 dprop key_crm[{'id': 7, 'uuid': 'CT_1007', 'name': 'Тип покупця', 'type': 'select', 'value': ['Дропшипер']}]
|
||||
OC 4 kopt key_crm [{'id': 7, 'uuid': 'CT_1007', 'name': 'Тип покупця', 'type': 'select', 'value': ['Крупно гуртовий']}]}"""
|
||||
|
||||
|
||||
def new_customer1():
|
||||
headers = {
|
||||
'accept': 'application/json',
|
||||
'Authorization': f'Bearer {token_key}',
|
||||
'Content-Type': 'application/json',
|
||||
}
|
||||
|
||||
json_data = {
|
||||
'full_name': "aa aa",
|
||||
'email': [
|
||||
'tesn@jj.com'
|
||||
|
||||
],
|
||||
'phone': [
|
||||
|
||||
'0668561234'
|
||||
],
|
||||
# 'note': 'Примітка',
|
||||
# 'company_id': 112,
|
||||
'manager_id': 4,
|
||||
# 'shipping': [
|
||||
# {
|
||||
# 'address': 'string',
|
||||
# 'additional_address': 'string',
|
||||
# 'city': 'Kyiv',
|
||||
# 'region': 'Kyivska',
|
||||
# 'zip_code': '50000',
|
||||
# 'country': 'Ukraine',
|
||||
# 'recipient_full_name': 'Ann Doe',
|
||||
# 'recipient_phone': '+1 555-234-7777',
|
||||
# 'warehouse_ref': '1ec09d2e-e1c2-11e3-8c4a-0050568002cf',
|
||||
# },
|
||||
# ],
|
||||
'custom_fields': [
|
||||
{
|
||||
'uuid': 'CT_1007',
|
||||
'value': 'Дропшипер',
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
response = requests.post('https://openapi.keycrm.app/v1/buyer', headers=headers, json=json_data)
|
||||
otv = (response.json())
|
||||
ids_con = otv['id']
|
||||
print(ids_con)
|
||||
|
||||
if __name__ == '__main__':
|
||||
# a = requests.get('https://api.telegram.org/bot{}/sendMessage'.format(api_key), params=dict(
|
||||
# chat_id=chat,
|
||||
# text= '=> 🤙 Обмен Keycrm and opencart контактов работает)' ))
|
||||
|
||||
# print(a)
|
||||
while True:
|
||||
try:
|
||||
con() # Вызываем вашу функцию
|
||||
print('Pause')
|
||||
time.sleep(600)
|
||||
except Exception:
|
||||
print("ERROR")
|
||||
a = requests.get('https://api.telegram.org/bot{}/sendMessage'.format(api_key), params=dict(
|
||||
chat_id=chat,
|
||||
text= '=> Народ 🥺 упал обмен с контактами не забудь поднять' ))
|
||||
time.sleep(60)
|
||||
print(a)
|
|
@ -0,0 +1,8 @@
|
|||
certifi==2023.7.22
|
||||
charset-normalizer==3.3.0
|
||||
idna==3.4
|
||||
mysql-connector-python==8.1.0
|
||||
protobuf==4.21.12
|
||||
python-dotenv==1.0.0
|
||||
requests==2.31.0
|
||||
urllib3==2.0.5
|
Loading…
Reference in New Issue