18.04
This commit is contained in:
parent
9273fd7e9a
commit
4d44da4ecf
Binary file not shown.
Binary file not shown.
11
API/rok.py
11
API/rok.py
|
|
@ -4,6 +4,7 @@ load_dotenv()
|
||||||
import sqlite3
|
import sqlite3
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
|
||||||
conn = sqlite3.connect("./files/rokky.db")
|
conn = sqlite3.connect("./files/rokky.db")
|
||||||
partner = os.getenv('partner')
|
partner = os.getenv('partner')
|
||||||
user_name = os.getenv('userName')
|
user_name = os.getenv('userName')
|
||||||
|
|
@ -25,14 +26,15 @@ json_data = {
|
||||||
def tokens():
|
def tokens():
|
||||||
response = requests.post('https://partner.rokky.com/api/v1/tokens', headers=headers, json=json_data)
|
response = requests.post('https://partner.rokky.com/api/v1/tokens', headers=headers, json=json_data)
|
||||||
|
|
||||||
# print(response.json())
|
print(response.json())
|
||||||
data = response.json()
|
data = response.json()
|
||||||
access_token = data["accessToken"]
|
access_token = data["accessToken"]
|
||||||
return access_token
|
return access_token
|
||||||
|
|
||||||
access_token = tokens()
|
# access_token = tokens()
|
||||||
|
|
||||||
def get_orders(access_token, page=1, page_size=25):
|
def get_orders(page=1, page_size=25):
|
||||||
|
access_token = tokens()
|
||||||
url = f"{BASE_URL}/orders"
|
url = f"{BASE_URL}/orders"
|
||||||
|
|
||||||
headers = {
|
headers = {
|
||||||
|
|
@ -82,6 +84,7 @@ def download_prices():
|
||||||
|
|
||||||
def create_order(sku, unit_price, partner_order_id):
|
def create_order(sku, unit_price, partner_order_id):
|
||||||
# try:
|
# try:
|
||||||
|
access_token = tokens()
|
||||||
conn = sqlite3.connect("./files/rokky.db")
|
conn = sqlite3.connect("./files/rokky.db")
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
url = f"{BASE_URL}/orders"
|
url = f"{BASE_URL}/orders"
|
||||||
|
|
@ -142,6 +145,7 @@ def create_order(sku, unit_price, partner_order_id):
|
||||||
# return response.json()
|
# return response.json()
|
||||||
|
|
||||||
def get_orders(page=1, page_size=25):
|
def get_orders(page=1, page_size=25):
|
||||||
|
access_token = tokens()
|
||||||
url = f"{BASE_URL}/orders"
|
url = f"{BASE_URL}/orders"
|
||||||
|
|
||||||
headers = {
|
headers = {
|
||||||
|
|
@ -161,6 +165,7 @@ def get_orders(page=1, page_size=25):
|
||||||
|
|
||||||
|
|
||||||
def get_order_content(order_id):
|
def get_order_content(order_id):
|
||||||
|
access_token = tokens()
|
||||||
conn = sqlite3.connect("./files/rokky.db")
|
conn = sqlite3.connect("./files/rokky.db")
|
||||||
|
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
|
|
|
||||||
72
API/rokky.py
72
API/rokky.py
|
|
@ -16,6 +16,42 @@ password = os.getenv('password')
|
||||||
conn = sqlite3.connect("./files/rokky.db")
|
conn = sqlite3.connect("./files/rokky.db")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def update_prices():
|
||||||
|
|
||||||
|
with open("./files/prices.json", "r") as f:
|
||||||
|
prices = json.load(f)
|
||||||
|
conn = sqlite3.connect("./files/rokky.db")
|
||||||
|
cursor = conn.cursor()
|
||||||
|
|
||||||
|
data = []
|
||||||
|
for item in prices:
|
||||||
|
sku = item["sku"]
|
||||||
|
price = item.get("price")
|
||||||
|
price_gg = item.get("baseSuggestedRetailPrice")
|
||||||
|
price_sales = item.get("discountPercentage")
|
||||||
|
is_sale = item.get("isSale")
|
||||||
|
|
||||||
|
data.append((
|
||||||
|
price,
|
||||||
|
price_gg,
|
||||||
|
price_sales,
|
||||||
|
is_sale,
|
||||||
|
sku,
|
||||||
|
))
|
||||||
|
|
||||||
|
cursor.executemany("""
|
||||||
|
UPDATE products
|
||||||
|
SET
|
||||||
|
price = ?,
|
||||||
|
price_gg = ?,
|
||||||
|
price_sales = ?,
|
||||||
|
insale = ?
|
||||||
|
WHERE sku = ?
|
||||||
|
""", data)
|
||||||
|
print("Обновил цены")
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
def decrypt_file(input_file, output_file, password):
|
def decrypt_file(input_file, output_file, password):
|
||||||
with open(input_file, "rb") as f:
|
with open(input_file, "rb") as f:
|
||||||
encrypted = f.read()
|
encrypted = f.read()
|
||||||
|
|
@ -56,8 +92,10 @@ def decrypt_and_unpack(name):
|
||||||
with gzip.open(gz, "rb") as f_in:
|
with gzip.open(gz, "rb") as f_in:
|
||||||
with open(json_file, "wb") as f_out:
|
with open(json_file, "wb") as f_out:
|
||||||
shutil.copyfileobj(f_in, f_out)
|
shutil.copyfileobj(f_in, f_out)
|
||||||
|
|
||||||
print(f"Готово: {json_file}")
|
print(f"Готово: {json_file}")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -164,39 +202,7 @@ def add_product():
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def update_prices():
|
|
||||||
with open("./files/prices.json", "r") as f:
|
|
||||||
prices = json.load(f)
|
|
||||||
|
|
||||||
cursor = conn.cursor()
|
|
||||||
|
|
||||||
data = []
|
|
||||||
for item in prices:
|
|
||||||
sku = item["sku"]
|
|
||||||
price = item.get("price")
|
|
||||||
price_gg = item.get("baseSuggestedRetailPrice")
|
|
||||||
price_sales =item.get("discountPercentage")
|
|
||||||
is_sale = item.get("isSale")
|
|
||||||
|
|
||||||
data.append((
|
|
||||||
price,
|
|
||||||
price_gg,
|
|
||||||
price_sales,
|
|
||||||
is_sale,
|
|
||||||
sku
|
|
||||||
))
|
|
||||||
|
|
||||||
cursor.executemany("""
|
|
||||||
UPDATE products
|
|
||||||
SET
|
|
||||||
price = ?,
|
|
||||||
price_gg = ?,
|
|
||||||
price_sales = ?,
|
|
||||||
insale = ?
|
|
||||||
WHERE sku = ?
|
|
||||||
""", data)
|
|
||||||
|
|
||||||
conn.commit()
|
|
||||||
|
|
||||||
# decrypt_and_unpack("prices")
|
# decrypt_and_unpack("prices")
|
||||||
# decrypt_and_unpack("products")
|
# decrypt_and_unpack("products")
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -4,11 +4,12 @@ import os
|
||||||
import sqlite3
|
import sqlite3
|
||||||
import json
|
import json
|
||||||
# from services.rokky import ones
|
# from services.rokky import ones
|
||||||
from API.rok import create_order, get_order_content
|
from API.rok import create_order, get_order_content, get_orders
|
||||||
from API.TG import send_telegram
|
from API.TG import send_telegram
|
||||||
from services.orders import get_sku
|
from services.orders import get_sku
|
||||||
from services.gg import get_product, create_messagea
|
from services.gg import get_product, create_messagea
|
||||||
from services.send_mai import send_html_flow
|
from services.send_mai import send_html_flow
|
||||||
|
# from services.orders_rokky import rok_orders
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
|
@ -21,7 +22,9 @@ IMAGE_FOLDER = os.path.join(BASE_DIR, 'images')
|
||||||
|
|
||||||
@main.route("/")
|
@main.route("/")
|
||||||
def index():
|
def index():
|
||||||
return "Hello wstkeys!!123!"
|
print(get_orders())
|
||||||
|
return "Hello wstkeys! Hello1"
|
||||||
|
|
||||||
|
|
||||||
@main.route("/images/<filename>")
|
@main.route("/images/<filename>")
|
||||||
def get_image(filename):
|
def get_image(filename):
|
||||||
|
|
@ -98,7 +101,7 @@ def new_order():
|
||||||
send_telegram(order_id)
|
send_telegram(order_id)
|
||||||
|
|
||||||
logging.warn(f"newOrder: {order_id}")
|
logging.warn(f"newOrder: {order_id}")
|
||||||
get_order_content(int(order_id))
|
# get_order_content(int(order_id))
|
||||||
send_html_flow(order_id)
|
send_html_flow(order_id)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -134,7 +137,7 @@ def sku():
|
||||||
def product_update():
|
def product_update():
|
||||||
# получаем параметры
|
# получаем параметры
|
||||||
sku = request.args.get("rokky")
|
sku = request.args.get("rokky")
|
||||||
ggsale = request.args.get("ggsale")
|
ggsale = request.args.get("ggsel")
|
||||||
|
|
||||||
if not sku or not ggsale:
|
if not sku or not ggsale:
|
||||||
return jsonify({"error": "Missing parameters"}), 400
|
return jsonify({"error": "Missing parameters"}), 400
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
import sqlite3
|
||||||
|
|
||||||
|
conn = sqlite3.connect("./files/rokky.db")
|
||||||
|
cursor = conn.cursor()
|
||||||
|
|
||||||
|
cursor.execute("DROP TABLE IF EXISTS orders")
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
@ -4,23 +4,22 @@ conn = sqlite3.connect("./files/rokky.db")
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
|
|
||||||
cursor.execute("""
|
cursor.execute("""
|
||||||
CREATE TABLE IF NOT EXISTS products (
|
CREATE TABLE IF NOT EXISTS orders (
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
sku INTEGER UNIQUE,
|
id_i INTEGER UNIQUE,
|
||||||
product_type TEXT,
|
id_d INTEGER,
|
||||||
product_id INTEGER,
|
name_p TEXT,
|
||||||
name TEXT,
|
im TEXT,
|
||||||
developer TEXT,
|
email TEXT,
|
||||||
publisher TEXT,
|
chat_id TEXT,
|
||||||
cover TEXT,
|
currency TEXT,
|
||||||
release_date TEXT,
|
amount TEXT,
|
||||||
genres TEXT,
|
date TEXT,
|
||||||
price TEXT,
|
sku_rokky TEXT,
|
||||||
price_gg TEXT,
|
price_rokky TEXT,
|
||||||
price_sales TEXT,
|
orders_rokky TEXT,
|
||||||
price_salesgg TEXT,
|
key TEXT,
|
||||||
gg TEXT,
|
content TEXT
|
||||||
insale TEXT
|
|
||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,58 @@
|
||||||
|
import sqlite3
|
||||||
|
from API.rok import get_order_content
|
||||||
|
import requests
|
||||||
|
# from send_mai import send_html_flow
|
||||||
|
|
||||||
|
|
||||||
|
conn = sqlite3.connect("./files/rokky.db")
|
||||||
|
cursor = conn.cursor()
|
||||||
|
|
||||||
|
|
||||||
|
def rok_orders():
|
||||||
|
conn = sqlite3.connect("./files/rokky.db")
|
||||||
|
cursor = conn.cursor()
|
||||||
|
|
||||||
|
cursor.execute("""
|
||||||
|
SELECT * FROM orders
|
||||||
|
WHERE key IS NULL OR key = ''
|
||||||
|
""")
|
||||||
|
|
||||||
|
rows = cursor.fetchall()
|
||||||
|
|
||||||
|
for row in rows:
|
||||||
|
order_id = row[12] # ✅ id (а не 12!)
|
||||||
|
id_i = row[1]
|
||||||
|
|
||||||
|
print(f"Обработка заказа {order_id}")
|
||||||
|
try:
|
||||||
|
# пример:
|
||||||
|
new_key = get_order_content(int(order_id))
|
||||||
|
|
||||||
|
cursor.execute("""
|
||||||
|
UPDATE orders
|
||||||
|
SET key = ?
|
||||||
|
WHERE id = ?
|
||||||
|
""", (new_key, order_id))
|
||||||
|
|
||||||
|
url = "https://wstkeys.top/newOrder"
|
||||||
|
# url = "http://0.0.0.0:5205/newOrder"
|
||||||
|
|
||||||
|
payload = {"orderId": int(order_id), "partnerSchemaId": 209}
|
||||||
|
|
||||||
|
headers = {
|
||||||
|
"Content-Type": "application/json"
|
||||||
|
}
|
||||||
|
|
||||||
|
response = requests.post(url, json=payload, headers=headers)
|
||||||
|
except Exception as a:
|
||||||
|
print(a)
|
||||||
|
|
||||||
|
print(response.status_code)
|
||||||
|
print(response.text)
|
||||||
|
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,12 +1,16 @@
|
||||||
import datetime
|
import datetime
|
||||||
from API.rok import download_products, download_prices
|
from API.rok import download_products, download_prices
|
||||||
from API.rokky import decrypt_and_unpack, add_product, update_prices
|
from API.rokky import decrypt_and_unpack, add_product, update_prices
|
||||||
|
from services.orders_rokky import rok_orders
|
||||||
|
|
||||||
def run_task():
|
def run_task():
|
||||||
|
print("REDs start download_prices:!", datetime.datetime.now())
|
||||||
download_prices()
|
download_prices()
|
||||||
decrypt_and_unpack("prices")
|
decrypt_and_unpack("prices")
|
||||||
|
print("START update_prices")
|
||||||
update_prices()
|
update_prices()
|
||||||
print("REDs download_prices:", datetime.datetime.now())
|
print("END update_prices", datetime.datetime.now())
|
||||||
|
print("REDs download_prices:!", datetime.datetime.now())
|
||||||
|
|
||||||
|
|
||||||
def run_task1():
|
def run_task1():
|
||||||
|
|
@ -14,4 +18,20 @@ def run_task1():
|
||||||
decrypt_and_unpack("products")
|
decrypt_and_unpack("products")
|
||||||
add_product()
|
add_product()
|
||||||
print("REDs download__product:", datetime.datetime.now())
|
print("REDs download__product:", datetime.datetime.now())
|
||||||
|
|
||||||
|
def run_task2():
|
||||||
|
try:
|
||||||
|
print("START run_task2")
|
||||||
|
rok_orders()
|
||||||
|
print("END run_task2", datetime.datetime.now())
|
||||||
|
except Exception as e:
|
||||||
|
print("ERROR run_task2:", e)
|
||||||
|
|
||||||
|
def run_task3():
|
||||||
|
try:
|
||||||
|
print("START run_task3")
|
||||||
|
update_prices()
|
||||||
|
print("END run_task3", datetime.datetime.now())
|
||||||
|
except Exception as e:
|
||||||
|
print("ERROR run_task3:", e)
|
||||||
|
|
||||||
|
|
@ -1,14 +1,24 @@
|
||||||
|
|
||||||
from apscheduler.schedulers.background import BackgroundScheduler
|
from apscheduler.schedulers.background import BackgroundScheduler
|
||||||
|
|
||||||
from services.red import run_task
|
import datetime
|
||||||
|
import time
|
||||||
|
|
||||||
|
from services.red import run_task, run_task1, run_task2,run_task3
|
||||||
|
|
||||||
def start_scheduler():
|
def start_scheduler():
|
||||||
scheduler = BackgroundScheduler()
|
scheduler = BackgroundScheduler()
|
||||||
|
|
||||||
# каждые 10 секунд
|
|
||||||
scheduler.add_job(run_task, 'interval', minutes=10)
|
|
||||||
# Раз в сутки (24 часа)
|
|
||||||
scheduler.add_job(run_task, 'interval', days=1)
|
|
||||||
|
|
||||||
scheduler.start()
|
scheduler.add_job(run_task2, 'interval', minutes=1, next_run_time=datetime.datetime.now())
|
||||||
|
scheduler.add_job(run_task, 'interval', minutes=5)
|
||||||
|
scheduler.add_job(run_task1, 'interval', days=1)
|
||||||
|
# scheduler.add_job(
|
||||||
|
# run_task3,
|
||||||
|
# 'interval',
|
||||||
|
# minutes=2,
|
||||||
|
# next_run_time=datetime.datetime.now() # 🔥 сразу запуск
|
||||||
|
# )
|
||||||
|
|
||||||
|
scheduler.start()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue