wstkeys/services/gg.py

173 lines
3.7 KiB
Python

import requests
import time
import json
import hashlib
from dotenv import load_dotenv
import os
load_dotenv()
TOKEN = os.getenv('GGTOKEN')
SELLER_ID = os.getenv('SELLER_ID')
API_KEY = os.getenv('GGTOKEN')
TOKEN_FILE = "./files/ggsel_token.json"
def save_token(token):
with open(TOKEN_FILE, "w") as f:
json.dump({"token": token}, f)
def load_token():
if not os.path.exists(TOKEN_FILE):
return None
with open(TOKEN_FILE) as f:
try:
data = json.load(f)
return data.get("token")
except json.JSONDecodeError:
return None
def safe_json(response):
if not response.text:
raise Exception("Empty response from API")
try:
return response.json()
except json.JSONDecodeError:
print("Invalid JSON response:")
print(response.text)
raise
def get_token():
timestamp = str(int(time.time()))
sign_string = API_KEY + timestamp
sign = hashlib.sha256(sign_string.encode()).hexdigest()
url = "https://seller.ggsel.com/api_sellers/api/apilogin"
payload = {
"seller_id": SELLER_ID,
"timestamp": timestamp,
"sign": sign
}
headers = {
"Content-Type": "application/json",
"Accept": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.status_code)
res = response.json()
token = res['token']
save_token(token)
print(token)
return token
def balans():
token = load_token()
if not token:
token = get_token()
url = "https://seller.ggsel.com/api_sellers/api/sellers/account/balance/info"
headers = {"Accept": "application/json"}
params = {"token": token}
r = requests.get(url, params=params, headers=headers)
print(r.status_code)
# если токен умер
if r.status_code in (401, 403):
token = get_token()
params["token"] = token
r = requests.get(url, params=params, headers=headers)
return r.json()
def last_sales(top=10, group=False):
token = load_token()
if not token:
token = get_token()
url = "https://seller.ggsel.com/api_sellers/api/seller-last-sales"
headers = {
"Accept": "application/json",
"locale": "ru"
}
params = {
"token": token,
"seller_id": SELLER_ID,
"top": top,
"group": str(group).lower()
}
r = requests.get(url, params=params, headers=headers)
print(r.status_code)
# если токен умер
if r.status_code in (401, 403):
token = get_token()
params["token"] = token
r = requests.get(url, params=params, headers=headers)
return r.json()
print(last_sales())
# def tokens():
# timestamp = str(int(time.time()))
# sign_string = API_KEY + timestamp
# sign = hashlib.sha256(sign_string.encode()).hexdigest()
# url = "https://seller.ggsel.com/api_sellers/api/apilogin"
# payload = {
# "seller_id": SELLER_ID,
# "timestamp": timestamp,
# "sign": sign
# }
# headers = {
# "Content-Type": "application/json",
# "Accept": "application/json"
# }
# response = requests.post(url, json=payload, headers=headers)
# print(response.status_code)
# res = response.json()
# token = res['token']
# return token
# def balans():
# url = "https://seller.ggsel.com/api_sellers/api/sellers/account/balance/info"
# params = {
# "token": tokens()
# }
# headers = {
# "Accept": "application/json"
# }
# response = requests.get(url, params=params, headers=headers)
# print(response.status_code)
# print(response.json())