"There is NO explosion or incident..."

"There is NO explosion or incident..."

·

21 min read

Quick update on AI terror since the last blogpost:

Googe AI head leaves with warning to world...
AI lab heads brought to White House for meeting with Harris, Biden drops in...
AI generated image of explosion at pentagon rattles the markets...
OpenAI CEO goes before congress - asks for MORE regulation...

Anyway, onto the topic of today's blog...

Using Python to animate ASCII art

ASCII

ASCII (American Standard Code for Information Interchange) is a fundamental character encoding system that emerged in the early 1960s, gaining widespread adoption and revolutionizing computer communication. Its development was spearheaded by a committee led by Robert W. Bemer and later standardized by the American National Standards Institute (ANSI). ASCII utilized a 7-bit encoding scheme, initially comprising 128 characters, including letters, numerals, punctuation marks, and control characters, which facilitated data exchange among diverse computer systems. Over time, as computing advanced, ASCII expanded to include an extended set of characters, and it served as a cornerstone for the interconnection of computers and the development of subsequent character encoding standards, laying the foundation for modern information exchange and digital communication

ASCII Art

ASCII art is a technique that utilizes ASCII characters to represent images or graphical designs. It relies on the varying density and arrangement of characters to create a visual representation of an image. In ASCII art, different characters, such as letters, numbers, and symbols, are assigned based on their visual similarity to certain shades or patterns in the original image. By strategically arranging these characters in a grid or matrix format, an ASCII artist can recreate the shapes, textures, and tones of the original image. The resulting ASCII art can be displayed on any device or platform that supports text characters, including computer terminals, text editors, or web pages. It allows for creative and expressive visuals using just plain text, offering a unique and nostalgic aesthetic.

Animation of ASCII

Ok, with the ASCII background out of the way I can get into the meat of this post...
As I've mentioned in past posts - I'm currently a student in a coding bootcamp. The bootcamp is split into 5 phases - four of which include learning a new language/framework/library, etc. and then using that newly acquired knowledge to create a group project.
This phase focused on Python and SQL. I was lucky to get 2 wonderful group-mates - I'll call them "Cahen" and "Derrick" bc those are their real names. (Hopefully I'll come back and link their blogs to their names. When I do that this parenthetical will be removed).
We worked together to make a CLI app for an imaginary pharmacy named "Walgreenz". This CLI app was created exclusively for educational purposes - none of us expect to parlay this into a source of income - so I think we're ok with the name.
I'm only getting into the title of the app to mitigate confusion with the examples below.
Our CLI app used a few key features to make the interface a little more engaging for the user. We were pointed in the direction of Click and Time by a fellow group (thank you "Dustin" and "Bruce").
In the context of Python, "click" refers to a popular library called "Click" that is used for creating command-line interfaces (CLIs). Click provides a simple and intuitive way to define, organize, and execute command-line commands and options. And In the context of Python, "time" refers to a built-in module that provides various functions for working with time-related operations. The time module allows you to manipulate time, measure time intervals, format dates and times, and perform other time-related tasks in Python programs. As such both Time and Click can simply be imported at the top of the .py file employing their features. Here's what that looked like in our CLI file:

import click
import time
from time import sleep

There were a number of other imports for the app but this is all that was required for creating ASCII animations.
I only used Click for one simple purpose - Click.clear(), to "refresh" the terminal screen when employed - but a great deal can be done with it for those who wish to delve deeper.
Time was put to use more extensively. We wrote some simple functions to make text print at a variety of speeds depending on the purpose of the text within the app. Here's an example:

def print_1_slowly(output):
    for char in output:
        print(char, end='', flush=True)
        time.sleep(0.01)
        # time.sleep(0)
    print()

In the above function "print_1_slowly()" the important aspects to note are:
in the second line it's established that a pause will take place between every character in the provided (output) in line 1, and the fourth line establishes that the pause will be for a duration of (0.01) seconds. That sounds like an absurdly short duration but it adds up when implemented between every single character.
Here's an implementation example:

def main_menu():
        shopping_cart = []
        click.clear()
        print_1_slowly(main_menu_image)      
        print('-' * 50)
        print()
        print("      1.|   Login")
        sleep(0.04)
        print("      2.|   Sign Up")
        sleep(0.04)
        print("      3.|   Dr. Walgzbot")
        sleep(0.04)
        print("      4.|   EXIT")
        print()
        print('-' * 50)
        sleep(0.04)
        main_menu_input = input(" Please enter number from the menu above: ")
        print('-' * 50)

In the example above we start by clearing the interface in line 3. The "print_1_slowly()" function is used to print out the imported main_menu_image (the "image" is, in fact, a block of text that creates an ascii "image"), line 5 prints a row of 50 "-"s to break up the screen visually, line 6 gives us a blank line for formatting. After we print the "login" line we see another use of Time.
In this case, we use "sleep" to simply give us a pause between the lines of text printed before and after. Like before (0.04) represents a duration in relation to 1 second.
Below is a short clip that shows how the above code loads in the terminal AFTER showing the intro animation that I'll walk through after the video embed...

Using the click and sleep features already demonstrated we can create an ASCII animation.
This is a somewhat cumbersome process and if this post gets even one reader then I assume there will be someone who can point out all the reasons why what I'm about to demonstrate is pointless/inefficient/lame - but I don't care. I enjoyed creating animations using this technique. It brought bak memories of trying to make "claymation" videos with my brother when we were tykes with access to an ancient camcorder.
Anyway, what I did was to create each "frame" of the ASCII animation and save it as its own "image" Here's what that looks like:

greeting_image_63 = """
                 ______________
                |__  ___     ___|
                 |=============|
  _       __      | _________ |
 | |     / /____ _ / /___  ________  ___  ____  ___  TM  
 | | /| / // __ `// / __ `/ ___/ _ \/ _ \/ __ \/_  /
 | |/ |/ // /_/ // / /_/ / /  /  __/  __/ / / / / /_
 |__/|__/ \__,_//_/\__, /_/   \___/\___/_/ /_/ /___/
       __         /____/-----'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_62 = """
                 ______________
                |__  ___     ___|
                 |=============|
 _       __       |__________ |
| |     / /____ _ / /___  ________  ___  ____  ___  TM  
| | /| / // __ `// / __ `/ ___/ _ \/ _ \/ __ \/_  /
| |/ |/ // /_/ // / /_/ / /  /  __/  __/ / / / / /_
|__/|__/ \__,_//_/\__, /_/   \___/\___/_/ /_/ /___/
       __        /____/------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""



greeting_image_61 = """
                 ______________
                |__  ___     ___|
                 |=============|
_       __        |__________ |
 |     / /____ _ / /___  ________  ___  ____  ___  TM  
 | /| / // __ `// / __ `/ ___/ _ \/ _ \/ __ \/_  /
 |/ |/ // /_/ // / /_/ / /  /  __/  __/ / / / / /_
__/|__/ \__,_//_/\__, /_/   \___/\___/_/ /_/ /___/
       __       /____/-------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_60 = """
                 ______________
                |__  ___     ___|
                 |=============|
       __        __ _________ |
|     / /____ _ / /___  ________  ___  ____  ___  TM  
| /| / // __ `// / __ `/ ___/ _ \/ _ \/ __ \/_  /
|/ |/ // /_/ // / /_/ / /  /  __/  __/ / / / / /_
_/|__/ \__,_//_/\__, /_/   \___/\___/_/ /_/ /___/
       __      /____/--------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_59 = """
                 ______________
                |__  ___     ___|
                 |=============|
      __        __| _________ |
     / /____ _ / /___  ________  ___  ____  ___  TM  
 /| / // __ `// / __ `/ ___/ _ \/ _ \/ __ \/_  /
/ |/ // /_/ // / /_/ / /  /  __/  __/ / / / / /_
/|__/ \__,_//_/\__, /_/   \___/\___/_/ /_/ /___/
       __     /____/---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_58 = """
                 ______________
                |__  ___     ___|
                 |=============|
     __        __ | _________ |
    / /____ _ / /___  ________  ___  ____  ___  TM  
/| / // __ `// / __ `/ ___/ _ \/ _ \/ __ \/_  /
 |/ // /_/ // / /_/ / /  /  __/  __/ / / / / /_
|__/ \__,_//_/\__, /_/   \___/\___/_/ /_/ /___/
       __    /____/'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_57 = """
                 ______________
                |__  ___     ___|
                 |=============|
    __        __   | _________ |
   / /____ _ / /___  ________  ___  ____  ___  TM  
| / // __ `// / __ `/ ___/ _ \/ _ \/ __ \/_  /
|/ // /_/ // / /_/ / /  /  __/  __/ / / / / /_
__/ \__,_//_/\__, /_/   \___/\___/_/ /_/ /___/
       __   /____/|'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""


greeting_image_56 = """
                 ______________
                |__  ___     ___|
                 |=============|
   __        __   | _________ |
  / /____ _ / /___  ________  ___  ____  ___  TM  
 / // __ `// / __ `/ ___/ _ \/ _ \/ __ \/_  /
/ // /_/ // / /_/ / /  /  __/  __/ / / / / /_
_/ \__,_//_/\__, /_/   \___/\___/_/ /_/ /___/
       __  /____/ |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_55 = """
                 ______________
                |__  ___     ___|
                 |=============|
  __        __    | _________ |
 / /____ _ / /___  ________  ___  ____  ___  TM  
/ // __ `// / __ `/ ___/ _ \/ _ \/ __ \/_  /
 // /_/ // / /_/ / /  /  __/  __/ / / / / /_
/ \__,_//_/\__, /_/   \___/\___/_/ /_/ /___/
       __ /____/  |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_54 = """
                 ______________
                |__  ___     ___|
                 |=============|
 __        __     | _________ |
/ /____ _ / /___  _______   __   ____  ___  TM  
 // __ `// / __ `/ ___/ _ \/ _ \/ __ \/_  /
// /_/ // / /_/ / /|/  __/  __/ / / / / /_
 \__,_//_/\__, /_/||\___/\___/_/ /_/ /___/_
       __/____/   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_53 = """
                 ______________
                |__  ___     ___|
                 |=============|
__        __      | _________ |
 /____ _ / /___  ________  ___  ____  ___  TM  
// __ `// / __ `/ ___/ _ \/ _ \/ __ \/_  /
/ /_/ // / /_/ / /|/  __/  __/ / / / / /_
\__,_//_/\__, /_/ |\___/\___/_/ /_/ /___/_
       _/____/    |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_52 = """
                 ______________
                |__  ___     ___|
                 |=============|
_         __      | _________ |
/ ____ _ / /___  ________  ___  ____  ___  TM  
/ __ `// / __ `/ ___/ _ \/ _ \/ __ \/_  /
 /_/ // / /_/ / / |/  __/  __/ / / / / /_
__,_//_/\__, /_/  |\___/\___/_/ /_/ /___/__
       /____/|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_51 = """
                 ______________
                |__  ___     ___|
                 |=============|
        __        | _________ |
 ___ _ / /___  ________  ___  ____  ___  TM  
 __ `// / __ `/ ___/ _ \/ _ \/ __ \/_  /
/_/ // / /_/ / /  /  __/  __/ / / / / /_
_,_//_/\__, /_/   \___/\___/_/ /_/ /___/ __
      /____/_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_50 = """
                 ______________
                |__  ___     ___|
                 |=============|
       __         | _________ |
___ _ / /___  ________  ___  ____  ___  TM  
__ `// / __ `/ ___/ _ \/ _ \/ __ \/_  /
_/ // / /_/ / /  /  __/  __/ / / / / /_
,_//_/\__, /_/   \___/\___/_/ /_/ /___/  __
     /____/(_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_49 = """
                 ______________
                |__  ___     ___|
                 |=============|
      __          | _________ |
__ _ / /___  ________  ___  ____  ___  TM  
_ `// / __ `/ ___/ _ \/ _ \/ __ \/_  /
/ // / /_/ / /  /  __/  __/ / / / / /_
_//_/\__, /_/_  \___/\___/_/ /_/ /___/   __
    /____/ (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_48 = """
                 ______________
                |__  ___     ___|
                 |=============|
     __           | _________ |
_ _ / /___  ________  ___  ____  ___  TM  
 `// / __ `/ ___/ _ \/ _ \/ __ \/_  /
 // / /_/ / /  /  __/  __/ / / / / /_
//_/\__, /_/ _ \___/\___/_/ /_/ /___/)   __
   /____/  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_47 = """
                 ______________
                |__  ___     ___|
                 |=============|
    __            | _________ |
 _ / /___  ________  ___  ____  ___  TM  
`// / __ `/ ___/ _ \/ _ \/ __ \/_  /
// / /_/ / /  /  __/  __/ / / / / /_
/_/\__, /_/  _\___/\___/_/ /_/ /___/|)   __
  /____/_  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_46 = """
                 ______________
                |__  ___     ___|
                 |=============|
   __             | _________ |
  / /___  ________  ___  ____  ___   TM  
// / __ `/ ___/ _ \/ _ \/ __ \/_  /
/ / /_/ / /  /  __/  __/ / / / / /__
_/\__, /_/   \___/\___/_/ /_/ /___/_|)   __
 /____/__  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_45 = """
                 ______________
                |__  ___     ___|
                 |=============|
  __              | _________ |
 / /___  ________  ___  ____  ___  TM  
/ / __ `/ ___/ _ \/ _ \/ __ \/_  /
 / /_/ / /  /  __/  __/ / / / / /___ 
/\__, /_/   \___/\___/_/ /_/ /___/__|)   __
/____/ __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_44 = """
                 ______________
                |__  ___     ___|
                 |=============|
 __               | _________ |
/ /___  ________  ___  ____  ___  TM  
 / __ `/ ___/ _ \/ _ \/ __ \/_  /
/ /_/ / /  /  __/  __/ / / / / /_ ___ 
\__, /_/   \___/\___/_/ /_/ /___/(__|)   __
____/  __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_43 = """
                 ______________
                |__  ___     ___|
                 |=============|
__                | _________ |
 /___  ________  ___  ____  ___  TM  
/ __ `/ ___/ _ \/ _ \/ __ \/_  /
 /_/ / /  /  __/  __/ / / / / /_  ___
__, /_/   \___/\___/_/ /_/ /___/ (__|)   __
___/   __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_42 = """
                 ______________
                |__  ___     ___|
                 |=============|
_                 | _________ |
/___  ________  ___  ____  ___| TM  
 __ `/ ___/ _ \/ _ \/ __ \/_  /
/_/ / /  /  __/  __/ / / / / /_   ___
_, /_/   \___/\___/_/ /_/ /___/  (__|)   __
__/    __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_41 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
___  ________  ___  ____  ___||TM  
__ `/ ___/ _ \/ _ \/ __ \/_  /|
_/ / /  /  __/  __/ / / / / /_|   ___
, /_/   \___/\___/_/ /_/ /___/|  (__|)   __
_/     __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_40 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________  |
__  ________  ___  ____  ___ |TM  
_ `/ ___/ _ \/ _ \/ __ \/_  /||
/ / /  /  __/  __/ / / / / /_||   ___
 /_/   \___/\___/_/ /_/ /___/||  (__|)   __
/      __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_39 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
_  ________  ___  ____  ___  TM  
 `/ ___/ _ \/ _ \/ __ \/_  / ||
 / /  /  __/  __/ / / / / /_ ||   ___
/_/   \___/\___/_/ /_/ /___/ ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_38 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
  ________  ___  ____  ___  TM|
`/ ___/ _ \/ _ \/ __ \/_  /  ||
/ /  /  __/  __/ / / / / /_  ||   ___
_/   \___/\___/_/ /_/ /___/  ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_37 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
 ________  ___  ____  ___  TM||
/ ___/ _ \/ _ \/ __ \/_  /   ||
 /  /  __/  __/ / / / / /_   ||   ___
/   \___/\___/_/ /_/ /___/   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_36 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
________  ___  ____  ___  TM ||
 ___/ _ \/ _ \/ __ \/_  /    ||
/  /  __/  __/ / / / / /_/   ||   ___
   \___/\___/_/ /_/ /___/\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_35 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
______  ___  ____  ___  TM   ||
__/ _ \/ _ \/ __ \/_  /_)    ||
 /  __/  __/ / / / / /_ \/   ||   ___
 \___/\___/_/ /_/ /___/ /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_34 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
_____  ___  ____  ___  TM    ||
_/ _ \/ _ \/ __ \/_  /|_)    ||
/  __/  __/ / / / / /_| \/   ||   ___
\___/\___/_/ /_/ /___/  /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_33 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
___  ___  ____  ___  TM_     ||
 _ \/ _ \/ __ \/_  /  |_)    ||
 __/  __/ / / / / /_  | \/   ||   ___
__/\___/_/ /_/ /___/    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_32 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
__  ___  ____  ___| TM  _     ||
_ \/ _ \/ __ \/_  /|  |_)    ||
__/  __/ / / / / /_|  | \/   ||   ___
_/\___/_/ /_/ /___/|    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_31 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
_  ___  ____  ____|TM  _     ||
 \/ _ \/ __ \/_  /||  |_)    ||
_/  __/ / / / / /_||  | \/   ||   ___
/\___/_/ /_/ /___/||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_30 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
  ___  ____  ____ TM   _     ||
\/ _ \/ __ \/_  / ||  |_)    ||
/  __/ / / / / /_ ||  | \/   ||   ___
\___/_/ /_/ /___/ ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_29 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
 ___  ____  ____ TM|   _     ||
/ _ \/ __ \/_  /  ||  |_)    ||
  __/ / / / / /_  ||  | \/   ||   ___
___/_/ /_/ /___/  ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_28 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
___  ____  ____ TM |   _     ||
 _ \/ __ \/_  /   ||  |_)    ||
 __/ / / / / /_   ||  | \/   ||   ___
__/_/ /_/ /___/   ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_27 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
__  ____  ____ TM ||   _     ||
_ \/ __ \/_  /    ||  |_)    ||
__/ / / / / /_    ||  | \/   ||   ___
_/_/ /_/ /___/    ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_26 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
__  ____  ____ TM ||   _     ||
_ \/ __ \/_  /    ||  |_)    ||
__/ / / / / /_    ||  | \/   ||   ___
_/_/ /_/ /___/    ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_25 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
_  ____  ____ TM  ||   _     ||
 \/ __ \/_  /     ||  |_)    ||
_/ / / / / /_     ||  | \/   ||   ___
/_/ /_/ /___/_    ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_24 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
  ____  ____ TM   ||   _     ||
\/ __ \/_  /      ||  |_)    ||
/ / / / / /_      ||  | \/   ||   ___
_/ /_/ /___/ _    ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_23 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
 ____  ____ TM    ||   _     ||
/ __ \/_  /       ||  |_)    ||
 / / / / /_       ||  | \/   ||   ___
/ /_/ /___/  _    ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_22 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
____  ____ TM     ||   _     ||
 __ \/_  /        ||  |_)    ||
/ / / / /_        ||  | \/   ||   ___
 /_/ /___/   _    ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_21 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
___  ____ TM      ||   _     ||
__ \/_  /         ||  |_)    ||
 / / / /_         ||  | \/   ||   ___
/_/ /___/    _    ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_20 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
__  ____ TM       ||   _     ||
_ \/_  /          ||  |_)    ||
/ / / /_          ||  | \/   ||   ___
_/ /___/     _    ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_19 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
_  ____ TM        ||   _     ||
 \/_  /           ||  |_)    ||
 / / /_           ||  | \/   ||   ___
/ /___/      _    ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_18 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
  ____ TM         ||   _     ||
\/_  /            ||  |_)    ||
/ / /_            ||  | \/   ||   ___
 /___/       _    ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_17 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
 ____ TM          ||   _     ||
/_  /             ||  |_)    ||
 / /_             ||  | \/   ||   ___
/___/       __    ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_16 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
____ TM           ||   _     ||
_  /              ||  |_)    ||
/ /_              ||  | \/   ||   ___
___/        __    ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_15 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
___ TM            ||   _     ||
  /               ||  |_)    ||
 /_               ||  | \/   ||   ___
__/         __    ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_13 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
__ TM             ||   _     ||
 /                ||  |_)    ||
/_                ||  | \/   ||   ___
_/          __    ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_12 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
_ TM              ||   _     ||
/                 ||  |_)    ||
_                 ||  | \/   ||   ___
/           __    ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""



greeting_image_11 = """
                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
                  ||   _     ||
                  ||  |_)    ||
                  ||  | \/   ||   ___
            __    ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
      (_|)        `-.........-'   .--.  
"""

greeting_image_10 = """

                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
                  ||   _     ||
                  ||  |_)    ||
                  ||  | \/   ||   ___
            __    ||    /\   ||  (__|)   __
       __  (_|)   |'---------'|         (_|)   
"""

greeting_image_9 = """


                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
                  ||   _     ||
                  ||  |_)    ||
                  ||  | \/   ||   ___
            __    ||    /\   ||  (__|)   __
"""

greeting_image_8 = """



                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
                  ||   _     ||
                  ||  |_)    ||
                  ||  | \/   ||   ___
"""

greeting_image_7 = """




                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
                  ||   _     ||
                  ||  |_)    ||
"""

greeting_image_6 = """





                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
                  ||   _     ||
"""


greeting_image_5 = """






                 ______________
                |__  ___     ___|
                 |=============|
                  | _________ |
"""

greeting_image_4 = """








                 ______________
                |__  ___     ___|
                 |=============|
"""

greeting_image_3 = """








                 ______________
                |__  ___     ___|
"""

greeting_image_2 = """









                 ______________
"""

I debated whether or not I should include that entire massive code sample but I figured - why not? We're all friends, and I figure it's worth it to see how many lines it takes to produce such a short animation.
The next step requires asignificantly shorter code sample. Below is the function that prints the above images to create the animation:

def pre_menu_ani():
   click.clear()
   print(greeting_image_2)
   sleep(0.06)
   click.clear()
   print(greeting_image_3)
   sleep(0.06)
   click.clear()
   print(greeting_image_4)
   sleep(0.06)
   click.clear()
   print(greeting_image_5)
   sleep(0.06)
   click.clear()
   print(greeting_image_6)
   sleep(0.06)
   click.clear()
   print(greeting_image_7)
   sleep(0.06)
   click.clear()
   print(greeting_image_8)
   sleep(0.06)
   click.clear()
   print(greeting_image_9)
   sleep(0.06)
   click.clear()
   print(greeting_image_10)
   sleep(0.06)
   click.clear()
   print(greeting_image_11)
   sleep(0.06)
   click.clear()
   print(greeting_image_12)
   sleep(0.06)
   click.clear()
   print(greeting_image_13)
   sleep(0.06)
   click.clear()
   print(greeting_image_15)
   sleep(0.06)
   click.clear()
   print(greeting_image_16)
   sleep(0.06)
   click.clear()
   print(greeting_image_17)
   sleep(0.06)
   click.clear()
   print(greeting_image_18)
   sleep(0.06)
   click.clear()
   print(greeting_image_19)
   sleep(0.06)
   click.clear()
   print(greeting_image_20)
   sleep(0.06)
   click.clear()
   print(greeting_image_21)
   sleep(0.06)
   click.clear()
   print(greeting_image_22)
   sleep(0.06)
   click.clear()
   print(greeting_image_23)
   sleep(0.06)
   click.clear()
   print(greeting_image_24)
   sleep(0.06)
   click.clear()
   print(greeting_image_25)
   sleep(0.06)
   click.clear()
   print(greeting_image_26)
   sleep(0.06)
   click.clear()
   print(greeting_image_27)
   sleep(0.06)
   click.clear()
   print(greeting_image_28)
   sleep(0.06)
   click.clear()
   print(greeting_image_29)
   sleep(0.06)
   click.clear()
   print(greeting_image_30)
   sleep(0.06)
   click.clear()
   print(greeting_image_31)
   sleep(0.06)
   click.clear()
   print(greeting_image_32)
   sleep(0.06)
   click.clear()
   print(greeting_image_33)
   sleep(0.06)
   click.clear()
   print(greeting_image_34)
   sleep(0.06)
   click.clear()
   print(greeting_image_35)
   sleep(0.06)
   click.clear()
   print(greeting_image_36)
   sleep(0.06)
   click.clear()
   print(greeting_image_37)
   sleep(0.06)
   click.clear()
   print(greeting_image_38)
   sleep(0.06)
   click.clear()
   print(greeting_image_39)
   sleep(0.06)
   click.clear()
   print(greeting_image_40)
   sleep(0.06)
   click.clear()
   print(greeting_image_41)
   sleep(0.06)
   click.clear()
   print(greeting_image_42)
   sleep(0.06)
   click.clear()
   print(greeting_image_43)
   sleep(0.06)
   click.clear()
   print(greeting_image_44)
   sleep(0.06)
   click.clear()
   print(greeting_image_45)
   sleep(0.06)
   click.clear()
   print(greeting_image_46)
   sleep(0.06)
   click.clear()
   print(greeting_image_47)
   sleep(0.06)
   click.clear()
   print(greeting_image_48)
   sleep(0.06)
   click.clear()
   print(greeting_image_49)
   sleep(0.06)
   click.clear()
   print(greeting_image_50)
   sleep(0.06)
   click.clear()
   print(greeting_image_51)
   sleep(0.06)
   click.clear()
   print(greeting_image_52)
   sleep(0.06)
   click.clear()
   print(greeting_image_53)
   sleep(0.06)
   click.clear()
   print(greeting_image_54)
   sleep(0.06)
   click.clear()
   print(greeting_image_55)
   sleep(0.06)
   click.clear()
   print(greeting_image_56)
   sleep(0.06)
   click.clear()
   print(greeting_image_57)
   sleep(0.06)
   click.clear()
   print(greeting_image_58)
   sleep(0.06)
   click.clear()
   print(greeting_image_59)
   sleep(0.06)
   click.clear()
   print(greeting_image_60)
   sleep(0.06)
   click.clear()
   print(greeting_image_61)
   sleep(0.06)
   click.clear()
   print(greeting_image_62)
   sleep(0.06)
   click.clear()
   print(greeting_image_63)
   sleep(0.06)

The animation moves a little slowly perhaps. If I were to redo it I'd either use fewer frames and keep the sleep(0.06) the same or use the same number of frames and shorten the sleep(0.06) to maybe (0.04). The click.clear() is used between the printing of each image or else the user would see a long string of separate images being printed one after the other (which is actually what's happening. after the animation has run the user can scroll up and see all of the separate images as they were printed, as demonstrated in the video below:

That's the long and short of it. A few final notes - I did all of this in a separate file and imported to the main .py file for the APP. It would've been way too cluttered and crazy-looking to attempt otherwise.
I used this site to produce ASCII text. It's great. You just type and select the ASCII style/image of your choice.
And, I'm using this site to help guide me as I embark on my ambitious ASCII project - THE 20TH CENTURY - AN ERA IN ASCII.
I'm not really doing that but the link is useful for creating ASCII images from jpegs and other image files.