Simple Scrolling ASCII Art Banner 03-12-2016, 12:46 AM
#1
This is a little something special for the 500k posts of Sinister.ly!! You'll learn how to create a simple scrolling ASCII art banner in the Linux or Windows terminal.
So, for us, it will scroll the following text across the screen:
If you're lazy like me, and just want the zip...
[attachment=291]
Below is the commented code that you can look through and understand.
Save it as banner.py
http://pastebin.com/0z8AMYYP
NOTE: I couldn't embed the main code directly here because of CloudFlare blocking me thinking I'm trying to mess with SQL...
This is the ASCII art text I made.
Save it as ASCII_ART.txt in the same folder as banner.py and terminalsize.py
NOTE: The ASCII art text looks like gibberish, but when you paste it into notepad, it will look right.
I know it's not perfect... but it's simple. I might make a v2 in the future with some new features and fixes.
So, for us, it will scroll the following text across the screen:
Quote:HAPPY 500K POSTS SINISTER.LYBut that text will be in huge ASCII art form.
If you're lazy like me, and just want the zip...
[attachment=291]
Below is the commented code that you can look through and understand.
Save it as banner.py
http://pastebin.com/0z8AMYYP
NOTE: I couldn't embed the main code directly here because of CloudFlare blocking me thinking I'm trying to mess with SQL...
Code:
#!/usr/bin/python
# This is not my code, I got it from https://gist.github.com/jtriley/1108174
# "Get current terminal size on Linux, Mac, and Windows "
import os
import shlex
import struct
import platform
import subprocess
def get_terminal_size():
""" getTerminalSize()
- get width and height of console
- works on linux,os x,windows,cygwin(windows)
originally retrieved from:
http://stackoverflow.com/questions/566746/how-to-get-console-window-width-in-python
"""
current_os = platform.system()
tuple_xy = None
if current_os == 'Windows':
tuple_xy = _get_terminal_size_windows()
if tuple_xy is None:
tuple_xy = _get_terminal_size_tput()
# needed for window's python in cygwin's xterm!
if current_os in ['Linux', 'Darwin'] or current_os.startswith('CYGWIN'):
tuple_xy = _get_terminal_size_linux()
if tuple_xy is None:
print "default"
tuple_xy = (80, 25) # default value
return tuple_xy
def _get_terminal_size_windows():
try:
from ctypes import windll, create_string_buffer
# stdin handle is -10
# stdout handle is -11
# stderr handle is -12
h = windll.kernel32.GetStdHandle(-12)
csbi = create_string_buffer(22)
res = windll.kernel32.GetConsoleScreenBufferInfo(h, csbi)
if res:
(bufx, bufy, curx, cury, wattr,
left, top, right, bottom,
maxx, maxy) = struct.unpack("hhhhHhhhhhh", csbi.raw)
sizex = right - left + 1
sizey = bottom - top + 1
return sizex, sizey
except:
pass
def _get_terminal_size_tput():
# get terminal width
# src: http://stackoverflow.com/questions/263890/how-do-i-find-the-width-height-of-a-terminal-window
try:
cols = int(subprocess.check_call(shlex.split('tput cols')))
rows = int(subprocess.check_call(shlex.split('tput lines')))
return (cols, rows)
except:
pass
def _get_terminal_size_linux():
def ioctl_GWINSZ(fd):
try:
import fcntl
import termios
cr = struct.unpack('hh',
fcntl.ioctl(fd, termios.TIOCGWINSZ, '1234'))
return cr
except:
pass
cr = ioctl_GWINSZ(0) or ioctl_GWINSZ(1) or ioctl_GWINSZ(2)
if not cr:
try:
fd = os.open(os.ctermid(), os.O_RDONLY)
cr = ioctl_GWINSZ(fd)
os.close(fd)
except:
pass
if not cr:
try:
cr = (os.environ['LINES'], os.environ['COLUMNS'])
except:
return None
return int(cr[1]), int(cr[0])
if __name__ == "__main__":
sizex, sizey = get_terminal_size()
print 'width =', sizex, 'height =', sizeyThis is the ASCII art text I made.
Save it as ASCII_ART.txt in the same folder as banner.py and terminalsize.py
Code:
H H AAAAA PPPPPP PPPPPP Y Y 5555555 00000 00000 K K PPPPPP OOOOO SSSSSS TTTTTTT SSSSSS SSSSSS IIIIIII NN N IIIIIII SSSSSS TTTTTTT EEEEEEE RRRRRR L Y Y
H H A A P P P P Y Y 5 0 0 0 0 0 0 K K P P O O S T S S I N N N I S T E R R L Y Y
HHHHHHH AAAAAAA PPPPPP PPPPPP YYY 55555 0 0 0 0 0 0 KKK PPPPPP O O SSSSS T SSSSS SSSSS I N N N I SSSSS T EEEE RRRRRR L YYY
H H A A P P YY 5 0 0 0 0 0 0 K KK P O O S T S S I N N N I S T E R R L YY
H H A A P P Y 555555 00000 00000 K K P OOOOO SSSSSS T SSSSSS SSSSSS IIIIIII N NN IIIIIII SSSSSS T EEEEEEE R R @ LLLLLLL YI know it's not perfect... but it's simple. I might make a v2 in the future with some new features and fixes.






![[+]](https://sinister.li/images/modern/collapse_collapsed.png)
