banter/banter.py
2021-06-18 00:04:09 -05:00

54 lines
1.6 KiB
Python
Executable file

#!/bin/sh
''''exec /usr/bin/env python3 -u "$0" "$@" #'''
__doc__ = 'little script to make irc color art that will probably get you banned'
# whee, look at this sus shebang workaround to always cause
# unbuffered mode lol
import sys,time,argparse
from PIL import Image, ImageOps
from color import closestColor
def main(imgPath,delay,ASCIIWIDTH,COLORCHAR,FILLER):
im = Image.open(imgPath, 'r')
im = ImageOps.scale(im, ASCIIWIDTH / im.width)
width, height = im.size
pixel_values = list(im.getdata())
currentPixel = 0
for y in range(0, height, 2):
line = []
lastColor=69420
for x in range(width):
color = closestColor(pixel_values[width*y+x])
if color == lastColor:
colorcode = ''
else:
colorcode =COLORCHAR.format(color, color)
line.append(colorcode+(FILLER[currentPixel % len(FILLER)]))
lastColor=color
currentPixel+=1
print(''.join(line))
if delay:
time.sleep(delay)
if __name__ == "__main__":
parser = argparse.ArgumentParser("banter")
parser.add_argument("file")
parser.add_argument("-d",metavar='delay',default=0)
parser.add_argument("-w",metavar='width',default=80)
parser.add_argument("--colorfmt",metavar='format',default='\\x03{},{}')
parser.add_argument("--filler",metavar='filler',default='.')
args = parser.parse_args()
main(
args.file,
float(args.d),
int(args.w),
args.colorfmt.encode().decode('unicode_escape'),
args.filler.encode().decode('unicode_escape')
)