Copy Link
Add to Bookmark
Report
NULL mag Issue 06 21 Embed ansi to Python
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 <filename>
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 <ansifile> | 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.