Skip to main content

ASCII Art Library For Python

Project description

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.

      ___           ___                 
     /  /\         /  /\          ___   
    /  /::\       /  /::\        /  /\  
   /  /:/\:\     /  /:/\:\      /  /:/  
  /  /:/~/::\   /  /:/~/:/     /  /:/   
 /__/:/ /:/\:\ /__/:/ /:/___  /  /::\   
 \  \:\/:/__\/ \  \:\/:::::/ /__/:/\:\  
  \  \::/       \  \::/~~~~  \__\/  \:\ 
   \  \:\        \  \:\           \  \:\
    \  \:\        \  \:\           \__\/
     \__\/         \__\/                
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. ;-)

Downloads

GitHub stars

Usage

1-Line 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_3=art("love_you",number=1,text="test") # 2-part art
>>> print(art_3)
»-(¯`·.·´¯)->test<-(¯`·.·´¯)-« 
>>> art(22,number=1,text="") # raise artError
Traceback (most recent call last):
        ...
art.art.artError: artname shoud have str type

  1. 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("love_you",number=1,text="test")  # 2-part art
»-(¯`·.·´¯)->test<-(¯`·.·´¯)-« 
>>> aprint("woman",number="22",text="") # raise artError
Traceback (most recent call last):
        ...
art.art.artError: number should have int type

ASCII Text

  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)
___ ____ ____ ___ 
 |  |___ [__   |  
 |  |___ ___]  | 

>>> text2art("seسسس",font=DEFAULT_FONT,chr_ignore=False) # raise artError in exception
Traceback (most recent call last):
        ...
art.art.artError: س is invalid 
             
  1. 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  # Multi-line print
ipsum 
dolor''', font="cybermedium")
_    ____ ____ ____ _  _    
|    |  | |__/ |___ |\/|    
|___ |__| |  \ |___ |  |    
                            
_ ___  ____ _  _ _  _    
| |__] [__  |  | |\/|    
| |    ___] |__| |  |    
                         
___  ____ _    ____ ____ 
|  \ |  | |    |  | |__/ 
|__/ |__| |___ |__| |  \ 


  1. 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'"}
                        
  • Note : Functions error response updated in Version 0.8
Function Normal Error
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

Typo-Tolerance

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

>>> Art=art("loveyou",number=1,text="test") # correct --> art("love_you",number=1,text="test") (distance < 3)
>>> print(Art)
»-(¯`·.·´¯)->test<-(¯`·.·´¯)-« 
>>> aprint("happi")  # correct --> aprint("happy") (distance < 3)
 ۜ\(סּںסּَ` )/ۜ 
>>> Art=art("birds2222",number=1) # correct --> Art=art("birds",number=1) (distance > 3)
>>> print(Art)
Traceback (most recent call last):
	...
art.art.artError: Invalid art name
>>> aprint("happi231")  # correct --> aprint("happy") (distance > 3)
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")
___ ____ ____ ___ 
 |  |___ [__   |  
 |  |___ ___]  |  
                  
   

CLI

  • List of arts : python -m art list
  • List of fonts : python -m art fonts
  • Test : python -m art test
  • Text : python -m art text yourtext fontname(optional)
  • Shape : python -m art shape 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. 👇👇👇👇

Screen Record

Screen Record

Issues & Bug Reports

Just fill an issue and describe it. I'll check it ASAP! or send an email to sepand@qpage.ir.

License

FOSSA Status

Reference

  1. 1 Line Art
  2. Text To ASCII

Donate to our project

Bitcoin :

12Xm1qL4MXYWiY9sRMoa3VpfTfw6su3vNq

Payping (For Iranian citizens)

Say Thanks!

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

Unreleased

1.3 - 2018-06-08

Added

  • 10 new fonts
    1. eftitalic
    2. eftiwater
    3. fourtops
    4. goofy
    5. hollywood
    6. invita
    7. italic
    8. jazmine
    9. lcd
    10. lean
  • random font mode

1.2 - 2018-06-04

Added

  • 8 new fonts
    1. barbwire
    2. bigchief
    3. binary
    4. bubble
    5. calgphy2
    6. cygnet
    7. diamond
    8. eftifont

Changed

  • Test cases modified

1.1 - 2018-05-25

Added

  • 5 new fonts
    1. peaks
    2. pawp
    3. o8
    4. nipples
    5. maxfour
  • 15 new 1-line art
    1. guitar
    2. rocket
    3. ghost
    4. hal
    5. cthulhu
    6. sat
    7. what
    8. king
    9. tron
    10. homer
    11. fox
    12. singing
    13. atish
    14. zable
    15. trumpet
  • CLI description

Changed

  • README.md modified
  • Test cases modified
  • File name bug in UNIX fixed
  • CHANGELOG.md modified

1.0 - 2018-05-20

Added

  • 15 new fonts
    1. tinker-toy
    2. straight
    3. stampatello
    4. smslant
    5. smshadow
    6. smscript
    7. smkeyboard
    8. smisome1
    9. slscript
    10. slide
    11. sblood
    12. rozzo
    13. pyramid
    14. puffy
    15. pebbles
  • Typo-Tolerance system

Changed

  • README.md modified
  • Test cases modified

0.9 - 2018-05-08

Added

  • 10 new fonts
    1. weird
    2. univers
    3. twopoint
    4. trek
    5. tombstone
    6. threepoint
    7. thick
    8. tanja
    9. swan
    10. stellar

Changed

  • MANIFEST.in modified
  • INSTALL.md modified

0.8 - 2018-03-13

Added

  • CHANGELOG

Changed

  • Functions error response
  • README.md modified
  • tsave function extension bug fixed
  • text2art response bug fixed ("\r\n")
  • setup file modified

0.7 - 2018-01-20

Added

  • 10 new fonts
    1. acrobatic
    2. alligator
    3. alligator2
    4. block2
    5. caligraphy
    6. computer
    7. digital
    8. doh
    9. eftirobot
    10. graffiti

0.6 - 2018-01-09

Added

  • all flag

0.5 - 2017-12-05

Added

  • 10 new fonts
    1. 3-d
    2. 3x5
    3. 5lineoblique
    4. alphabet
    5. banner3-D
    6. banner3
    7. banner4
    8. bell
    9. catwalk
    10. colossal

0.4 - 2017-11-11

Added

  • Telegram bot

Changed

  • Universal Text Format Added For Unix & Windows

0.3 - 2017-10-28

Added

  • Save function (tsave)
  • chr_ignore flag
  • 10 new fonts
    1. banner
    2. avatar
    3. basic
    4. bulbhead
    5. chunky
    6. coinstak
    7. contessa
    8. contrast
    9. cyberlarge
    10. cybermedium
    11. doom
    12. dotmatrix
    13. drpepper
    14. epic
    15. fuzzy
    16. isometric1
    17. isometric2
    18. isometric3
    19. isometric4
    20. larry3d
    21. nancyj
    22. ogre
    23. rectangles
    24. roman
    25. rounded
    26. rowancap
    27. script
    28. serifcap
    29. shadow
    30. slant
    31. speed
    32. starwars
    33. stop
    34. thin
    35. usaflag
  • overall_stat

Changed

  • Space bug fixed

0.2 - 2017-10-10

Added

  • Standard font

Changed

  • Minor bugs fixed

Changed

  • statistic_result to class_stat
  • params() to stat()

0.1 - 2017-10-04

Added

  • Block font
  • 1-Line art
  • CLI commands

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

art-1.3.tar.gz (169.7 kB view details)

Uploaded Source

Built Distribution

art-1.3-py2.py3-none-any.whl (154.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file art-1.3.tar.gz.

File metadata

  • Download URL: art-1.3.tar.gz
  • Upload date:
  • Size: 169.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for art-1.3.tar.gz
Algorithm Hash digest
SHA256 86bc59a68a1f91f8fb7c69c5a2a604175d3bcad2e2cf880083bbd23a020cf434
MD5 0fc20184bf6f564c2ea3c8ef27473359
BLAKE2b-256 2d1649a3ebfcbee5ecc6522f07fee620f83cf564ce7052a06dd273dca21913af

See more details on using hashes here.

File details

Details for the file art-1.3-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for art-1.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 7e07e9dd8ead774820c87594cc75690e73b5bfc5e1742c31df66ee61247dc951
MD5 42f609c3cd80d524e5e591b2779e2d0a
BLAKE2b-256 0a2204ce072209314584bca201fbc3f764d55ff736c0dcf416b0ad9d2a68cda3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page