Skip to content

Commit

Permalink
xmas 🎄🎅
Browse files Browse the repository at this point in the history
  • Loading branch information
rene-d committed Dec 25, 2024
1 parent 573cf73 commit f250bfa
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 6 deletions.
10 changes: 4 additions & 6 deletions scripts/extract_drawing.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,15 +77,13 @@ def rgb(s: str) -> str:
code = rgb(line[2])

colors[color] = code
continue

if line.startswith('<pre class="calendar">'):
a = line.index(">") + 1
line = line[a:]
print(line)
continue

calendar = re.search(r'<pre class="calendar.*?">(.+?)</pre>', calendar, re.DOTALL).group(1)
for line in calendar.splitlines():

if "calendar-verycomplete" not in line:
print(line)
continue

a = line.index(">") + 1
Expand Down
96 changes: 96 additions & 0 deletions scripts/xmas.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
#!/usr/bin/env python3

import subprocess

AOC_10_YEARS = [
"",
" .-----. .------------------.",
" .--'\x1b[38;2;227;181;133m~\x1b[0m \x1b[38;2;227;181;133m~\x1b[0m \x1b[38;2;227;181;133m~\x1b[0m| .-' \x1b[38;2;255;255;102m*\x1b[0m \x1b[38;2;136;102;85m\\\x1b[0m \x1b[38;2;136;102;85m/\x1b[0m '-. 1 \x1b[33m**\x1b[0m",
" .--'\x1b[38;2;227;181;133m~\x1b[0m \x1b[38;2;0;204;0m,\x1b[0m\x1b[38;2;255;255;102m*\x1b[0m \x1b[38;2;227;181;133m~\x1b[0m | | \x1b[38;2;0;153;0m>\x1b[0mo\x1b[38;2;0;153;0m<\x1b[0m \x1b[38;2;136;102;85m\\_\\_\\|_/__/\x1b[0m | 2 \x1b[33m**\x1b[0m",
".---'\x1b[38;2;227;181;133m:\x1b[0m \x1b[38;2;227;181;133m~\x1b[0m \x1b[38;2;0;204;0m'\x1b[0m\x1b[38;2;85;85;187m(~)\x1b[0m\x1b[38;2;0;204;0m,\x1b[0m \x1b[38;2;227;181;133m~\x1b[0m| | \x1b[38;2;0;153;0m>\x1b[0m@\x1b[38;2;0;153;0m>\x1b[0mO\x1b[38;2;0;153;0m<\x1b[0m \x1b[38;2;255;0;0mo\x1b[0m\x1b[38;2;136;102;85m-_/\x1b[0m\x1b[38;2;204;204;204m.\x1b[0m\x1b[38;2;204;204;204m()\x1b[0m\x1b[38;2;136;102;85m__------\x1b[0m| 3 \x1b[33m**\x1b[0m",
"|\x1b[38;2;66;115;34m#\x1b[0m\x1b[38;2;94;171;180m..\x1b[0m\x1b[38;2;127;189;57m@\x1b[0m\x1b[38;2;227;181;133m'.\x1b[0m \x1b[38;2;227;181;133m~\x1b[0m \x1b[38;2;0;204;0m\"\x1b[0m \x1b[38;2;0;204;0m'\x1b[0m \x1b[38;2;227;181;133m~\x1b[0m | |\x1b[38;2;0;153;0m>\x1b[0mO\x1b[38;2;0;153;0m>\x1b[0mo\x1b[38;2;0;153;0m<\x1b[0m@\x1b[38;2;0;153;0m<\x1b[0m \x1b[38;2;136;102;85m\\____\x1b[0m \x1b[38;2;0;204;0m.'\x1b[0m| 4 \x1b[33m**\x1b[0m",
"|\x1b[38;2;127;189;57m_\x1b[0m.~.\x1b[38;2;77;139;3m_\x1b[0m\x1b[38;2;127;189;57m@\x1b[0m\x1b[38;2;227;181;133m'..\x1b[0m \x1b[38;2;227;181;133m~\x1b[0m \x1b[38;2;227;181;133m~\x1b[0m \x1b[38;2;255;255;102m*\x1b[0m| | \x1b[38;2;170;170;170m_|\x1b[0m \x1b[38;2;170;170;170m|_\x1b[0m ..\x1b[38;2;204;204;204m\\_\x1b[0m\x1b[38;2;136;102;85m\\_\x1b[0m \x1b[38;2;0;204;0m..'\x1b[0m\x1b[38;2;255;255;102m*\x1b[0m | 5 \x1b[33m**\x1b[0m",
"| \x1b[38;2;255;255;255m|||\x1b[0m \x1b[38;2;72;136;19m#\x1b[0m\x1b[38;2;66;115;34m@\x1b[0m\x1b[38;2;127;189;57m#@\x1b[0m\x1b[38;2;227;181;133m'''...\x1b[0m| |\x1b[38;2;162;81;81m...\x1b[0m .' '.\x1b[38;2;0;204;0m'''..\x1b[0m\x1b[38;2;212;221;228m/\x1b[0m\x1b[38;2;0;204;0m..\x1b[0m| 6 \x1b[33m**\x1b[0m",
"|\x1b[38;2;72;136;19m#\x1b[0m\x1b[38;2;255;255;255m~~~\x1b[0m\x1b[38;2;127;189;57m#\x1b[0m\x1b[38;2;66;115;34m@\x1b[0m\x1b[38;2;127;189;57m#\x1b[0m \x1b[38;2;127;189;57m@\x1b[0m \x1b[38;2;72;136;19m@\x1b[0m | |\x1b[38;2;165;168;175m/\\\x1b[0m \x1b[38;2;162;81;81m''.\x1b[0m | | \x1b[38;2;204;204;255m-\x1b[0m\x1b[38;2;212;221;228m/\x1b[0m \x1b[38;2;255;255;255m:\x1b[0m| 7 \x1b[33m**\x1b[0m",
"|\x1b[38;2;94;171;180m~~.\x1b[0m.--. ____ | |\x1b[38;2;255;255;102m*\x1b[0m \x1b[38;2;165;168;175m/\x1b[0m\x1b[38;2;223;35;8m~\x1b[0m\x1b[38;2;165;168;175m\\\x1b[0m \x1b[38;2;162;81;81m'.\x1b[0m| | \x1b[38;2;204;204;255m-\x1b[0m \x1b[38;2;212;221;228m/\x1b[0m \x1b[38;2;255;255;255m.'\x1b[0m| 8 \x1b[33m**\x1b[0m",
"'---' ||[][]_\\-| |\x1b[38;2;223;35;8m~\x1b[0m\x1b[38;2;165;168;175m/\x1b[0m \x1b[38;2;255;255;102m*\x1b[0m \x1b[38;2;165;168;175m\\\x1b[0m \x1b[38;2;162;81;81m:\x1b[0m| | \x1b[38;2;255;255;102m*\x1b[0m\x1b[38;2;255;255;255m..'\x1b[0m | 9 \x1b[33m**\x1b[0m",
" |------- | | \x1b[38;2;165;168;175m/\\\x1b[0m \x1b[38;2;162;81;81m.'\x1b[0m| |\x1b[38;2;255;255;255m'''\x1b[0m\x1b[38;2;0;200;255m~~~~~\x1b[0m| 10 \x1b[33m**\x1b[0m",
" |\x1b[38;2;204;204;255m.......\x1b[0m\x1b[38;2;255;0;0m|\x1b[0m| |\x1b[38;2;165;168;175m/\\\x1b[0m \x1b[38;2;162;81;81m..'\x1b[0m | |\x1b[38;2;0;181;237m~\x1b[0m \x1b[38;2;255;255;255m.\x1b[0m \x1b[38;2;0;181;237m.\x1b[0m| 11 \x1b[33m**\x1b[0m",
" | \x1b[38;2;255;255;255m-\x1b[0m \x1b[38;2;255;255;255m-\x1b[0m | |\x1b[38;2;162;81;81m'''\x1b[0m\x1b[38;2;51;51;51m::\x1b[0m\x1b[38;2;255;255;102m:\x1b[0m\x1b[38;2;51;51;51m::\x1b[0m| | \x1b[38;2;255;255;255m.\x1b[0m .| 12 \x1b[33m**\x1b[0m",
" |\x1b[38;2;255;255;255m'.\x1b[0m \x1b[38;2;255;255;255m-\x1b[0m \x1b[38;2;255;255;255m-\x1b[0m| | \x1b[38;2;51;51;51m::\x1b[0m\x1b[38;2;0;153;0m:\x1b[0m\x1b[38;2;51;51;51m::\x1b[0m| |. \x1b[38;2;255;255;255m.'\x1b[0m . | 13 \x1b[33m**\x1b[0m",
" |\x1b[38;2;0;204;0m...\x1b[0m\x1b[38;2;255;255;255m'..''\x1b[0m| |. \x1b[38;2;51;51;51m:\x1b[0m\x1b[38;2;0;153;0m:::\x1b[0m\x1b[38;2;51;51;51m:\x1b[0m| |\x1b[38;2;199;76;48m.\x1b[0m\x1b[38;2;255;0;0m.\x1b[0m\x1b[38;2;255;255;255m|\\\x1b[0m\x1b[38;2;255;0;0m.\x1b[0m\x1b[38;2;199;76;48m.\x1b[0m\x1b[38;2;164;122;77m''\x1b[0m| 14 \x1b[33m**\x1b[0m",
" |\x1b[38;2;0;204;0m.\x1b[0m \x1b[38;2;0;204;0m''.\x1b[0m | |. .\x1b[38;2;0;153;0m:::::\x1b[0m| |──┬┴┴┴┬─| 15 \x1b[33m**\x1b[0m",
" | \x1b[38;2;0;204;0m'.\x1b[0m\x1b[38;2;85;85;187m~\x1b[0m \x1b[38;2;0;204;0m'.\x1b[0m| | : \x1b[38;2;51;51;51m:\x1b[0m\x1b[38;2;51;51;51m:\x1b[0m\x1b[38;2;85;51;34m:\x1b[0m\x1b[38;2;51;51;51m::\x1b[0m| |──┤AoC├o| 16 \x1b[33m**\x1b[0m",
" |\x1b[38;2;0;204;0m.\x1b[0m \x1b[38;2;255;255;102m*\x1b[0m\x1b[38;2;0;204;0m'.\x1b[0m\x1b[38;2;85;85;187m~\x1b[0m \x1b[38;2;0;204;0m:\x1b[0m| | '. . | |┬o┤ten├─| 17 \x1b[33m**\x1b[0m",
" | \x1b[38;2;0;204;0m'..'\x1b[0m \x1b[38;2;0;204;0m.'\x1b[0m| |. 'o . | |┘*┤yrs├─| 18 \x1b[33m**\x1b[0m",
" | \x1b[38;2;85;85;187m~\x1b[0m \x1b[38;2;0;204;0m..'\x1b[0m | |: .'. .| |─┘├┬┬┬┴─| 19 \x1b[33m**\x1b[0m",
" |\x1b[38;2;0;204;0m'''\x1b[0m)) | | .o \x1b[38;2;255;255;102m*\x1b[0m: '. .'──┘\x1b[38;2;0;153;0m>>\x1b[0m\x1b[38;2;255;153;0mo\x1b[0m\x1b[38;2;0;153;0m<<\x1b[0m| 20 \x1b[33m**\x1b[0m",
".------'\x1b[38;2;0;102;255m.-\x1b[0m((\x1b[38;2;0;102;255m---.\x1b[0m'------. | :\x1b[38;2;255;0;0m|\x1b[0m\x1b[38;2;204;204;204m\\|\x1b[0m \x1b[38;2;51;51;153m~\x1b[0m \x1b[38;2;153;0;255m_\x1b[0m'' \x1b[38;2;153;0;255mO>\x1b[0m \x1b[38;2;0;153;0m>>\x1b[0m\x1b[38;2;255;0;0m@\x1b[0m\x1b[38;2;0;153;0m<\x1b[0m\x1b[38;2;255;153;0mo\x1b[0m\x1b[38;2;0;153;0m<\x1b[0m| 21 \x1b[33m**\x1b[0m",
"| \x1b[38;2;255;0;0m.---_\x1b[0m \x1b[38;2;0;102;255m'------'_\x1b[0m \x1b[38;2;170;170;170m.~'\x1b[0m | | \x1b[38;2;204;204;204m|\x1b[0m\x1b[38;2;255;0;0m\\|\x1b[0m\x1b[38;2;153;0;255m\\\x1b[0m \x1b[38;2;153;0;255m/\x1b[0m \x1b[38;2;153;0;255m\\\x1b[0m \x1b[38;2;153;0;255m/\x1b[0m\x1b[38;2;51;51;153m~\x1b[0m \x1b[38;2;0;153;0m>\x1b[0m\x1b[38;2;255;0;0m@\x1b[0m\x1b[38;2;0;153;0m<<\x1b[0m\x1b[38;2;255;255;102m*\x1b[0m\x1b[38;2;0;153;0m<\x1b[0m\x1b[38;2;0;102;255mO\x1b[0m| 22 \x1b[33m**\x1b[0m",
"|\x1b[38;2;255;0;0m/\x1b[0m \x1b[38;2;136;0;0m/\x1b[0m \x1b[38;2;255;0;0m/\\|\x1b[0m\x1b[38;2;0;102;255m|\x1b[0m \x1b[38;2;0;102;255m|\x1b[0m \x1b[38;2;0;102;255m)\x1b[0m\x1b[38;2;170;170;170m/\x1b[0m\x1b[38;2;230;65;11m~\x1b[0m\x1b[38;2;170;170;170m\\\x1b[0m | |\x1b[38;2;0;102;255m___\x1b[0m\x1b[38;2;255;0;0m|\x1b[0m\x1b[38;2;204;204;204m\\|\x1b[0m\x1b[38;2;0;102;255m________\x1b[0m\x1b[38;2;0;153;0m>\x1b[0m\x1b[38;2;0;102;255mO\x1b[0m\x1b[38;2;0;153;0m>>\x1b[0m\x1b[38;2;255;153;0mo\x1b[0m\x1b[38;2;0;153;0m>>\x1b[0m\x1b[38;2;255;153;0mo\x1b[0m| 23 \x1b[33m**\x1b[0m",
"|\x1b[38;2;136;0;0m/\x1b[0m \x1b[38;2;136;0;0m|\x1b[0m \x1b[38;2;255;0;0m\\\x1b[0m \x1b[38;2;255;255;102m*\x1b[0m\x1b[38;2;0;102;255m|\x1b[0m \x1b[38;2;0;102;255m|/\x1b[0m\x1b[38;2;170;170;170m/\x1b[0m \x1b[38;2;230;65;11m/\x1b[0m \x1b[38;2;170;170;170m\\\x1b[0m | | \x1b[38;2;155;113;91m----@\x1b[0m \x1b[38;2;170;170;170m_\x1b[0m\x1b[38;2;208;179;118m|%%%=%%|\x1b[0m\x1b[38;2;170;170;170m_\x1b[0m | 24 \x1b[33m**\x1b[0m",
"|\x1b[38;2;136;0;0m/\x1b[0m \x1b[38;2;136;0;0m\\\x1b[0m \x1b[38;2;255;0;0m\\\x1b[0m \x1b[38;2;0;102;255m'------'\x1b[0m\x1b[38;2;170;170;170m/\x1b[0m \x1b[38;2;230;65;11m/\x1b[0m \x1b[38;2;230;65;11m\\\x1b[0m \x1b[38;2;170;170;170m\\\x1b[0m| '-.\x1b[38;2;155;113;91m!\x1b[0m \x1b[38;2;155;113;91m/^\\\x1b[0m \x1b[38;2;170;170;170m/\x1b[0m \x1b[38;2;170;170;170m\\\x1b[0m\x1b[38;2;94;171;180m.~~.\x1b[0m\x1b[38;2;170;170;170m/\x1b[0m \x1b[38;2;170;170;170m\\\x1b[0m.-' 25 \x1b[33m**\x1b[0m",
"'----------------------' '------------------'",
]


def osc8_link(url: str, text: str):
"""Lien clickable dans le terminal."""
OSC = "\033]"
ST = "\a"
return f"{OSC}8;;{url}{ST}{text}{OSC}8;;{ST}"


def lolcat(s: str, seed: int) -> str:
p = subprocess.Popen(f"lolcat -f --seed {seed}", shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
s, _ = p.communicate(s.encode())
return s.decode()


def figlet(s: str, seed: int = 10) -> str:
p = subprocess.Popen(
f"figlet -w 100 -f small | lolcat -f --seed {seed}", shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE
)
s, _ = p.communicate(s.encode())
return s.decode()


def xmas(lang):
if lang == "fr":
xmas = "JOYEUX NOEL !"
indent1 = 1
indent2 = 17
else:
xmas = "Merry Christmas !"
indent1 = 6
indent2 = 22

lines = []

lines.append("cat <<'EOF'")

for line in AOC_10_YEARS:
lines.append(" " * indent1 + line)

title = "Advent of Code 2024"
title = osc8_link("https://adventofcode.com/2024", lolcat(title, 100))
title = lolcat("-" * indent2 + " [ ", 26) + title + lolcat("] " + "-" * indent2, 29)
lines.append(title)

lines.append(figlet(xmas))

lines.append("EOF")

return "\n".join(lines)


print(
f"""
#!/bin/sh
if [ "$1" = fr ]; then
{xmas('fr')}
else
{xmas('en')}
fi
"""
)

0 comments on commit f250bfa

Please sign in to comment.