68 lines
2.4 KiB
Python
68 lines
2.4 KiB
Python
from cm_bot_hal import CM_BOT_HAL
|
|
import logging, time, requests, json
|
|
from concurrent.futures import ThreadPoolExecutor
|
|
from datetime import datetime
|
|
import os
|
|
|
|
# Configure logging with time-based file rotation
|
|
log_dir = "logs"
|
|
if not os.path.exists(log_dir):
|
|
os.makedirs(log_dir)
|
|
|
|
# Create logger
|
|
logger = logging.getLogger(__name__)
|
|
logger.setLevel(logging.INFO)
|
|
|
|
# Create formatter
|
|
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
|
|
|
|
# Create file handler with time-based filename
|
|
log_filename = os.path.join(log_dir, f"transfer_credit_{datetime.now().strftime('%Y%m%d')}.log")
|
|
file_handler = logging.FileHandler(log_filename)
|
|
file_handler.setLevel(logging.INFO)
|
|
file_handler.setFormatter(formatter)
|
|
|
|
# Create console handler
|
|
console_handler = logging.StreamHandler()
|
|
console_handler.setLevel(logging.INFO)
|
|
console_handler.setFormatter(formatter)
|
|
|
|
# Add handlers to logger
|
|
logger.addHandler(file_handler)
|
|
logger.addHandler(console_handler)
|
|
|
|
# Suppress httpx logs
|
|
logging.getLogger("httpx").setLevel(logging.WARNING)
|
|
|
|
# api_url = 'https://api.luckytown888.net'
|
|
api_url = 'http://api-server:3000'
|
|
max_threading = 1
|
|
|
|
def transfer(data: dict):
|
|
bot = CM_BOT_HAL()
|
|
logger.info(f"[Start] Transfer Credit from {data['f_username']} to {data['t_username']}")
|
|
bot.transfer_credit_api(data['f_username'], data['f_password'], data['t_username'], data['t_password'])
|
|
logger.info(f"[DONE] {data['f_username']} transfer done!")
|
|
del bot
|
|
time.sleep(0.5)
|
|
|
|
while True:
|
|
weekday = int(datetime.now().strftime("%w"))
|
|
hour = int(datetime.now().strftime("%H"))
|
|
minutes = int(datetime.now().strftime("%M"))
|
|
print(f'weekday: {weekday}, hour: {hour}, minutes: {minutes}')
|
|
if weekday == 6 and (hour >= 9 and hour < 22):
|
|
local_logger = logging.getLogger(f"{__name__}.saturday_processing")
|
|
local_logger.info("Starting Saturday transfer processing")
|
|
response = requests.get(f'{api_url}/user')
|
|
items = json.loads(response.text)
|
|
total_items = len(items) if isinstance(items, list) else 0
|
|
if total_items == 0:
|
|
logger.info("No items to process.")
|
|
else:
|
|
logger.info(f"Processing {total_items} transfer items...")
|
|
with ThreadPoolExecutor(max_workers=max_threading) as executor:
|
|
results = list(executor.map(transfer, items))
|
|
logger.info(f"Completed processing {total_items} transfer items.")
|
|
time.sleep(1)
|