oneBet/onebet/scripts/team_image.py

63 lines
2.1 KiB
Python

import shutil
import json
import os
import mysql.connector
import onebet.settings
import mainapp.models
class TeamImage:
OLD_PATH = os.path.join(
os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))),
'bob-prod', 'images', 'team'
)
NEW_PATH = os.path.join(
os.path.dirname(os.path.dirname(__file__)),
'mainapp', 'static', 'img', 'team'
)
@classmethod
def update_images(cls):
conn = mysql.connector.connect(
host=onebet.settings.MYSQL_HOST, port=onebet.settings.MYSQL_PORT, user=onebet.settings.MYSQL_USERNAME,
password=onebet.settings.MYSQL_PASSWORD, db=onebet.settings.MYSQL_DATABASE
)
cursor = conn.cursor()
cursor.execute("""
SELECT id, id_sport, gender, names, images
FROM teams
WHERE JSON_CONTAINS_PATH(names, 'one', '$.matchendirect')
AND JSON_EXTRACT(images, '$.30') NOT LIKE 'h30-default-team.svg%'
""")
for row in cursor.fetchall():
try:
team = mainapp.models.Team.objects.get(
sport_id=row[1],
gender=' MF'.index(row[2]),
names__matchendirect=json.loads(row[3])['matchendirect']
)
except mainapp.models.Team.DoesNotExist:
continue
print(f'[+] Copying images for team #{row[0]} => #{team.id}')
team.images = {
'H30': f't{team.id}-h30.svg',
'H50': f't{team.id}-h50.svg',
'H80': f't{team.id}-h80.svg'
}
old_images = json.loads(row[4])
for size in '30', '50', '80':
old_path = os.path.join(cls.OLD_PATH, old_images[size].split('?')[0])
new_path = os.path.join(cls.NEW_PATH, team.images['H'+size])
shutil.copy2(old_path, new_path)
team.images['H'+size] += '?t=' + str(int(os.path.getmtime(new_path)))
team.save()
cursor.close()
conn.close()