sepandhaghighi / Art

Licence: mit
🎨 ASCII art library for Python

Programming Languages

python
139335 projects - #7 most used programming language
python3
1442 projects

Projects that are alternatives of or similar to Art

Csconsoleformat
.NET C# library for advanced formatting of console output [Apache]
Stars: ✭ 296 (-71.15%)
Mutual labels:  library, text, ascii, ascii-art
durdraw
Animated Unicode, ANSI and ASCII Art Editor for Linux/Unix/macOS
Stars: ✭ 55 (-94.64%)
Mutual labels:  art, ascii, ascii-art
Tart
Tart - draw ASCII art in the terminal with your mouse!
Stars: ✭ 296 (-71.15%)
Mutual labels:  art, ascii, ascii-art
hasciicam
(h)ascii for the masses! html refreshed ascii video cam
Stars: ✭ 63 (-93.86%)
Mutual labels:  art, ascii, ascii-art
Figlet Fonts
my collection of figlet / toilet ascii art fonts
Stars: ✭ 393 (-61.7%)
Mutual labels:  ascii, ascii-art, fonts
Terminaltables
Generate simple tables in terminals from a nested list of strings.
Stars: ✭ 685 (-33.24%)
Mutual labels:  library, ascii
Slug Generator
Slug Generator Library for PHP, based on Unicode’s CLDR data
Stars: ✭ 740 (-27.88%)
Mutual labels:  library, ascii
Christmas Tree
ASCII christmas-tree with animations for 256 colored terminals
Stars: ✭ 23 (-97.76%)
Mutual labels:  fun, ascii-art
Candyview
Implement any RecyclerView in just 1 Line. CandyView handles everything for you.
Stars: ✭ 15 (-98.54%)
Mutual labels:  library, easy-to-use
Ftxui
💻 C++ Functional Terminal User Interface. ❤️
Stars: ✭ 433 (-57.8%)
Mutual labels:  ascii, ascii-art
Ascii Generator
ASCII generator (image to text, image to image, video to video)
Stars: ✭ 939 (-8.48%)
Mutual labels:  ascii, ascii-art
Text Minimap
Generate text minimap/preview using Braille Patterns
Stars: ✭ 21 (-97.95%)
Mutual labels:  library, text
Diagram
CLI app to convert ASCII arts into hand drawn diagrams.
Stars: ✭ 642 (-37.43%)
Mutual labels:  ascii, ascii-art
Ascii art
Real-Time ASCII Art Rendering Library
Stars: ✭ 599 (-41.62%)
Mutual labels:  library, ascii-art
Cfonts
Sexy fonts for the console
Stars: ✭ 789 (-23.1%)
Mutual labels:  ascii, ascii-art
Lambdahack
Haskell game engine library for roguelike dungeon crawlers; please offer feedback, e.g., after trying out the sample game with the web frontend at
Stars: ✭ 439 (-57.21%)
Mutual labels:  library, ascii
Ascii canvas
ASCII canvas for drawing in console
Stars: ✭ 11 (-98.93%)
Mutual labels:  ascii, ascii-art
Android Img2ascii
Convert image to ascii.
Stars: ✭ 30 (-97.08%)
Mutual labels:  ascii, ascii-art
Ascii Doughnut
Animated spinning doughnut in ASCII
Stars: ✭ 29 (-97.17%)
Mutual labels:  ascii, ascii-art
Video To Ascii
It is a simple python package to play videos in the terminal using characters as pixels
Stars: ✭ 960 (-6.43%)
Mutual labels:  pip, ascii
 ______   ______  _______ 
| |  | | | |  | \   | |   
| |__| | | |__| |   | |   
|_|  |_| |_|  \_\   |_|   
Codecov PyPI version built with Python3

Table of contents

Overview

ASCII art is also known as "computer text art". It involves the smart placement of typed special characters or letters to make a visual shape that is spread over multiple lines of text.

ART is a Python lib for text converting to ASCII art fancy. ;-)

Open Hub
PyPI Counter
Github Stars
Font Counter 590
1-Line-Art Counter 700
Decor Counter 195
Branch master dev
Travis
AppVeyor
Code Quality codebeat badge CodeFactor

Usage

Quick Start

1-Line art

⚠️ Some environments don't support all 1-Line arts

⚠️ ART 4.6 is the last version to support Bipartite art

1. art

This function return 1-line art as str in normal mode and raise artError in exception.

>>> from art import *
>>> art_1=art("coffee") # return art as str in normal mode
>>> print(art_1)
c[_]
>>> art_2=art("woman",number=2) # return multiple art as str
>>> print(art_2)
▓⚗_⚗▓ ▓⚗_⚗▓ 
>>> art("random") # random 1-line art mode
'(っ◕‿◕)っ '
>>> art("rand")   # random 1-line art mode
't(-_-t) '
>>> art(22,number=1) # raise artError
Traceback (most recent call last):
        ...
art.art.artError: The 'artname' type must be str.

2. aprint

This function print 1-line art in normal mode (return None) and raise artError in exception.

>>> aprint("butterfly") # print art
Ƹ̵̡Ӝ̵̨̄Ʒ 
>>> aprint("happy") # print art
 ۜ\(סּںסּَ` )/ۜ
>>> aprint("random") # random 1-line art mode
'(っ◕‿◕)っ '
>>> aprint("rand")   # random 1-line art mode
't(-_-t) '
>>> aprint("woman",number="22") # raise artError
Traceback (most recent call last):
        ...
art.art.artError: The 'number' type must be int.

3. randart

randart function is added in Version 2.2 as art("random") shortcut.

>>> randart()
'ዞᏜ℘℘Ꮍ ℬℹℛʈዞᗬᏜᎽ '
>>> randart()
'✌(◕‿-)✌ '
  • Note1 : Use ART_NAMES to access all arts name list (new in Version 4.2)
  • Note2 : Use NON_ASCII_ARTS to access all Non-ASCII arts name list (new in Version 4.6)

ASCII text

⚠️ Some fonts don't support all characters

⚠️ From Version 3.3 Non-ASCII fonts added (These fonts are not compatible with some environments)

1. text2art

This function return ASCII text as str in normal mode and raise artError in exception.

>>> Art=text2art("art") # Return ASCII text (default font) and default chr_ignore=True 
>>> print(Art)
              _   
  __ _  _ __ | |_ 
 / _` || '__|| __|
| (_| || |   | |_ 
 \__,_||_|    \__|
                  
                     
>>> Art=text2art("art",font='block',chr_ignore=True) # Return ASCII text with block font
>>> print(Art)


 .----------------.  .----------------.  .----------------.
| .--------------. || .--------------. || .--------------. |
| |      __      | || |  _______     | || |  _________   | |
| |     /  \     | || | |_   __ \    | || | |  _   _  |  | |
| |    / /\ \    | || |   | |__) |   | || | |_/ | | \_|  | |
| |   / ____ \   | || |   |  __ /    | || |     | |      | |
| | _/ /    \ \_ | || |  _| |  \ \_  | || |    _| |_     | |
| ||____|  |____|| || | |____| |___| | || |   |_____|    | |
| |              | || |              | || |              | |
| '--------------' || '--------------' || '--------------' |
 '----------------'  '----------------'  '----------------'

>>> Art=text2art("test","random") # random font mode
>>> print(Art)
 |       | 
~|~/~/(~~|~
 | \/__) | 
           
>>> Art=text2art("test","rand") # random font mode
>>> print(Art)
___ ____ ____ ___ 
 |  |___ [__   |  
 |  |___ ___]  | 

>>> print(text2art('''Lorem  
ipsum 
dolor''', font="small")) # Multi-line print
 _                            
| |    ___  _ _  ___  _ __    
| |__ / _ \| '_|/ -_)| '  \   
|____|\___/|_|  \___||_|_|_|  
                              
 _                         
(_) _ __  ___ _  _  _ __   
| || '_ \(_-<| || || '  \  
|_|| .__//__/ \_,_||_|_|_| 
   |_|                     
    _       _           
 __| | ___ | | ___  _ _ 
/ _` |/ _ \| |/ _ \| '_|
\__,_|\___/|_|\___/|_|  
                        

>>> print(text2art("test","white_bubble"))  # Non-ASCII font example
ⓣⓔⓢⓣ
>>> text2art("art",font="fancy5",decoration="barcode1") # decoration parameter is added in Version 4.6
'▌│█║▌║▌║ ᏗᏒᏖ ║▌║▌║█│▌'
>>> text2art("seسسس",font=DEFAULT_FONT,chr_ignore=False) # raise artError in exception
Traceback (most recent call last):
        ...
art.art.artError: س is invalid.
  

2. tprint

This function print ASCII text in normal mode (return None) and raise artError in exception.

>>> tprint("art") # print ASCII text (default font) 
              _   
  __ _  _ __ | |_ 
 / _` || '__|| __|
| (_| || |   | |_ 
 \__,_||_|    \__|
                  

>>> tprint("art",font="block",chr_ignore=True) # print ASCII text (block font)

 .----------------.  .----------------.  .----------------.
| .--------------. || .--------------. || .--------------. |
| |      __      | || |  _______     | || |  _________   | |
| |     /  \     | || | |_   __ \    | || | |  _   _  |  | |
| |    / /\ \    | || |   | |__) |   | || | |_/ | | \_|  | |
| |   / ____ \   | || |   |  __ /    | || |     | |      | |
| | _/ /    \ \_ | || |  _| |  \ \_  | || |    _| |_     | |
| ||____|  |____|| || | |____| |___| | || |   |_____|    | |
| |              | || |              | || |              | |
| '--------------' || '--------------' || '--------------' |
 '----------------'  '----------------'  '----------------'

>>> tprint('testسس')  # chr_ignore flag ==True (Default)
 _               _   
| |_   ___  ___ | |_ 
| __| / _ \/ __|| __|
| |_ |  __/\__ \| |_ 
 \__| \___||___/ \__|
                     
>>> tprint("test","random") # random font mode
 |       | 
~|~/~/(~~|~
 | \/__) | 
           
>>> tprint("test","rand") # random font mode
___ ____ ____ ___ 
 |  |___ [__   |  
 |  |___ ___]  |  
                  

>>> tprint('testسس',chr_ignore=False) # raise artError in exception 
Traceback (most recent call last):
       ...
art.art.artError: س is invalid.
>>> tprint('''Lorem  
ipsum 
dolor''', font="cybermedium") # Multi-line print
_    ____ ____ ____ _  _    
|    |  | |__/ |___ |\/|    
|___ |__| |  \ |___ |  |    
                            
_ ___  ____ _  _ _  _    
| |__] [__  |  | |\/|    
| |    ___] |__| |  |    
                         
___  ____ _    ____ ____ 
|  \ |  | |    |  | |__/ 
|__/ |__| |___ |__| |  \ 

>>> tprint("art",font="fancy5",decoration="barcode1") # decoration parameter is added in Version 4.6
▌│█║▌║▌║ ᏗᏒᏖ ║▌║▌║█│▌
>>> tprint("art",font="fancy5",decoration="random") # decoration random mode is added in Version 5.0
•]•·✦º✦·»ᏗᏒᏖ«·✦º✦·•[•

3. tsave

This function return dict in normal and exception mode.

>>> Response=tsave("art",filename="test.txt") # save ASCII text in test.txt file with save message (print_status==True), return dict
Saved! 
Filename: test.txt
>>> Response["Message"]
'OK'
>>> Response=tsave("art",filename="test.txt",print_status=False) # save ASCII text in test.txt file without save message (print_status==False)
>>> Response["Message"]
'OK'
>>> Response["Status"]
True
>>> tsave(22,font=DEFAULT_FONT,filename="art",chr_ignore=True,print_status=True)
{'Status': False, 'Message': "'int' object has no attribute 'split'"}
>>> Response=tsave("art",filename="test.txt",overwrite=True) # overwrite parameter is added in Version 4.0
Saved! 
Filename: test.txt
>>> Response=tsave("art",filename="test.txt",decoration="barcode1") # decoration parameter is added in Version 4.6
Saved! 
Filename: test.txt
                        
  • Note1 : Use FONT_NAMES to access all fonts name list (new in Version 4.2)
  • Note2 : Use NON_ASCII_FONTS to access all Non-ASCII fonts name list (new in Version 4.4)

Decoration

⚠️ Some environments don't support all decorations

1. decor

This function return decoration as str in normal mode and raise artError in exception.

>>> decor("barcode1")
'▌│█║▌║▌║ '
>>> decor("barcode1",reverse=True)
' ║▌║▌║█│▌'
>>> decor("barcode1") + text2art("    art   ",font="fancy42") + decor("barcode1",reverse=True)
'▌│█║▌║▌║     ąяţ    ║▌║▌║█│▌'
>>> decor("barcode1",both=True) # both parameter is added in Version 5.0
['▌│█║▌║▌║ ', ' ║▌║▌║█│▌']
>>> decor("random",both=True) # random mode is added in Version 5.0
['「(◔ω◔「)三', '三三三ʅ(;◔౪◔)ʃ']
>>> decor("rand",both=True) # random mode is added in Version 5.0
['‹–…·´`·…–›', '‹–…·´`·…–›']
>>> decor(None)
Traceback (most recent call last):
	...
art.art.artError: The 'decoration' type must be str.
  • Note : Use DECORATION_NAMES to access all decorations name list (new in Version 4.6)

Font modes

These modes are available for text2art, tprint & tsave.

1. Font name

⚠️ Some fonts don't support all characters


>>> tprint("art",font="block",chr_ignore=True)

 .----------------.  .----------------.  .----------------.
| .--------------. || .--------------. || .--------------. |
| |      __      | || |  _______     | || |  _________   | |
| |     /  \     | || | |_   __ \    | || | |  _   _  |  | |
| |    / /\ \    | || |   | |__) |   | || | |_/ | | \_|  | |
| |   / ____ \   | || |   |  __ /    | || |     | |      | |
| | _/ /    \ \_ | || |  _| |  \ \_  | || |    _| |_     | |
| ||____|  |____|| || | |____| |___| | || |   |_____|    | |
| |              | || |              | || |              | |
| '--------------' || '--------------' || '--------------' |
 '----------------'  '----------------'  '----------------'

>>> tprint("art","white_bubble")
ⓐⓡⓣ

2. Random

Randomly select from all fonts.

Keywords : random, rand & rnd

>>> tprint("test",font="random")
 |       | 
~|~/~/(~~|~
 | \/__) | 
  

3. Random small

Randomly select from small fonts.

Keywords : rnd-small, random-small & rand-small

  • Note : New in Version 2.8
>>> tprint("test",font="rnd-small")
             
_/  _   _ _/ 
/  (- _)  /  
             

4. Random medium

Randomly select from medium fonts.

Keywords : rnd-medium, random-medium & rand-medium

  • Note : New in Version 2.8
>>> tprint("test",font="rnd-medium")
                      
  ,                ,  
 ||               ||  
=||=  _-_   _-_, =||= 
 ||  || \\ ||_.   ||  
 ||  ||/    ~ ||  ||  
 \\, \\,/  ,-_-   \\, 
                      
                      

5. Random large

Randomly select from large fonts.

Keywords : rnd-large, random-large & rand-large

  • Note : New in Version 2.8
>>> tprint("test",font="rnd-large")
                                                                    
8888888 8888888888 8 8888888888      d888888o.   8888888 8888888888 
      8 8888       8 8888          .`8888:' `88.       8 8888       
      8 8888       8 8888          8.`8888.   Y8       8 8888       
      8 8888       8 8888          `8.`8888.           8 8888       
      8 8888       8 888888888888   `8.`8888.          8 8888       
      8 8888       8 8888            `8.`8888.         8 8888       
      8 8888       8 8888             `8.`8888.        8 8888       
      8 8888       8 8888         8b   `8.`8888.       8 8888       
      8 8888       8 8888         `8b.  ;8.`8888       8 8888       
      8 8888       8 888888888888  `Y8888P ,88P'       8 8888       


6. Random xlarge

Randomly select from xlarge fonts.

Keywords : rnd-xlarge, random-xlarge & rand-xlarge

  • Note : New in Version 2.8
>>> tprint("test","rnd-xlarge")
      _____                    _____                    _____                _____          
     /\    \                  /\    \                  /\    \              /\    \         
    /::\    \                /::\    \                /::\    \            /::\    \        
    \:::\    \              /::::\    \              /::::\    \           \:::\    \       
     \:::\    \            /::::::\    \            /::::::\    \           \:::\    \      
      \:::\    \          /:::/\:::\    \          /:::/\:::\    \           \:::\    \     
       \:::\    \        /:::/__\:::\    \        /:::/__\:::\    \           \:::\    \    
       /::::\    \      /::::\   \:::\    \       \:::\   \:::\    \          /::::\    \   
      /::::::\    \    /::::::\   \:::\    \    ___\:::\   \:::\    \        /::::::\    \  
     /:::/\:::\    \  /:::/\:::\   \:::\    \  /\   \:::\   \:::\    \      /:::/\:::\    \ 
    /:::/  \:::\____\/:::/__\:::\   \:::\____\/::\   \:::\   \:::\____\    /:::/  \:::\____\
   /:::/    \::/    /\:::\   \:::\   \::/    /\:::\   \:::\   \::/    /   /:::/    \::/    /
  /:::/    / \/____/  \:::\   \:::\   \/____/  \:::\   \:::\   \/____/   /:::/    / \/____/ 
 /:::/    /            \:::\   \:::\    \       \:::\   \:::\    \      /:::/    /          
/:::/    /              \:::\   \:::\____\       \:::\   \:::\____\    /:::/    /           
\::/    /                \:::\   \::/    /        \:::\  /:::/    /    \::/    /            
 \/____/                  \:::\   \/____/          \:::\/:::/    /      \/____/             
                           \:::\    \               \::::::/    /                           
                            \:::\____\               \::::/    /                            
                             \::/    /                \::/    /                             
                              \/____/                  \/____/                              
                                                                                            

7. Wizard

This mode consider length of input text to select font

☑️ Support of 95 ASCII characters guaranteed

Keywords : wizard, wiz & magic

  • Note : New in Version 2.9
>>> tprint("1","wizard")
    88 
  ,d88 
888888 
    88 
    88 
    88 
    88 
    88 
    88 
    88 
       
            

>>> tprint("1"*5,"wizard")
d88  d88  d88  d88  d88  
 88   88   88   88   88  
 88   88   88   88   88  
 88   88   88   88   88  
 88   88   88   88   88  
d88P d88P d88P d88P d88P 
                         
                         

>>> tprint("1"*15,"wizard")
                                             
                                             
 #  #  #  #  #  #  #  #  #  #  #  #  #  #  # 
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## 
 #  #  #  #  #  #  #  #  #  #  #  #  #  #  # 
 #  #  #  #  #  #  #  #  #  #  #  #  #  #  # 
 #  #  #  #  #  #  #  #  #  #  #  #  #  #  # 
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## 
                                             
                                             

8. Random Non-ASCII

Randomly select from Non-ASCII fonts.

Keywords : random-na, rand-na & rnd-na

  • Note : New in Version 3.4
>>> tprint("test","random-na")
₮Ɇ₴₮
>>> tprint("test","random-na")
ʇsǝʇ

9. Mix Non-ASCII

Randomly mix Non-ASCII fonts.

Keywords : mix

  • Note : New in Version 3.7
>>> tprint("test","mix")
†Ɛѕ†
>>> tprint("test","mix")
tᏋѕt
>>> tprint("test","mix")
꓄єร꓄

⚠️ Non-ASCII fonts are only available in Font name, Random Non-ASCII and Mix modes

Typo-tolerance

Levenshtein distance used in this project. (Version >0.9)

>>> aprint("happi")  # correct --> aprint("happy"), error < |artname|/2
 ۜ\(סּںסּَ` )/ۜ 
>>> Art=art("birds2222222",number=1) # correct --> Art=art("birds",number=1), error >= |artname|/2
Traceback (most recent call last):
	...
art.art.artError: Invalid art name.
>>> aprint("happi231")  # correct --> aprint("happy"), error < |artname|/2
⎦˚◡˚⎣ 
>>> aprint("happi2312344") # correct --> aprint("happy"), error >= |artname|/2
Traceback (most recent call last):
	...
art.art.artError: Invalid art name.
>>> Art=text2art("test",font="black") # correct --> Art=text2art("test",font="block")
>>> print(Art)

 .----------------.  .----------------.  .----------------.  .----------------.
| .--------------. || .--------------. || .--------------. || .--------------. |
| |  _________   | || |  _________   | || |    _______   | || |  _________   | |
| | |  _   _  |  | || | |_   ___  |  | || |   /  ___  |  | || | |  _   _  |  | |
| | |_/ | | \_|  | || |   | |_  \_|  | || |  |  (__ \_|  | || | |_/ | | \_|  | |
| |     | |      | || |   |  _|  _   | || |   '.___`-.   | || |     | |      | |
| |    _| |_     | || |  _| |___/ |  | || |  |`\____) |  | || |    _| |_     | |
| |   |_____|    | || | |_________|  | || |  |_______.'  | || |   |_____|    | |
| |              | || |              | || |              | || |              | |
| '--------------' || '--------------' || '--------------' || '--------------' |
 '----------------'  '----------------'  '----------------'  '----------------'

>>> tprint("test",font="cybermedum")   # correct --> tprint("test",font="cybermedium")
___ ____ ____ ___ 
 |  |___ [__   |  
 |  |___ ___]  |  
                  
   

Set defaults

set_default function is added in Version 2.2 in order to change default values.

>>> help(set_default)
Help on function set_default in module art.art:

set_default(font='standard', chr_ignore=True, filename='art', print_status=True, overwrite=False, decoration=None)
    Change text2art, tprint and tsave default values.
    
    :param font: input font
    :type font:str
    :param chr_ignore: ignore not supported character
    :type chr_ignore:bool
    :param filename: output file name (only tsave)
    :type filename:str
    :param print_status : save message print flag (only tsave)
    :type print_status:bool
    :param overwrite : overwrite the saved file if true (only tsave)
    :type overwrite:bool
    :param decoration: input decoration
    :type decoration:str
    :return: None

>>> tprint("test")
 _               _   
| |_   ___  ___ | |_ 
| __| / _ \/ __|| __|
| |_ |  __/\__ \| |_ 
 \__| \___||___/ \__|
                     

>>> set_default(font="italic")
>>> tprint("test")
             
_/  _   _ _/ 
/  (- _)  /  
             

  • Note : Functions error response updated in Version 0.8

    Function Normal Output Error
    decor str raise artError
    art str raise artError
    aprint None raise artError
    tprint None raise artError
    tsave {"Status":bool,"Message":str} {"Status":bool,"Message":str}
    text2art str raise artError
    set_default None raise artError

Testing

  • Only ASCII fonts and arts :
python -m art test
  • All fonts, arts and decorations :
python -m art test2

CLI

  • List of arts : python -m art list or python -m art arts
  • List of fonts : python -m art fonts
  • Text : python -m art text yourtext fontname(optional)
  • Art : python -m art shape art_name or python -m art art art_name
  • Save : python -m art save yourtext fontname(optional)
  • All : python -m art all yourtext

Telegram bot

Just send your text to one of these bots. 👇👇👇👇

Try ART in your browser

  1. ART can be used online in interactive Jupyter Notebooks via the Binder service! Try it out now! :

Binder

  • Open FontList.ipynb, ArtList.ipynb and DecorList.ipynb
  • Edit and execute each part of the notes, step by step from the top panel by run button
  1. ART also can be used online in ascii-generator.site, a Django website by hermanTenuki

Screen record

Screen Record

Issues & bug reports

Just fill an issue and describe it. I'll check it ASAP! or send an email to [email protected].

  • Please complete the issue template

Dependencies

master dev
Requirements Status Requirements Status

License

FOSSA Status

Reference

  1. FIGlet
  2. 1 Line Art
  3. Text To ASCII
  4. ASCII Generator
  5. Asky
  6. Flipyourtext
  7. YayText
  8. Coolletters
  9. Instagram Fonts
  10. Cool Symbol
  11. ASCII Moji
  12. SMILEY COOL
  13. SPREZZ
  14. Textart4u
  15. Chat4o
  16. Findwebapp
  17. Hubpages
  18. ASCII-ART
  19. Messletters
  20. Webestools
  21. ASCII-emoji
  22. Instagram Fonts2
  23. Emotiworld

Donate to our project

Bitcoin :

12Xm1qL4MXYWiY9sRMoa3VpfTfw6su3vNq

Payping (For Iranian citizens)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].