[codebox=css file=Unbenannt.css]background: url("data:type/subtype;base64,\
R0lGODlhRgAoALMAAOnp6UJCQri4uKqqqiYmJtHR0VhYWH19fWtra/T09MXFxd3d\
3ZycnI2NjQAAAP///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78i\
IGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxu\
czp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42\
LWMwNjcgNzkuMTU3NzQ3LCAyMDE1LzAzLzMwLTIzOjQwOjQyICAgICAgICAiPiA8\
cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjIt\
cmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4\
bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnht\
cE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJl\
Zj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVm\
IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNSAoV2lu\
ZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzA4NEQyQzAxRUREMTFF\
NkI0QUU5QzQ5Q0I4RkE5MDYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzA4\
NEQyQzExRUREMTFFNkI0QUU5QzQ5Q0I4RkE5MDYiPiA8eG1wTU06RGVyaXZlZEZy\
b20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3MDg0RDJCRTFFREQxMUU2QjRB\
RTlDNDlDQjhGQTkwNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3MDg0RDJC\
RjFFREQxMUU2QjRBRTlDNDlDQjhGQTkwNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4g\
PC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38\
+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3M\
y8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2c\
m5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1s\
a2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08\
Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0M\
CwoJCAcGBQQDAgEAACH5BAAAAAAALAAAAABGACgAAAT/8MlJq7046827/2AojmRp\
nmiqrmzrvnAsz3Rt33iu71rh/ICV4PcLyACOoEpgrCGVKWZl4FA8EoSDhOogCB6F\
gMHBIBCCgQbBYYA+KYyfYSGSVg6BBD7xACCCAwRgDgdxCgFfAQ5fCFoSb1sBQQ1N\
IENECBIJYg50FT4AoAMGD4ilAxIKgo9JEwRWV50hdlOEE35EST4PA5mmpoO3rRK5\
PwWzlbcEhhJqQaC7vaWJX7yrfcMPrya0EwakZUF7uKEOvL6JqAsBqKxQDW0ll0UP\
cXRYpOs/B7rm0r9E2nEh8kUPkWQ8piU8AWwhiYYOI0qcSLGixYsYM2rcyLGjx48g\
BENeiAAAOw=="
);[/code]
type/subtype ist in diesem Fall image/gif. Firefox zeigt das Bild aber auch so an.
Also mit Zeilenumbruch vor dem eigentlichen Code und einleitendem Backslash. Dann hat man alles schön in einem Block.
Und die Option für das Backslash habe ich jetzt eingefügt. Ist aber unschöner Code.
Code: Alles auswählen
from __future__ import print_function
import argparse
import base64
ENCODERS = [
(base64.standard_b64encode, base64.standard_b64decode),
(base64.urlsafe_b64encode, base64.urlsafe_b64decode),
]
def parse_args(args=None):
parser = argparse.ArgumentParser(description='Encode and Decode base64.')
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('-e', '--encode', action='store_false', dest='decode')
group.add_argument('-d', '--decode', action='store_true')
parser.add_argument('--urlsafe', action='store_true', help='Encode urlsafe')
parser.add_argument('--line-length', help='Defaults to unlimited', default=0, type=int)
parser.add_argument('--with-backslash', action='store_true')
parser.add_argument('-i', '--infile', help='Defaults to stdin')
parser.add_argument('-o', '--outfile', help='Defaults to stdout')
parser.add_argument('args', nargs='*')
return parser.parse_args(args)
def insert_newlines(string, every):
return '\n'.join(string[i:i+every] for i in xrange(0, len(string), every))
def insert_newlines_with_backslash(string, every=64):
return '\\\n'.join(string[i:i+every] for i in xrange(0, len(string), every))
def get_input(opts):
if opts.infile is None:
instr = ' '.join(opts.args).encode()
else:
with open(opts.infile, 'r' if opts.decode else 'rb') as ifh:
instr = ifh.read()
return instr
def write_output(opts, outstr):
if opts.outfile is None:
print(outstr)
else:
with open(opts.outfile, 'wb' if opts.decode else 'w') as ofh:
ofh.write(outstr)
def main():
opts = parse_args()
instr = get_input(opts)
outstr = ENCODERS[opts.urlsafe][opts.decode](instr)
if opts.line_length > 0 and not opts.decode and not opts.with_backslash:
outstr = insert_newlines(outstr, opts.line_length)
if opts.line_length > 0 and not opts.decode and opts.with_backslash:
outstr = insert_newlines_with_backslash(outstr, opts.line_length)
write_output(opts, outstr)
if __name__ == '__main__':
main()