173 lines
3.7 KiB
Python
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()) |