Convert64
Your rating: Now say why...

(1) 5

Converts Base64 files to binary, and vice versa.   Commercial ($2.99)
Add to my Watch List
Email me when discounted
Convert64 helps users convert Base64 files to binary and vice versa. It also helps users figure out the file type of a file that is missing its extension. Convert64 can also wrap your base64 encoded data in CSS or HTML. Convert64 will even estimate the final size of the base64 encoded data before you start the conversion process.
What's New
Version 2.1:
  • Updated to include help, image manipulation functionality and much more.
Requirements
  • Intel, 64-bit processor
  • OS X 10.6 or later



MacUpdate - Convert64



Convert64 User Discussion (Write a Review)
ver. 2.x:
(1)
Your rating: Now say why...
Overall:
(1)

sort: smiles | time
burypromote

-1

LeonBe;mont2070 reviewed on 20 Feb 2014
I've wrote one:
|#!/usr/bin/env python2.7
|
|from bs4 import BeautifulSoup as bs
|import base64 as b64
|import urllib
|import os
|import re
|import unicodedata
|import inspect
|
|cssContainer = 'n'
|jsContainer = 'n'
|imgSrcContainer = r'data:image/{0};base64,{1}'
|cssUriContainer = r'data:image/png;base64,{0}'
|cssImgPattern = re.compile(r'''url((["']?)(.+?.png)1)''', flags=re.I)
|
|def printpath(path):
| path, lengthList = terminalWidth(path)
| #print lengthList
| if sum(lengthList) > 76:
| total = 0
| for i in xrange(len(lengthList)-1, -1, -1):
| if total < = 73:
| total+=lengthList[i]
| else:
| cutoffset = i+2
| break
| path = u'...' + path[cutoffset:]
| print path
|
|def terminalWidth(string, encoding='utf-8'):
| if str in inspect.getmro(string.__class__):
| string = string.decode(encoding)
| charWidthList = [2 if unicodedata.east_asian_width(i) in ('W', 'F') else 1
| for i in string ]
| return (string,charWidthList)
|
|def get_encoding(soup):
| encod = soup.meta.get('charset')
| if encod == None:
| encod = soup.meta.get('content-type')
| if encod == None:
| content = soup.meta.get('content')
| match = re.search('charset=(.*)', content)
| if match:
| encod = match.group(1)
| else:
| encod = 'utf-8'
| return encod
|
|def embedCSS(soup, rootpath, encoding):
| for e in soup(['style', 'link']):
| try:
| if e.name == 'style':
| if e['type'] == 'text/css':
| path = os.path.join(
| rootpath,urllib.unquote(e['src'].encode(encoding)))
| del e['src']
| #e.extract()
| else:
| continue
| elif e.name == 'link':
| if 'stylesheet' in e.get('rel', '') or
| e.get('type', '') == 'text/css':
| path = os.path.join(
| rootpath, urllib.unquote(e['href'].encode(encoding)))
| del e['href']
| #e.extract()
| else:
| continue
| except KeyError:
| continue
| try:
| cssrootpath = os.path.dirname(path)
| csslines = []
| with open(path) as cssf:
| for line in cssf:
| while True:
| urlpattern = cssImgPattern.search(line)
| if urlpattern is None:
| break
| s, e = urlpattern.regs[2]
| pngpath = os.path.join(cssrootpath,urlpattern.group(2))
| try:
| pngdata = cssUriContainer.format(
| b64.b64encode(open(pngpath, 'rb').read()))
| except IOError:
| pngdata = ''
| line = line[:s] + pngdata + line[e:]
| csslines.append(line)
| printpath(path)
| soup.head.append(bs(cssContainer.format(''.join(csslines))).style)
| except IOError:
| continue
|
|
|def embedJS(soup, rootpath, encoding):
| for e in soup('script'):
| try:
| path = os.path.join(
| rootpath, urllib.unquote(e['src'].encode(encoding)))
| del e['src']
| #e.extract()
| except KeyError:
| continue
| try:
| soup.head.append(
| bs(jsContainer.format(open(path, 'rb').read())).script)
| printpath(path)
| except IOError:
| continue
|
|def embedImage(soup, rootpath, encoding):
| for img in soup.body.findAll('img'):
| imgpath = urllib.unquote(img['src'].encode(encoding))
| imgpath = os.path.join(rootpath, imgpath)
| imgtype = os.path.splitext(imgpath)[1].lstrip('.')
| try:
| imgb64data = b64.b64encode(open(imgpath, 'rb').read())
| except IOError:
| pass
| else:
| img['src'] = imgSrcContainer.format(imgtype, imgb64data)
| printpath(imgpath)
|
|def main(pathOfFile):
| filename, fileext = os.path.splitext(pathOfFile)
| rootpath = os.path.dirname(pathOfFile)
| soup = bs(open(pathOfFile, 'rb').read())
| encoding = get_encoding(soup).lower()
| embedCSS(soup, rootpath, encoding)
| #print soup.body
| embedJS(soup, rootpath, encoding)
| embedImage(soup, rootpath, encoding)
| open(filename+'_single_'+fileext, 'wb').write(soup.prettify(encoding))
|
|if __name__ == '__main__':
| import sys
| htmlfile = sys.argv[1]
| main(htmlfile)
[Version 2.1]


There are currently no troubleshooting comments. If you are experiencing a problem with this app, please post a comment.

There are currently no ratings. Write a comment or review now.

Downloads:1,803
Version Downloads:76
Type:Utilities : Compression
License:Commercial
Date:20 Feb 2014
Platform:Intel 64 / OS X
Price: $2.99
Overall (Version 2.x):
Features:
Ease of Use:
Value:
Stability:
Displaying 1-1 of 1
-
-
-
Please login or create a new
MacUpdate Member account
to use this feature
Watch Lists are available to
MacUpdate Desktop Members
Upgrade Now
Install with MacUpdate Desktop.
Save time moving files & cleaning
up space wasting archives.
Convert64 helps users convert Base64 files to binary and vice versa. It also helps users figure out the file type of a file that is missing its extension. Convert64 can also wrap your base64 encoded data in CSS or HTML. Convert64 will even estimate the final size of the base64 encoded data before you start the conversion process.


- -