import mimetypes

hasLibOPK = False
try:
    import OPK
    hasLibOPK = True
except Exception as ex:
    print("libopk is not available")


def getMetadataForExec(opk, ex):
    if(not hasLibOPK):
        return None

    meta = OPK.read_metadata(opk)       

    for desktop in meta:
        try:
            name = desktop
            exe =  meta[desktop]["Desktop Entry"]["Exec"].lower()

            if(ex == exe):
                print("Found meta from " + opk + " " + ex + " " + name)
                return name

         
        except Exception as ex:
            print("Could not load OPK " + str(ex))
    
    return None

def getFileExtensions(mime):
    if(not mimetypes.inited):
        mimetypes.init()
        initKnowMimetypes()

    types = mime.split(";")

    result = []

    for t in types:
        if(t):
            res = mimetypes.guess_all_extensions(t)
            #print("getting extensions for mime " + str(t) + " " + str(res))
            result.extend(res)

    if(len(result) == 0):
        result.append(".*")
        
    return result
         

def initKnowMimetypes():
    mimetypes.add_type("application/x-nes-rom", ".nes")
    mimetypes.add_type("application/x-snes-rom", ".sfc")
    mimetypes.add_type("application/x-gameboy-rom", ".gb")
    mimetypes.add_type("application/x-gbc-rom", ".gbc")
    mimetypes.add_type("application/x-genesis-rom" ,".md")
    mimetypes.add_type("application/x-megadrive-rom", ".md")
    mimetypes.add_type("application/x-genesis-rom" ,".32x")
    mimetypes.add_type("application/x-megadrive-rom", ".32x")

    mimetypes.add_type("application/x-sms-rom", ".sms")

    mimetypes.add_type("application/x-cd-image", ".bin")
    mimetypes.add_type("application/x-cd-image", ".chd")
    mimetypes.add_type("application/x-cd-image", ".cue")
    mimetypes.add_type("application/x-cd-image", ".pbp")


    mimetypes.add_type("application/x-ms-dos-executable", ".exe")
    mimetypes.add_type("application/x-ms-dos-executable", ".com")

    mimetypes.add_type("application/x-ms-dos-program", ".exe")
    mimetypes.add_type("application/x-ms-dos-program", ".com")

    mimetypes.add_type("application/x-ms-dos-batch", ".bat")


    mimetypes.add_type("application/x-gzip", ".zip")
    mimetypes.add_type("application/gzip", ".zip")