Compare commits
No commits in common. "main" and "1.0.0" have entirely different histories.
3 changed files with 19 additions and 58 deletions
|
@ -2,7 +2,8 @@ name: Upload release
|
|||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
tags:
|
||||
- "*"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
@ -17,6 +18,4 @@ jobs:
|
|||
uses: akkuman/gitea-release-action@v1
|
||||
with:
|
||||
token: ${{ secrets.TOKEN }}
|
||||
name: Latest version
|
||||
tag_name: latest
|
||||
files: horoscope.bat
|
||||
|
|
|
@ -16,9 +16,6 @@ CLS
|
|||
IF ERRORLEVEL 1 (
|
||||
ECHO Installation of Python not found, installation...
|
||||
|
||||
:: Accept Winget ToT
|
||||
ECHO Y | winget list >NUL
|
||||
|
||||
:: Install Python 3.12 from MS Store
|
||||
ECHO Y | winget install -he 9NCVDN91XZQP
|
||||
|
||||
|
|
69
main.py
69
main.py
|
@ -1,11 +1,10 @@
|
|||
from os import makedirs
|
||||
from os.path import isfile, join
|
||||
from pathlib import Path
|
||||
from os.path import join
|
||||
from random import choice
|
||||
from sys import argv
|
||||
from urllib.request import urlretrieve
|
||||
|
||||
from PIL import Image, ImageDraw, ImageEnhance, ImageFilter, ImageFont
|
||||
from PIL import Image, ImageDraw, ImageFont
|
||||
|
||||
zodiac_signs = [
|
||||
"Belier",
|
||||
|
@ -23,9 +22,6 @@ zodiac_signs = [
|
|||
]
|
||||
|
||||
|
||||
image_dir = join(Path(argv[0]).parent.resolve(), "images")
|
||||
|
||||
|
||||
def generate_horoscope() -> dict[str, dict[str, str]]:
|
||||
"""Generate horoscope predictions"""
|
||||
horoscope = {}
|
||||
|
@ -37,36 +33,8 @@ def generate_horoscope() -> dict[str, dict[str, str]]:
|
|||
|
||||
|
||||
def get_path(image: str):
|
||||
"""Return the path of an image"""
|
||||
return join(image_dir, f"{image.lower()}.png")
|
||||
|
||||
|
||||
def get_sign_image(image: str):
|
||||
"""Get sign image"""
|
||||
sign_image = Image.open(get_path(image)).convert("RGBA")
|
||||
|
||||
# Add thickness
|
||||
alpha = sign_image.split()[3]
|
||||
bold_mask = alpha.filter(ImageFilter.MaxFilter())
|
||||
sign_image.putalpha(bold_mask)
|
||||
|
||||
# Add contrast
|
||||
enhancer = ImageEnhance.Contrast(sign_image)
|
||||
enhanced_image = enhancer.enhance(2.0)
|
||||
|
||||
enhanced_image.thumbnail((100, 105))
|
||||
return enhanced_image
|
||||
|
||||
|
||||
def vertical_text(text: str, font: ImageFont.ImageFont | ImageFont.FreeTypeFont):
|
||||
"""Image with vertical text"""
|
||||
text_img = Image.new("RGBA", (135, 29), (255, 255, 255, 0))
|
||||
|
||||
text_draw = ImageDraw.Draw(text_img)
|
||||
text_draw.text((0, 0), f"{text:^15}", font=font, fill="black")
|
||||
text_draw = text_img.rotate(90, expand=True)
|
||||
|
||||
return text_draw
|
||||
"""Return the path of the image"""
|
||||
return join("images", f"{image.lower()}.png")
|
||||
|
||||
|
||||
def create_horoscope_image(horoscope: dict[str, dict[str, str]]):
|
||||
|
@ -82,15 +50,19 @@ def create_horoscope_image(horoscope: dict[str, dict[str, str]]):
|
|||
|
||||
x, y = 10, 10
|
||||
for sign, prediction in horoscope.items():
|
||||
sign_image = get_sign_image(sign)
|
||||
sign_image = Image.open(get_path(sign)).convert("RGBA")
|
||||
sign_image.thumbnail((100, 105))
|
||||
image.paste(sign_image, (x + 20, y), sign_image)
|
||||
|
||||
# Sign text
|
||||
text_draw = vertical_text(sign, font_sign)
|
||||
image.paste(text_draw, (x - 12, y - 10), text_draw)
|
||||
text_img = Image.new("RGBA", (135, 24), (255, 255, 255, 0))
|
||||
text_draw = ImageDraw.Draw(text_img)
|
||||
text_draw.text((0, 0), f"{sign:^15}", font=font_sign, fill="black")
|
||||
text_draw = text_img.rotate(90, expand=True)
|
||||
image.paste(text_draw, (x - 10, y - 10), text_draw)
|
||||
|
||||
# Love prediction
|
||||
love = Image.open(join(image_dir, "love.png")).convert("RGBA")
|
||||
love = Image.open(join("images", "love.png")).convert("RGBA")
|
||||
love.thumbnail(size_emoji)
|
||||
image.paste(love, (x + 125, y + 20), love)
|
||||
draw.text(
|
||||
|
@ -101,7 +73,7 @@ def create_horoscope_image(horoscope: dict[str, dict[str, str]]):
|
|||
)
|
||||
|
||||
# Work prediction
|
||||
work = Image.open(join(image_dir, "work.png")).convert("RGBA")
|
||||
work = Image.open(join("images", "work.png")).convert("RGBA")
|
||||
work.thumbnail(size_emoji)
|
||||
image.paste(work, (x + 125, y + 60), work)
|
||||
draw.text(
|
||||
|
@ -123,13 +95,9 @@ def download_images():
|
|||
"""Download images from source"""
|
||||
url = "https://git.mylloon.fr/Anri/Horoscope/raw/branch/main/images/"
|
||||
|
||||
makedirs(image_dir, exist_ok=True)
|
||||
makedirs("images", exist_ok=True)
|
||||
for el in zodiac_signs + ["love", "work"]:
|
||||
path = get_path(el)
|
||||
if not isfile(path):
|
||||
image = el.lower() + ".png"
|
||||
print(f"Download {image}...")
|
||||
urlretrieve(url + image, path)
|
||||
urlretrieve(url + el.lower() + ".png", get_path(el))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
@ -137,7 +105,6 @@ if __name__ == "__main__":
|
|||
exit(1)
|
||||
|
||||
if len(argv) == 2:
|
||||
print("Fetch missing images...")
|
||||
download_images()
|
||||
|
||||
# Generate new horoscope
|
||||
|
@ -145,8 +112,6 @@ if __name__ == "__main__":
|
|||
|
||||
# Create and save the image
|
||||
horoscope_image = create_horoscope_image(new_horoscope)
|
||||
horoscope_image.save("nouvel_horoscope.png")
|
||||
|
||||
png = "nouvel_horoscope.png"
|
||||
horoscope_image.save(png)
|
||||
|
||||
print(f"Nouvel horoscope généré et sauvegardé sous '{png}'")
|
||||
print("Nouvel horoscope généré et sauvegardé sous 'nouvel_horoscope.png'")
|
||||
|
|
Loading…
Reference in a new issue