# -*- coding: cp1252 -*-
import httplib, urllib, urlparse

class MensajeriaMultimediaWeb :

    login = ''
    user = ''
    sk = ''
    cookie = ''
    server = 'www.multimedia.movistar.es'

    def Login(self, login, pwd) :
        """Realiza el login al servicio MMS
            Entrada:  login=cadena con el numero de telefono,
                      pwd=cadena con el password de acceso a la web"""

        print 'Iniciando Login... (http://' + self.server + '/)'

        # Intentamos entrar en www.multimedia.movistar.es para que nos diga a cual tenemos que ir
        headers = {"User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection" :  "Keep-Alive"}
        conn=httplib.HTTPConnection(self.server)
        conn.request ("GET", "/", None, headers)
        resp=conn.getresponse()
        if resp.status == 302 :
            respuesta=resp.read()

            ## Nos redirecionan (imagino que al servidor con menos carga)
            location = ''
            headresp=resp.getheaders()
            for n in headresp :
                if n[0] == 'location' :
                    location = n[1]

            print resp.status, ' => ', location
            components = urlparse.urlsplit(location)
            server = components[1]
            self.server = server

        self.login = login

        # Enviamos los datos de login
        params = urllib.urlencode ({'source': 'olduid', 'TM_ACTION': 'LOGIN', 'TM_LOGIN': self.login, 'TM_PASSWORD': pwd})
        headers = {"Content-type":"application/x-www-form-urlencoded", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection" :  "Keep-Alive"}
        conn=httplib.HTTPConnection(self.server)
        conn.request ("POST", "/login", params, headers)
        resp=conn.getresponse()
        if resp.status == 302 :
            respuesta=resp.read()

            ## Nos redirecionan y nos dan una cookie (la necesitaremos para las peticiones posteriores)
            location = ''
            cookie = ''
            headresp=resp.getheaders()
            for n in headresp :
                if n[0] == 'location' :
                    location = n[1]
                elif n[0] == 'set-cookie' :
                    cookie = n[1]

            print resp.status, ' => ', location
            components = urlparse.urlsplit(location)
            server = components[1]
            path = components[2]

            cookieList = cookie.split(';')
            cookie = cookieList[0]  # Usamos la primera parte de la lista porque después vienen las condiciones
            self.cookie = cookie
            print '\tCookie: ' + self.cookie

            # Tenemos que conservar los valores uid y sk para el resto de las peticiones
            variables = components[3].split('&')
            for n in variables :
                lista = n.split('=')
                if lista[0] == 'uid' :
                    self.user = lista[1]
                elif lista[0] == 'sk' :
                    self.sk = lista[1]
                elif lista[0] == 'error' :
                    print 'Se ha producido un error (' + lista[1] + ')'

            print '\tuid: ' + self.user
            print '\tsk: ' + self.sk

            if self.user != '' :
                params2 = urllib.urlencode ({'sk': self.sk, 'uid': self.user, 'source': '', 'olduid': ''})
                headers2 = {"Accept": "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection" :  "Keep-Alive","Cookie" : self.cookie}
                conn2=httplib.HTTPConnection(server)
                conn2.request ("GET", '/main/?'+params2, None, headers2)
                resp2=conn2.getresponse()

                if resp2.status == 200 :
                    params3 = urllib.urlencode ({'uid': self.user, 'sk': self.sk})
                    headers3 = {"Accept": "*/*", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection" :  "Keep-Alive","Cookie" : self.cookie}
                    conn3=httplib.HTTPConnection(self.server)
                    conn3.request("GET", '/compose/send?'+params3, None, headers3)
                    resp3=conn3.getresponse()
                    status3 = resp3.status
                    respuesta3=resp3.read()

                    conn3.close()

                conn2.close()

        conn.close()
        return self.user

    def InsertaImagen(self, nombreObj, pathObj) :
        """Inserta un objeto en el mensaje MMS
            Entrada:  nombreObj=cadena con el nombre del objeto,
                      pathObj=cadena con el path local del archivo"""

        listaContentType = {'gif': 'image/gif', 'jpg': 'image/pjpeg', 'jpeg': 'image/pjpeg', 'png': 'image/x-png', 'bmp': 'image/bmp'} # en principio sólo enviaremos estos tipos
        path = pathObj.split('.')
        extension = path[-1] # usando números negativos recorremos la lista en orden inverso (el elemento -1 es el último)
        contentType = listaContentType[extension]

        print 'Insertando imagen...'

        params2 = urllib.urlencode ({'uid': self.user, 'sk': self.sk, 'folderid': '', 'uploadtofolder': 'false', 'foldertype': '1', 'rnd': '74065'})
        referer = 'http://' + self.server + '/folders/upload?uid=' + self.user + '&sk=' + self.sk + '&folderid=&uploadtofolder=false&foldertype=1'
        headers2 = {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection": "Keep-Alive", "Cookie": self.cookie, 'Referer': referer}
        conn2=httplib.HTTPConnection(self.server)
        conn2.request("GET", '/folders/upload_frame?' + params2, None, headers2)
        resp2=conn2.getresponse()

        if resp2.status == 200 :

            separador="---------------------------7d77df567a4b9"

            # generamos los datos del objeto
            userPart = '--' + separador + '\r\nContent-Disposition: form-data; name="user"\r\n\r\n34' + self.login + '\r\n'
            limitPart = '--' + separador + '\r\nContent-Disposition: form-data; name="limit"\r\n\r\n307200\r\n'

            urlReturn = 'http://' + self.server + '/folders/upload_close?uid=' + self.user + '&sk=' + self.sk + '&uploadtofolder=false'
            urlReturnPart = '--' + separador + '\r\nContent-Disposition: form-data; name="url_return"\r\n\r\n' + urlReturn +'\r\n'

            namePart = '--' + separador + '\r\nContent-Disposition: form-data; name="name"\r\n\r\n' + nombreObj + '\r\n'
            filenamePart = '--' + separador + '\r\nContent-Disposition: form-data; name="filename"; filename="' + pathObj + '"\r\nContent-Type: ' + contentType + '\r\n\r\n'

            final = '\r\n--' + separador + '--\r\n'

            f=open(pathObj, 'rb')
            contenido = f.read()
            f.close()
            data = userPart + limitPart + urlReturnPart + namePart + filenamePart + contenido + final

            # es necesario crear la cabecera Referer con los parámetros de la petición anterior
            referer = 'http://' + self.server + '/folders/upload_frame?uid=' + self.user + '&sk=' + self.sk + '&folderid=&uploadtofolder=false&foldertype=1&rnd=74065'

            contentType = "multipart/form-data; boundary="+separador
            headers = {"Content-type": contentType, "Accept-Language": "es", "Accept": "*/*", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection": "Keep-Alive", "Accept-Encoding": "gzip, deflate", "Cache-Control": "no-cache", "Cookie": self.cookie, "Referer": referer}

            conn=httplib.HTTPConnection(self.server)
            conn.request ("POST", "/mas/messaging_as/temporalcontentservlet", data, headers)
            resp=conn.getresponse()
            respuesta = resp.read()

            # Tenemos que recibir la cabecera oid con el identificador del objeto insertado
            oid = ''
            headresp=resp.getheaders()
            for n in headresp :
                if n[0] == 'oid' :
                    oid = n[1]
            print '\toid: ' + oid

            if oid != '' :
                print '\tImagen insertada'
                params3 = urllib.urlencode ({'uploadtofolder': 'false', 'uid': self.user, 'sk': self.sk, 'status': 'success', 'oid': oid})
                referer = 'http://' + self.server + '/folders/upload?uid=' + self.user + '&sk=' + self.sk + '&folderid=&uploadtofolder=false&foldertype=1'
                headers3 = {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection": "Keep-Alive", "Cookie": self.cookie, 'Referer': referer}
                conn3=httplib.HTTPConnection(self.server)
                conn3.request("GET", '/folders/upload_close?' + params3, None, headers3)
                resp3=conn3.getresponse()

                conn3.close()

                params4 = urllib.urlencode ({'uid': self.user, 'sk': self.sk, 'slide_num': '1', 'function_name': 'img', 'value': oid})
                referer = 'http://' + self.server + '/compose?uid=' + self.user + '&sk=' + self.sk + '&fr=ns&pathstring=+:+Env%EDo+Mensaje+MultiMedia&adultcheckparam=no'
                headers4 = {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection": "Keep-Alive", "Cookie": self.cookie, 'Referer': referer}
                conn4=httplib.HTTPConnection(self.server)
                conn4.request("GET", '/compose/ms?' + params4, None, headers4)
                resp4=conn4.getresponse()

                conn4.close()

            conn.close()

        conn2.close()

    def InsertaAudio(self, nombreObj, pathObj) :
        """Inserta un objeto en el mensaje MMS
            Entrada:  nombreObj=cadena con el nombre del objeto,
                      pathObj=cadena con el path local del archivo"""

        listaContentType = {'mid': 'audio/mid', 'wav': 'audio/wav', 'mp3': 'audio/mpeg'} # en principio sólo enviaremos estos tipos
        path = pathObj.split('.')
        extension = path[-1] # usando números negativos recorremos la lista en orden inverso (el elemento -1 es el último)
        contentType = listaContentType[extension]

        print 'Insertando audio...'

        params2 = urllib.urlencode ({'uid': self.user, 'sk': self.sk, 'folderid': '', 'uploadtofolder': 'false', 'foldertype': '2', 'rnd': '74065'})
        referer = 'http://' + self.server + '/folders/upload?uid=' + self.user + '&sk=' + self.sk + '&folderid=&uploadtofolder=false&foldertype=2'
        headers2 = {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection": "Keep-Alive", "Cookie": self.cookie, 'Referer': referer}
        conn2=httplib.HTTPConnection(self.server)
        conn2.request("GET", '/folders/upload_frame?' + params2, None, headers2)
        resp2=conn2.getresponse()

        if resp2.status == 200 :

            separador="---------------------------7d77df567a4b9"

            # generamos los datos del objeto
            userPart = '--' + separador + '\r\nContent-Disposition: form-data; name="user"\r\n\r\n34' + self.login + '\r\n'
            limitPart = '--' + separador + '\r\nContent-Disposition: form-data; name="limit"\r\n\r\n307200\r\n'

            urlReturn = 'http://' + self.server + '/folders/upload_close?uid=' + self.user + '&sk=' + self.sk + '&uploadtofolder=false'
            urlReturnPart = '--' + separador + '\r\nContent-Disposition: form-data; name="url_return"\r\n\r\n' + urlReturn +'\r\n'

            namePart = '--' + separador + '\r\nContent-Disposition: form-data; name="name"\r\n\r\n' + nombreObj + '\r\n'
            filenamePart = '--' + separador + '\r\nContent-Disposition: form-data; name="filename"; filename="' + pathObj + '"\r\nContent-Type: ' + contentType + '\r\n\r\n'

            final = '\r\n--' + separador + '--\r\n'

            f=open(pathObj, 'rb')
            contenido = f.read()
            f.close()
            data = userPart + limitPart + urlReturnPart + namePart + filenamePart + contenido + final

            # es necesario crear la cabecera Referer con los parámetros de la petición anterior
            referer = 'http://' + self.server + '/folders/upload_frame?uid=' + self.user + '&sk=' + self.sk + '&folderid=&uploadtofolder=false&foldertype=2&rnd=74065'

            contentType = "multipart/form-data; boundary="+separador
            headers = {"Content-type": contentType, "Accept-Language": "es", "Accept": "*/*", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection": "Keep-Alive", "Accept-Encoding": "gzip, deflate", "Cache-Control": "no-cache", "Cookie": self.cookie, "Referer": referer}

            conn=httplib.HTTPConnection(self.server)
            conn.request ("POST", "/mas/messaging_as/temporalcontentservlet", data, headers)
            resp=conn.getresponse()
            respuesta = resp.read()

            # Tenemos que recibir la cabecera oid con el identificador del objeto insertado
            oid = ''
            headresp=resp.getheaders()
            for n in headresp :
                if n[0] == 'oid' :
                    oid = n[1]
            print '\toid: ' + oid

            if oid != '' :
                print '\tAudio insertado'
                params3 = urllib.urlencode ({'uploadtofolder': 'false', 'uid': self.user, 'sk': self.sk, 'status': 'success', 'oid': oid})
                referer = 'http://' + self.server + '/folders/upload?uid=' + self.user + '&sk=' + self.sk + '&folderid=&uploadtofolder=false&foldertype=2'
                headers3 = {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection": "Keep-Alive", "Cookie": self.cookie, 'Referer': referer}
                conn3=httplib.HTTPConnection(self.server)
                conn3.request("GET", '/folders/upload_close?' + params3, None, headers3)
                resp3=conn3.getresponse()

                conn3.close()

                params4 = urllib.urlencode ({'uid': self.user, 'sk': self.sk, 'slide_num': '1', 'function_name': 'audio', 'value': oid})
                referer = 'http://' + self.server + '/compose?uid=' + self.user + '&sk=' + self.sk + '&fr=ns&pathstring=+:+Env%EDo+Mensaje+MultiMedia&adultcheckparam=no'
                headers4 = {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection": "Keep-Alive", "Cookie": self.cookie, 'Referer': referer}
                conn4=httplib.HTTPConnection(self.server)
                conn4.request("GET", '/compose/ms?' + params4, None, headers4)
                resp4=conn4.getresponse()

                conn4.close()

            conn.close()

        conn2.close()

    def InsertaVideo(self, nombreObj, pathObj) :
        """Inserta un objeto en el mensaje MMS
            Entrada:  nombreObj=cadena con el nombre del objeto,
                      pathObj=cadena con el path local del archivo"""

        listaContentType = {'avi': 'video/avi', 'asf': 'video/x-ms-asf', 'mpg': 'video/mpeg', 'mpeg': 'video/mpeg', 'wmv': 'video/x-ms-wmv'} # en principio sólo enviaremos estos tipos
        path = pathObj.split('.')
        extension = path[-1] # usando números negativos recorremos la lista en orden inverso (el elemento -1 es el último)
        contentType = listaContentType[extension]

        print 'Insertando vídeo...'

        params2 = urllib.urlencode ({'uid': self.user, 'sk': self.sk, 'folderid': '', 'uploadtofolder': 'false', 'foldertype': '3', 'rnd': '74065'})
        referer = 'http://' + self.server + '/folders/upload?uid=' + self.user + '&sk=' + self.sk + '&folderid=&uploadtofolder=false&foldertype=3'
        headers2 = {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection": "Keep-Alive", "Cookie": self.cookie, 'Referer': referer}
        conn2=httplib.HTTPConnection(self.server)
        conn2.request("GET", '/folders/upload_frame?' + params2, None, headers2)
        resp2=conn2.getresponse()

        if resp2.status == 200 :

            separador="---------------------------7d77df567a4b9"

            # generamos los datos del objeto
            userPart = '--' + separador + '\r\nContent-Disposition: form-data; name="user"\r\n\r\n34' + self.login + '\r\n'
            limitPart = '--' + separador + '\r\nContent-Disposition: form-data; name="limit"\r\n\r\n307200\r\n'

            urlReturn = 'http://' + self.server + '/folders/upload_close?uid=' + self.user + '&sk=' + self.sk + '&uploadtofolder=false'
            urlReturnPart = '--' + separador + '\r\nContent-Disposition: form-data; name="url_return"\r\n\r\n' + urlReturn +'\r\n'

            namePart = '--' + separador + '\r\nContent-Disposition: form-data; name="name"\r\n\r\n' + nombreObj + '\r\n'
            filenamePart = '--' + separador + '\r\nContent-Disposition: form-data; name="filename"; filename="' + pathObj + '"\r\nContent-Type: ' + contentType + '\r\n\r\n'

            final = '\r\n--' + separador + '--\r\n'

            f=open(pathObj, 'rb')
            contenido = f.read()
            f.close()
            data = userPart + limitPart + urlReturnPart + namePart + filenamePart + contenido + final

            # es necesario crear la cabecera Referer con los parámetros de la petición anterior
            referer = 'http://' + self.server + '/folders/upload_frame?uid=' + self.user + '&sk=' + self.sk + '&folderid=&uploadtofolder=false&foldertype=3&rnd=74065'

            contentType = "multipart/form-data; boundary="+separador
            headers = {"Content-type": contentType, "Accept-Language": "es", "Accept": "*/*", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection": "Keep-Alive", "Accept-Encoding": "gzip, deflate", "Cache-Control": "no-cache", "Cookie": self.cookie, "Referer": referer}

            conn=httplib.HTTPConnection(self.server)
            conn.request ("POST", "/mas/messaging_as/temporalcontentservlet", data, headers)
            resp=conn.getresponse()
            respuesta = resp.read()

            # Tenemos que recibir la cabecera oid con el identificador del objeto insertado
            oid = ''
            headresp=resp.getheaders()
            for n in headresp :
                if n[0] == 'oid' :
                    oid = n[1]
            print '\toid: ' + oid

            if oid != '' :
                print '\tVídeo insertado'
                params3 = urllib.urlencode ({'uploadtofolder': 'false', 'uid': self.user, 'sk': self.sk, 'status': 'success', 'oid': oid})
                referer = 'http://' + self.server + '/folders/upload?uid=' + self.user + '&sk=' + self.sk + '&folderid=&uploadtofolder=false&foldertype=3'
                headers3 = {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection": "Keep-Alive", "Cookie": self.cookie, 'Referer': referer}
                conn3=httplib.HTTPConnection(self.server)
                conn3.request("GET", '/folders/upload_close?' + params3, None, headers3)
                resp3=conn3.getresponse()

                conn3.close()

                params4 = urllib.urlencode ({'uid': self.user, 'sk': self.sk, 'slide_num': '1', 'function_name': 'video', 'value': oid})
                referer = 'http://' + self.server + '/compose?uid=' + self.user + '&sk=' + self.sk + '&fr=ns&pathstring=+:+Env%EDo+Mensaje+MultiMedia&adultcheckparam=no'
                headers4 = {"Accept": "*/*", "Accept-Encoding": "gzip, deflate", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection": "Keep-Alive", "Cookie": self.cookie, 'Referer': referer}
                conn4=httplib.HTTPConnection(self.server)
                conn4.request("GET", '/compose/ms?' + params4, None, headers4)
                resp4=conn4.getresponse()

                conn4.close()

            conn.close()

        conn2.close()

    def EnviaMensaje(self, subject, dest, msg) :
        """Realiza el envío del mensaje MMS
            Entrada:  subject=asunto del mensaje
                      dest=cadena con el destinatario del mensaje
                      msg=cadena con el texto del mensaje"""

        print 'Enviando mensaje...'

        params4 = urllib.urlencode ({'user': self.user, 'sk': self.sk, 'function_name': 'send', 'text_function': 'update', 'text_value': msg, 'slide_num': '1', 'subject': subject, 'to1': dest, 'to2': '', 'to3': '', 'frag': ''})

        # es necesario crear la cabecera Referer con sus parámetros
        paramsReferer = urllib.urlencode({'uid': self.user, 'sk': self.sk, 'fr': 'ns', 'pathstring': 'Envío Mensaje MultiMedia', 'adultcheckparam': 'no'})
        referer = 'http://' + self.server + '/compose?'+paramsReferer
                    
        headers4 = {"Content-type":"application/x-www-form-urlencoded", "Accept": "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection" :  "Keep-Alive","Cookie" : self.cookie, "Referer": referer}
        conn4=httplib.HTTPConnection(self.server)
        conn4.request ("POST", '/compose/ms', params4, headers4)
        resp4=conn4.getresponse()
        respuesta4 = resp4.read()

        if respuesta4.find('is_sent_ok=true') :
            print '\tMensaje enviado'
        elif respuesta4.find('is_sent_ok=false') :
            print '\tEl mensaje no se ha podido enviar'

        if resp4.status == 200 :
            params5 = urllib.urlencode ({'uid': self.user, 'sk': self.sk, 'is_sent_ok': 'true', 'to1': dest})
            headers5 = {"Accept": "*/*", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection" :  "Keep-Alive","Cookie" : self.cookie}
            conn5=httplib.HTTPConnection(self.server)
            conn5.request("GET", '/compose/send/confirm?'+params5, None, headers5)
            resp5=conn5.getresponse()

            if resp5.status == 200 :
                paramsReferer = urllib.urlencode({'sk': self.sk, 'uid': self.user, 'source': '', 'olduid': ''})
                referer = 'http://' + self.server + '/main/?'+paramsReferer
                
                params6 = urllib.urlencode ({'uid': self.user, 'sk': self.sk})
                headers6 = {"Accept": "*/*", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection" :  "Keep-Alive","Cookie" : self.cookie}
                conn6=httplib.HTTPConnection(self.server)
                conn6.request("GET", '/login_frame?'+params6, None, headers6)
                resp6=conn6.getresponse()
                conn6.close()

                params7 = urllib.urlencode ({'uid': self.user, 'sk': self.sk, 'fr': 'ns', 'pathstring': ' : Envío Mensaje Multimedia', 'adultcheckparam': 'no'})
                headers7 = {"Accept": "*/*", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection" :  "Keep-Alive","Cookie" : self.cookie}
                conn7=httplib.HTTPConnection(self.server)
                conn7.request("GET", '/compose?'+params7, None, headers7)
                resp7=conn7.getresponse()
                conn7.close()

            conn5.close()

        conn4.close()

    def Logout(self) :

        print 'Iniciando Logout...'
        
        # hacemos el logout
        paramsLogout = urllib.urlencode ({'uid': self.user, 'sk': self.sk, 'TM_ACTION': 'LOGOUT'})

        # es necesario crear la cabecera Referer con sus parámetros
        paramsRefererLogout = urllib.urlencode({'sk': self.sk, 'uid': self.user, 'source': '', 'olduid': ''})
        refererLogout = 'http://' + self.server + '/main/?' + paramsRefererLogout

        headersLogout = {"Content-type":"application/x-www-form-urlencoded", "User-Agent" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Connection" :  "Keep-Alive", 'Referer': refererLogout}
        connLogout=httplib.HTTPConnection(self.server)
        connLogout.request ("POST", "/logout",paramsLogout, headersLogout)
        respLogout=connLogout.getresponse()

        connLogout.close()

        
##---------------------------------------------------------------------------------------------
## Cuerpo principal

mms=MensajeriaMultimediaWeb()

log='6xxxxxxxx' # MSISDN
passw='xxxxxx' # password de acceso a la web de copiagenda
user = mms.Login(log, passw)

if user == '' :
    print 'Error de Login'
else :
    # Lo primero es insertar los objetos (si los hay)

    # Si ya hemos insertado un vídeo no debemos insertar ni una imagen ni un sonido
   
    nombreImg='foto' # nombre de la imagen que vamos a insertar
    pathImg='c:\\fotos\\foto.jpg' # path de la imagen que vamos a insertar
    mms.InsertaImagen(nombreImg, pathImg)

    nombreSnd='audio' # nombre del sonido que vamos a insertar
    pathSnd='c:\\audio\\politono.mid' # path del sonido que vamos a insertar
    mms.InsertaAudio(nombreSnd, pathSnd)

    # Si ya hemos insertado una imagen o un sonido no debemos insertar un vídeo

    # nombreVid='video' # nombre del vídeo que vamos a insertar
    # pathVid='c:\\videos\\test.avi' # path del vídeo que vamos a insertar
    # mms.InsertaVideo(nombreVid, pathVid)

    dest='6xxxxxxxx' # destinatario del mensaje (también puede ser una dirección de email)
    subject='asunto' # asunto del mensaje
    msg='texto del mensaje' # texto del mensaje
    mms.EnviaMensaje(subject, dest, msg)

    mms.Logout()
