import urllib2
import zipfile
import subprocess
import sys
import os

def pip_install(package):
    subprocess.call([sys.executable, "-m", "pip", "install", package])

print "installing requests"
pip_install('requests')
import requests

print "downloading pybass"
filedata = urllib2.urlopen('http://master.dl.sourceforge.net/project/pybass/pybass_055.zip')
datatowrite = filedata.read()

with open('pybass_055.zip', 'wb') as f:  
    f.write(datatowrite)
    f.close()

print "extracting pybass"
zip_ref = zipfile.ZipFile('pybass_055.zip', 'r')
zip_ref.extractall()
zip_ref.close()

print "renaming pybass.py"
if os.path.exists("pybass/__init__.py"): os.remove('pybass/__init__.py')
os.rename('pybass/pybass.py', 'pybass/__init__.py')


print "downloading bass"
filedata = urllib2.urlopen('http://us.un4seen.com/files/bass24.zip')
datatowrite = filedata.read()

with open('bass24.zip', 'wb') as f:  
    f.write(datatowrite)
    f.close()

print "extracting bass"
zip_ref = zipfile.ZipFile('bass24.zip', 'r')
zip_ref.extract('bass.dll')
zip_ref.close()

print "downloading bassopus"
filedata = urllib2.urlopen('http://us.un4seen.com/files/bassopus24.zip')
datatowrite = filedata.read()

with open('bassopus24.zip', 'wb') as f:  
    f.write(datatowrite)
    f.close()

print "extracting bassopus"
zip_ref = zipfile.ZipFile('bassopus24.zip', 'r')
zip_ref.extract('bassopus.dll')
zip_ref.close()

print "installing apng"
pip_install("apng")

try:
    from PIL import Image
    if Image.__version__ != "5.3.0":
        jm = raw_input("Pillow version 5.3.0 is recommended for compatibility with AO2XP; You have version %s\nReplace with version 5.3.0? (Y/N) > " % Image.__version__).lower()
        if jm == "y":
            print "installing Pillow 5.3.0"
            pip_install("Pillow==5.3.0")
    else:
        print "Pillow 5.3.0 already exists, skipping"

except ImportError:
    print "installing Pillow 5.3.0"
    pip_install("Pillow==5.3.0")


print "downloading pyqt4"
filedata = requests.get('http://raw.githubusercontent.com/dhb52/python-lib/master/PyQt4-4.11.4-cp27-cp27m-win32.whl')  
datatowrite = filedata.content

with open('PyQt4-4.11.4-cp27-cp27m-win32.whl', 'wb') as f:  
    f.write(datatowrite)
    f.close()


print "installing pyqt4"
pip_install('PyQt4-4.11.4-cp27-cp27m-win32.whl')

print "installing pyinstaller"
pip_install('pyinstaller')

print "done"
