# -*- coding: utf-8 -*-
import os, sqlite3
"""Walks through the all the Firefox profiles in current user account and cleans all
*.sqlite files with "vacuum". It makes firefox faster then often. Should work on Linux, too,
when properly changed constants."""
# -------------- constants -----------------------------------------
systemEncoding="mbcs"
profileUser= unicode(os.environ["USERPROFILE"], systemEncoding)
profileApp = unicode(os.environ["APPDATA"], systemEncoding) + ur"\Mozilla\Firefox\Profiles"
# -------------- functions -----------------------------------------
def searchProfil(profileApp):
"all firefox profiles"
for profile in os.listdir(profileApp):
profileFull=os.path.join(profileApp, profile)
searchSqlite(profileFull)
def searchSqlite(profile):
"all sqlite file in each firefox profile"
sq=[os.path.join(profile,s) for s in os.listdir(profile) if s.endswith(".sqlite")]
print "\n..."+profile[len(profileUser):]
for s in sq:
dirName, fileName=os.path.split(s)
conn = sqlite3.connect(s)
oldSize=os.path.getsize(s)
print fileName+":",
try:
c=conn.cursor()
c.execute("VACUUM") # this is the thing
c.close()
print "done.",
print "%.1f%%" % (os.path.getsize(s)*1.0/oldSize*100)
except:
print "error."
# ----------------- main -------------------------------------------
if __name__=="__main__":
if os.path.isdir(profileApp):
searchProfil(profileApp)
else:
print "Not exists:", profileApp