_                _   _                 ____            _     _ 	
   / \   _ __   ___ | |_| |__   ___ _ __  |  _ \ _ __ ___ (_) __| |	
  / _ \ | '_ \ / _ \| __| '_ \ / _ \ '__| | | | | '__/ _ \| |/ _\` |	
 / ___ \| | | | (_) | |_| | | |  __/ |    | |_| | | | (_) | | (_| |	
/_/   \_\_| |_|\___/ \__|_| |_|\___|_|    |____/|_|  \___/|_|\__,_|	
                                                                bbs
  XQTRs lair...
Home // Blog // NULL emag. // Files // Docs // Tutors // GitHub repo
                                                                                
                                                                                
                                                                                
    lets see a way to embed ansi screens/logos/menus to a python script,        
    without the need to attach external files to a package. all of our          
    ansi stuff will be in the file of the script. to do so, we have first       
    to convert the ansi images/files to base64 strings.                         
                                                                                
    in linux is easy as this:  base64                                 
    the output of the command is what we want... almost... as you see below     
    we have to put all this big string between quotes and add the plus sign     
    at the end. the quickest way, is with this command:                         
                                                                                
    base64  | sed "s/^/\'/" | sed "s/$/\'+/"                          
                                                                                
    just copy/paste the output into your script, add the libraries we need,     
    like base64 and os, which are standard and you are ready to go...           
                                                                                
    just see the example commands at the end of this script example.            
                                                                                
--- copy here ----------------------------------------------------------------  
#!/usr/bin/python3                                                              
import base64                                                                   
import os                                                                       
screen = base64.b64decode( \                                                    
'ChtbNTZDG1szN23fChtbMTszMG0gICAgICAgICAgICAgICAbWzQxQxtbMDszNzs0MG0gIBtbMzZt'+ 
'39wbWzE7MzBt3BtbMDszNzs0MG0gICAgIBtbM0MbWzMzbSAbWzBtChtbMTszMG0gICAgICAgICAg'+ 
'ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgG1swOzM3OzQwbSAbWzM2bd/cG1sxOzMw'+ 
'bdwbWzA7MzY7NDBtIBtbMTszMG0gICAgICAgICAgG1swOzM3OzQwbSAbWzM2bdvb39zb3BtbMzNt'+ 
'ICDf3BtbMzA7NDNtICAgIGUbWzMzOzQwbW1hZxtbMG0KIBtbMzZtICAg3Nzc3Nzc3NwbWzE7MzBt'+ 
'3BtbMDszNzs0MG3fG1szQ9wgG1s1QyAbWzE7MzBt3BtbMDszNzs0MG0gIBtbN0MbWzE7MzBt3xtb'+ 
'MDszNzs0MG3cG1szQxtbMzZtsLAbWzM3bSAgIBtbMzZt29uystwbWzM3bSAgG1s0QxtbMzZt3xtb'+ 
'MzdtICAbWzM2bdvb29vbG1szN20gICAbWzMzbSAgG1szN20gG1szM22wsLCwsLCwsBtbMG0KG1s0'+ 
'QxtbMzZt39/f39+ysrLb29vbG1sxOzMwOzQ2bd8bWzA7MzY7NDBt3NwbWzE7MzBt3BtbMDszNzs0'+ 
'MG0gICAgIBtbMzZtstsbWzM3bSAgG1szNm3cG1szN20gG1s2QxtbMzZt29wbWzM3bSAbWzM2bbKy'+ 
'G1szN20gICAbWzM2bdvbG1sxOzQ2bSAgG1swOzM2OzQwbdsbWzM3bSAgG1s1QxtbMzZt3xtbMzdt'+ 
'IBtbMzZt29sbWzE7NDZt3xtbMDszNjs0MG3bshtbMG0KIBtbMzZtsrKy3NzcG1szN20gICAgG1sz'+ 
'QxtbMzZt39/b3NvbshtbMTszMDs0Nm3fG1swOzM3OzQwbSAbWzM2bdzb29ve2xtbMzdtIBtbN0Mb'+ 
'WzM2bdvb29zbG1szN20gICAbWzM2bdvbG1sxOzQ2bd8bWzA7MzY7NDBt29sbWzdDG1szN20gG1sz'+ 
'Nm3b3Nvb2xtbNUMbWzMxbSAbWzMzbSAgICAgG1swbQobWzNDG1szNm3f29vb3tvcG1szN20gIBtb'+ 
'MTszMG2wsLAbWzA7Mzc7NDBtICAbWzM2bdvb29vb29zf29veIBtbMzdtICAbWzE7MzBtsLCwsCAb'+ 
'WzA7Mzc7NDBtIBtbMzZt29sbWzE7NDZt3xtbMDszNjs0MG3b2xtbMzdtICAgG1szNm3b2xtbMTs0'+ 
'Nm3cG1swOzM2OzQwbdvbG1szN20gIBtbMTszMG3fG1s0N23cIBtbNDBt2yAbWzA7Mzc7NDBtIBtb'+ 
'MzZt2xtbMTs0Nm0g3N8gG1swbQogIBtbMTszMG0gG1swOzM3OzQwbSAgG1szNm3b294bWzE7NDZt'+ 
'3yAbWzA7Mzc7NDBtICAbWzE7MzA7NDdtstsbWzQwbdsgG1swOzM3OzQwbSAbWzM2bdvbG1sxOzQ2'+ 
'bd8bWzA7MzY7NDBt29sbWzE7NDZt3BtbMDszNjs0MG3b2xtbMTs0Nm3cIBtbMDszNjs0MG3bG1sz'+ 
'N20gG1szNm3cG1szN20gG1sxOzMwbSAgICAgG1swOzM3OzQwbSAgG1szNm3bG1sxOzQ2bdzfG1sw'+ 
'OzM2OzQwbdsbWzM3bSAgG1sxOzM2OzQ2bSAg39wbWzA7MzY7NDBt2xtbMzdtIN8gG1sxOzMwbSAg'+ 
'G1szQxtbMDszNzs0MG0gG1szNm3bG1sxOzQ2bd/c3xtbMDszNjs0MG3bG1szN20gIBtbMTszMG3f'+ 
'G1s0N23cICAbWzM3bd/cG1szMG0gICDc39wbWzQwbdsgG1swbQogG1sxOzMwbdzfG1swOzM3OzQw'+ 
'bSAgG1szNm3b29wbWzE7NDZtINwbWzA7Mzc7NDBtICAbWzE7MzBt29vbIBtbMDszNzs0MG0gG1sx'+ 
'OzM2bdvf2xtbNDZt3N8bWzQwbdvbG1s0Nm3cG1s0MG3b29sbWzA7Mzc7NDBtICAgG1sxOzMwOzQ3'+ 
'bbLb29vbG1s0MG0gG1swOzM3OzQwbSAbWzE7MzY7NDZt29zb3BtbMDszNjs0MG3bG1szN20gG1sz'+ 
'Nm3bG1sxOzQ2bdvb29sbWzZDG1s0MG2wsLCyshtbMDszNjs0MG3b39sbWzM3bSAgG1sxOzMwbd8b'+ 
'WzA7Mzc7NDBt39/fG1sxbd8bWzA7Mzc7NDBt39/fG1sxOzMwbd/c39wgG1swbQogG1sxOzMwbSAg'+ 
'G1swOzM3OzQwbSAgG1sxOzM2bdsbWzQ2bd/c39wbWzQwbdsbWzA7Mzc7NDBtIBtbMTszMG0gIBtb'+ 
'MDszNzs0MG0gG1sxOzMwbSAbWzA7Mzc7NDBtICAbWzE7MzZt29vb29vb29vb2xtbMDszNzs0MG0g'+ 
'ICAbWzE7MzBt2xtbNDdt29sbWzQwbSAbWzA7Mzc7NDBtICAgG1sxOzM2bdvb29vbINvb27KysLAb'+ 
'WzA7Mzc7NDBtICAbWzE7MzBtIBtbM0MbWzM2bdvb29vbG1swOzM3OzQwbSDf3AogG1sxOzMwbSAg'+ 
'ICAbWzM2bdvb29vb2xtbNEOwsLCysrLb29/f39/fG1swOzM3OzQwbSAgIBtbMTszMG2wsLAbWzA7'+ 
'Mzc7NDBtICAbWzE7MzZtsLCystvb29vb29vb2xtbM0MbWzMwbSDb2yAbWzA7Mzc7NDBtIBtbMTsz'+ 
'Nm3b29vb2yAgG1swOzM3OzQwbSAg3wogG1sxOzMwbSAgICAbWzA7Mzc7NDBtIBtbMTszNm3b29/f'+ 
'3xtbNUMbWzA7Mzc7NDBtICAbWzFt3Nzc3Nzc29vb29sbWzA7Mzc7NDBtIBtbN0MgG1sxbdzc3Nwg'+ 
'G1szNm3f39/f2yAbWzA7MzY7NDBtIBtbMTszMG0gG1swOzM3OzQwbSAbWzE7MzBt39/fG1szNm0g'+ 
'IN/b29vbG1s2QxtbMDszNzs0MG0gChtbNUMgG1sxbdzc3NvbIBtbNUMbWzA7Mzc7NDBtIBtbMW3b'+ 
'29vb29zb29vb2xtbMDszNzs0MG0gG1s3QyAbWzFt29vb29vb29vc3BtbMDszNzs0MG0gICAgG1sx'+ 
'OzMwbbCwsCAbWzM3bd8g3NwgG1szNm3fG1swOzM3OzQwbSAbWzZDICAgCiAbWzE7MzBtZXVnIRtb'+ 
'MDszNzs0MG0gG1sxbdvb2xtbNDZt29sbWzQwbdwbWzVDG1swOzM3OzQwbSAbWzFt29vb29vbG1sw'+ 
'OzM3OzQwbSAbWzFt29vb27IbWzZDG1swOzM3OzQwbSAbWzFtstvb29vf29vb29sbWzA7Mzc7NDBt'+ 
'ICAgIBtbMTszMG0gICAbWzA7Mzc7NDBtICAgG1sxbdvb29vb3BtbMDszNzs0MG3cICAgICAgIBtb'+ 
'MW2wsLCwsBtbMG0KG1s1QyAgG1sxbdvb29vbG1szQxtbMDszNzs0MG0gICAgG1sxbdvbG1s0N23b'+ 
'29sbWzA7Mzc7NDBtIBtbMW3bG1s0N23b29vbG1s3QxtbNDBt29vb29sbWzA7Mzc7NDBtIBtbMW3b'+ 
'2xtbNDdt29vbG1swOzM3OzQwbSAbWzVDICAgICDfG1sxOzQ3bd8bWzQwbdvb29vb2xtbNDdt3Btb'+ 
'NDBt3NwbWzA7Mzc7NDBt3CAgICAgICDcCiAbWzFtsLCwsCAbWzA7Mzc7NDBtIBtbMW3b29vb2xtb'+ 
'MDszNzs0MG0g3yAg3CAgG1sxbdvbG1s0N23b298bWzA7Mzc7NDBtICAbWzE7NDdt39vb29wbWzQw'+ 
'bdwbWzA7Mzc7NDBt3CAgICAbWzFt29vb29sbWzA7Mzc7NDBtICAbWzFt29sbWzQ3bdvb3BtbNDBt'+ 
'3BtbMDszNzs0MG3cICAgIBtbMW2wsLCwG1swOzM3OzQwbSAgIN8bWzFt3xtbNDdt3xtbNDBt29vb'+ 
'29vb29vb29vbG1s0N23cG1swbQrc3Nzc3CAgG1sxbdvb39wbWzQ3bd8bWzA7Mzc7NDBtICDc3yDb'+ 
'IBtbMW3b3BtbNDdt3xtbMDszNzs0MG3fINwgIN8bWzE7NDdt3xtbNDBt29sbWzQ3bdwbWzA7Mzc7'+ 
'NDBt3BtbMTs0N23c29wbWzA7Mzc7NDBtIBtbMTs0N23b29vb2xtbM0MbWzA7Mzc7NDBt3xtbMTs0'+ 
'N23fG1s0MG3bG1s0N23b29vb29wbWzQwbdzc3Nzc3BtbMDszNzs0MG3b3CAgICAgIN8bWzFt39/f'+ 
'G1s0N23fG1s0MG3b27KyshtbMG0KG1s1Q9/cIBtbMW3fG1s0N23fG1swOzM3OzQwbd8g3N8bWzND'+ 
'2yAbWzE7NDdt3xtbMDszNzs0MG3fINzfIN/cG1sxOzMwbSAbWzA7Mzc7NDBtIN8bWzFt398bWzQ3'+ 
'bd8bWzQwbdvbG1s0N23b3BtbNDBt29vb29vcG1swOzM3OzQwbdwgICDfG1sxbd/fG1s0N23f29vf'+ 
'G1swOzM3OzQwbd8bWzE7NDdt3xtbNDBt29vb29sbWzA7Mzc7NDBtICDc39/f3Nzc3CAgIBtbMW0g'+ 
'ICAgIBtbMG0KG1s2QxtbMTszMG0gG1swOzM3OzQwbd/cG1sxOzMwbSAbWzA7Mzc7NDBt3N8gG1s0'+ 
'Q9wgINzfICAgICDf3NzcICAgICAgG1sxbbKystsbWzQ3bd8bWzQwbd/fG1swOzM3OzQwbSAg3yDf'+ 
'ICAgINzfG1sxbd8bWzA7Mzc7NDBt3xtbMW3fG1swOzM3OzQwbd8gINzc3yAgICAgICDb29vb29vf'+ 
'3N8bWzlD3xtbNUMgICDc3yAgICAgIBtbNUPf39/cIN8bWzFtsLCwG1swOzM3OzQwbSAgINzfG1s0'+ 
'Q9wgIN8gIN/f39/f3xtbMTdDICAbWzE3Q98bWzE2Q9/c3Nzc3Nzf3yAKG1s1NUMbWzM2bWkgcyBz'+ 
'IHUgZSAgIBtbMUMbWzMwOzQ2bd/cIDAwNiDf3BtbMG0KG1s3MkMbWzM2bbCwsLCwsLAbWzBtCg==') 
                                                                                
# for utf8 terminals use this:                                                  
print(''.join(str(screen,"cp437")))                                             
# for cp437 terminals use this:                                                 
#os.write(1, screen)                                                            
--- stop copying here --------------------------------------------------------  
--- give credits here --------------------------------------------------------  
    i had some trouble displaying the exact ansi, in a non utf8 terminal,       
    so i had to use the os.write function for it. you can make your script      
    detect the terminal encoding and use the proper function, according         
    that.