Mirror of https://github.com/Jxck-S/plane-notify
This is the backend to ElonsJet and other bots
acasads-badsbadsbexchangeadsbxairportemergency-squawklandopenskyopensky-apiopensky-networkplaneresolutionadviosrysquawktakeofftcas
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.1 KiB
71 lines
2.1 KiB
def append_airport(filename, airport, text_credit=None): |
|
from PIL import Image, ImageDraw, ImageFont |
|
distance_mi = airport['distance_mi'] |
|
icao = airport['icao'] |
|
iata = airport['iata_code'] |
|
distance_km = distance_mi * 1.609 |
|
|
|
# create Image object with the input image |
|
image = Image.open(filename) |
|
# initialise the drawing context with |
|
# the image object as background |
|
draw = ImageDraw.Draw(image) |
|
|
|
#Setup fonts |
|
fontfile = "./dependencies/Roboto-Regular.ttf" |
|
font = ImageFont.truetype(fontfile, 14) |
|
mini_font = ImageFont.truetype(fontfile, 12) |
|
head_font = ImageFont.truetype(fontfile, 16) |
|
|
|
#Setup Colors |
|
black = 'rgb(0, 0, 0)' # Black |
|
white = 'rgb(255, 255, 255)' # White |
|
navish = 'rgb(0, 63, 75)' |
|
whitish = 'rgb(248, 248, 248)' |
|
#Info Box |
|
draw.rectangle(((325, 760), (624, 800)), fill= white, outline=black) |
|
#Header Box |
|
draw.rectangle(((401, 738), (549, 760)), fill= navish) |
|
#Create Text |
|
#ADSBX Credit |
|
if text_credit is not None: |
|
draw.rectangle(((658, 762), (800, 782)), fill= white) |
|
(x, y) = (660, 760) |
|
text = text_credit |
|
draw.text((x, y), text, fill=black, font=head_font) |
|
#Nearest Airport Header |
|
(x, y) = (422, 740) |
|
text = "Nearest Airport" |
|
draw.text((x, y), text, fill=white, font=head_font) |
|
#ICAO | IATA |
|
(x, y) = (330, 765) |
|
if airport['iata_code'] != '' and airport['icao'] != '': |
|
airport_codes = airport['iata_code'] + " / " + airport['icao'] |
|
elif airport['icao'] != '': |
|
airport_codes = airport['icao'] |
|
else: |
|
airport_codes = airport['ident'] |
|
draw.text((x, y), airport_codes, fill=black, font=font) |
|
#Distance |
|
(x, y) = (460, 765) |
|
text = str(round(distance_mi, 2)) + "mi / " + str(round(distance_km, 2)) + "km away" |
|
draw.text((x, y), text, fill=black, font=font) |
|
#Full name |
|
(x, y) = (330, 783) |
|
MAX_WIDTH = 325 |
|
if font.getsize(airport['name'])[0] <= MAX_WIDTH: |
|
text = airport['name'] |
|
else: |
|
text = "" |
|
for char in airport['name']: |
|
if font.getsize(text)[0] >= (MAX_WIDTH - 10): |
|
text += "..." |
|
break |
|
else: |
|
text += char |
|
|
|
|
|
draw.text((x, y), text, fill=black, font=mini_font) |
|
image.show() |
|
# save the edited image |
|
image.save(filename) |