mirror of
https://github.com/norohind/jubilant-system.git
synced 2025-04-24 01:20:52 +03:00
96 lines
3.9 KiB
Python
96 lines
3.9 KiB
Python
import json
|
|
import requests
|
|
import sqlite3
|
|
import time
|
|
import datetime
|
|
import utils
|
|
from EDMCLogging import get_main_logger
|
|
import sql_requests
|
|
|
|
logger = get_main_logger()
|
|
db = sqlite3.connect('squads.sqlite')
|
|
|
|
with open('sql_schema.sql', 'r', encoding='utf-8') as schema_file:
|
|
db.executescript(''.join(schema_file.readlines()))
|
|
|
|
ruTag: int = 32
|
|
BASE_URL = 'https://api.orerve.net/2.0/website/squadron/'
|
|
INFO_ENDPOINT = 'info'
|
|
|
|
|
|
def update_squad(squad_id: int, db_conn: sqlite3.Connection) -> bool:
|
|
r"""Update/insert information about squadron with specified id in our DB
|
|
|
|
:param squad_id: id of squad to update/insert
|
|
:param db_conn: connection to sqlite DB
|
|
:return: True if squad exists, False if not
|
|
:rtype: bool
|
|
"""
|
|
|
|
"""
|
|
How it should works?
|
|
Request squad's info
|
|
if squad exists FDEV
|
|
insert info in DB
|
|
request news, insert to DB
|
|
return True
|
|
|
|
if squad doesn't exists FDEV
|
|
if squad in DB and isn't deleted
|
|
write to squads_states record with all null except ID (it will mean that squad was deleted)
|
|
|
|
return False
|
|
*Should we return something more then just a bool, may be a message to notify_discord?
|
|
"""
|
|
|
|
squad_request: requests.Response = utils.authed_request(BASE_URL + INFO_ENDPOINT, params={'squadronId': squad_id})
|
|
|
|
if squad_request.status_code == 200: # squad exists FDEV
|
|
squad_request_json: dict = squad_request.json()['squadron']
|
|
with db_conn:
|
|
db_conn.execute(
|
|
sql_requests.insert_squad_states,
|
|
(
|
|
squad_id,
|
|
squad_request_json['name'],
|
|
squad_request_json['tag'],
|
|
utils.fdev2people(squad_request_json['ownerName']),
|
|
squad_request_json['ownerId'],
|
|
squad_request_json['platform'],
|
|
squad_request_json['created'],
|
|
squad_request_json['created_ts'],
|
|
squad_request_json['acceptingNewMembers'],
|
|
squad_request_json['powerId'],
|
|
squad_request_json['powerName'],
|
|
squad_request_json['superpowerId'],
|
|
squad_request_json['superpowerName'],
|
|
squad_request_json['factionId'],
|
|
squad_request_json['factionName'],
|
|
json.dumps(squad_request_json['userTags']),
|
|
squad_request_json['memberCount'],
|
|
squad_request_json['pendingCount'],
|
|
squad_request_json['full'],
|
|
squad_request_json['publicComms'],
|
|
squad_request_json['publicCommsOverride'],
|
|
squad_request_json['publicCommsAvailable'],
|
|
squad_request_json['current_season_trade_score'],
|
|
squad_request_json['previous_season_trade_score'],
|
|
squad_request_json['current_season_combat_score'],
|
|
squad_request_json['previous_season_combat_score'],
|
|
squad_request_json['current_season_exploration_score'],
|
|
squad_request_json['previous_season_exploration_score'],
|
|
squad_request_json['current_season_cqc_score'],
|
|
squad_request_json['previous_season_cqc_score'],
|
|
squad_request_json['current_season_bgs_score'],
|
|
squad_request_json['previous_season_bgs_score'],
|
|
squad_request_json['current_season_powerplay_score'],
|
|
squad_request_json['previous_season_powerplay_score'],
|
|
squad_request_json['current_season_aegis_score'],
|
|
squad_request_json['previous_season_aegis_score']
|
|
)
|
|
)
|
|
|
|
|
|
update_squad(65555, db)
|
|
update_squad(65555, db)
|