82 lines
2.7 KiB
Python
82 lines
2.7 KiB
Python
import os
|
|
import re
|
|
import time
|
|
|
|
from PIL import Image, ImageDraw, ImageFont
|
|
|
|
|
|
def dsimg(img, rank, name, difficulty, score, ptt, realptt, pure, far, lost, playtime, path=''):
|
|
# score rating
|
|
if score > 9900000:
|
|
scoretype = 'EX+'
|
|
elif score > 9800000:
|
|
scoretype = 'EX'
|
|
elif score > 9500000:
|
|
scoretype = 'AA'
|
|
elif score > 9200000:
|
|
scoretype = 'A'
|
|
elif score > 8900000:
|
|
scoretype = 'B'
|
|
elif score > 8600000:
|
|
scoretype = 'C'
|
|
else:
|
|
scoretype = 'D'
|
|
# song ptt
|
|
realptt = realptt
|
|
if ptt > realptt or ptt < realptt:
|
|
ptt = f'{realptt} > {round(ptt, 4)}'
|
|
else:
|
|
ptt = str(realptt)
|
|
# playtime
|
|
nowtime = time.time()
|
|
playtime = playtime // 1000 - nowtime
|
|
playtime = - playtime
|
|
t = playtime / 60 / 60 / 24
|
|
dw = 'd'
|
|
if t < 1:
|
|
t = playtime / 60 / 60
|
|
dw = 'h'
|
|
if t < 1:
|
|
t = playtime / 60
|
|
dw = 'm'
|
|
if t < 1:
|
|
t = playtime
|
|
dw = 's'
|
|
playtime = str(int(t)) + dw
|
|
# drawimg
|
|
songimg = Image.open(img).convert("RGBA")
|
|
font = ImageFont.truetype(os.path.abspath('./assets/Fonts/Kazesawa-Regular.ttf'), 40)
|
|
font2 = ImageFont.truetype(os.path.abspath('./assets/Fonts/Exo-SemiBold.ttf'), 27)
|
|
difficultyimg = Image.open(os.path.abspath(f'./assets/{difficulty}.png'))
|
|
songimg.alpha_composite(difficultyimg.convert("RGBA"), (277, 0))
|
|
drawtext = ImageDraw.Draw(songimg)
|
|
drawtext.text((20, 115), '#' + str(rank), '#ffffff', font=font)
|
|
namesplit = re.findall(r'.?.?.?.?.?.?.?.?.?.?.?.?.?.?', name)
|
|
if namesplit[1]:
|
|
name = namesplit[0] + '...'
|
|
else:
|
|
name = namesplit[0]
|
|
drawtext.text((20, 1), name, '#ffffff', font=font)
|
|
score = re.sub(',', "'", format(score, ','))
|
|
score = score.split("'")
|
|
if int(score[0]) < 10:
|
|
score = "'".join(score)
|
|
score = '0' + score
|
|
else:
|
|
score = "'".join(score)
|
|
drawtext.text((20, 50), f'{score} [{scoretype}]', '#ffffff', font=font2)
|
|
drawtext.text((20, 80), f'Potential: {ptt}', '#ffffff', font=font2)
|
|
drawtext.text((120, 115), f'P {str(pure)}', '#ffffff', font=font2)
|
|
drawtext.text((120, 145), f'F {str(far)} L {str(lost)}', '#ffffff', font=font2)
|
|
songimg_width = songimg.size[0]
|
|
playtime_width = font2.getsize(playtime)[0]
|
|
drawtext.text((songimg_width - playtime_width - 13, 160), playtime, '#ffffff', font=font2)
|
|
if __name__ == '__main__':
|
|
songimg.show()
|
|
else:
|
|
songimg.save(f'{path}/{str(rank)}.png')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
dsimg(os.path.abspath(f'./assets/songimg/mahoroba.jpg'), '20', 'MAHOROBA', '2', 10000000, 12, 13, '999', '0', '0',
|
|
1601545604789)
|