Actualización de Adsl.au3
Publicado: 29 Mar 2009, 21:10
Hola
Gracias a la manita que me echó Chefito en este post:
http://www.emesn.com/autoitforum/viewto ... f=3&t=1543
He escrito una función para actualizar Adsl.au3.
Se trata de una función, que en principio devolvería el operador de un teléfono móvil dado, pero debido a que la página donde se hace la consulta devuelve más información sobre dicho número pensé que podía ser interesante contemplar toda esa información en la función, pues si puede no resultar de interés para nadie, resulta almenos curioso.
¿Para que puede servir ésta función?
Puede serle útil a aquellos, que como yo realicen alguna aplicación relacionada con telefonía móvil o en la que se requiera rellenar un formulario para crear la ficha de un usuario en la que se requiera el teléfono (móvil).
También puede resultar de interés para saber cuanto nos va a costar la llamada a un número de tele´fono móvil de ámbito español, pues con la portabilidad de hoy en día nunca sabemos a que compañía estamos llamando
Aquí pongo el código de la función, pero también adjunto la librería actualizada por si alguien quiere descargar la colección de funciones actualizada.
El único inconveniente que para mí tiene esta función, es la limitación que impone la propia página donde se realiza la consulta, que consiste en que únicamente pueden consultarse números del territorio español. Pero esque, no encontré ninguna página donde pudiera consultar números de cualquier país, excepto una que hayé tras mucho googlear, pero que imponía otra limitación, que consiste en no poder realizar más de 4 o 5 consultas al día.
Si alguien conoce alguna página donde pueda realizarse este tipo de consultas y que no imponga limitaciones de este tipo que la postee y modificaré la función.
De igual forma si alguien encuentra algún fallo en la función (pese a que he implementado el máximo de control de errores que se me ha ocurrido) que lo diga y corregiré la función.
Espero que os guste.
Que la disfruteis!
Salu2!
Gracias a la manita que me echó Chefito en este post:
http://www.emesn.com/autoitforum/viewto ... f=3&t=1543
He escrito una función para actualizar Adsl.au3.
Se trata de una función, que en principio devolvería el operador de un teléfono móvil dado, pero debido a que la página donde se hace la consulta devuelve más información sobre dicho número pensé que podía ser interesante contemplar toda esa información en la función, pues si puede no resultar de interés para nadie, resulta almenos curioso.
¿Para que puede servir ésta función?
Puede serle útil a aquellos, que como yo realicen alguna aplicación relacionada con telefonía móvil o en la que se requiera rellenar un formulario para crear la ficha de un usuario en la que se requiera el teléfono (móvil).
También puede resultar de interés para saber cuanto nos va a costar la llamada a un número de tele´fono móvil de ámbito español, pues con la portabilidad de hoy en día nunca sabemos a que compañía estamos llamando
Aquí pongo el código de la función, pero también adjunto la librería actualizada por si alguien quiere descargar la colección de funciones actualizada.
Código: Seleccionar todo
#Include <Array.au3>
#Include <File.au3>
#Include <Ie.au3>
#Include <String.au3>
#cs
;Nombre de la función:
;_AdslGetMobileOperator.
;Descripción:
;Muestra información sobre un número de teléfono móvil.
;Parámetro(s):
;$XNumber: (Número de móvil).
;Número de teléfono móvil del que se desea obtener la información.
;Valor(es) retornado(s):
;Si se obtuvo la información solicitada: @Error=0 (Devuelve un array con la información solicitada, dónde la posición 0 es el prefijo, 1 es la tecnología del servicio, 2 es el estado, 3 es la fecha de asignación, 4 es el operador y 5 es la marca comercial).
;Si no se obtuvo la información solicitada: @Error=1 (Devuelve descripción del error).
;Nota(s):
;-Funciona únicamente con teléfonos móviles de españa.
;-Debido a la conservación de numeración(portabilidad) esta información puede ser incorrecta.
;Autor(es):
;Jonathan López Mendoza.
#ce
Func _AdslGetMobileOperator($XNumber)
Local $Info[6]
If $XNumber=="" Then
SetError(1)
Return "Debe especificarse un número de teléfono móvil válido"
EndIf
$NumDiv=StringSplit($XNumber, "")
If (Not IsArray($NumDiv) Or $NumDiv[0]==0) Then
SetError(1)
Return "Debe especificarse un número de teléfono móvil válido"
EndIf
If ($NumDiv[0]<>9 Or $NumDiv[1]<>"6") Then
SetError(1)
Return $XNumber&" no es válido"
EndIf
$IeObj=_IECreate("http://www.gsmspain.com/prefijos/", 0, 0)
If @Error<>0 Then
SetError(1)
Return "Ocurrió un error al conectar con la base de datos"
EndIf
$IeForm=_IEFormGetCollection($IeObj, 1)
$InpNum=_IEGetObjByName($IeForm, "num")
_IeFormElementSetValue($InpNum, $XNumber)
_IEFormSubmit($IeForm)
_IeLoadWait($IeObj)
$Result=_IeBodyReadText($IeObj)
_IeQuit($IeObj)
If stringInStr($Result, "No se puede mostrar la página")<>0 Then
SetError(1)
Return "La base de datos no está disponible en éste momento"
EndIf
$Result=StringReplace($Result, @CRLF&@CRLF&@CRLF, @CRLF)
$Result=StringReplace($Result, @CRLF&@CRLF, @CRLF)
If StringInStr($Result, "Prefijo:")==0 Then
SetError(1)
If StringInStr($Result, "El numero "&$XNumber&" no es de ningun operador español o es de nueva adjudicación")<>0 Then
Return "El número "&$XNumber&" no es de ningún operador móvil español o es de nueva adjudicación"
Else
SetError(1)
Return "Error al consultar "&$XNumber
EndIf
EndIf
$Result=StringReplace($Result, "Prefijo:"&@CRLF, "Prefijo: ")
$Result=StringReplace($Result, "Tecnología servicio:"&@CRLF, "Tecnología servicio: ")
$Result=StringReplace($Result, "Estado:"&@CRLF, "Estado: ")
$Result=StringReplace($Result, "Fecha asignación:"&@CRLF, "Fecha asignación: ")
$Result=StringReplace($Result, "Operador:"&@CRLF, "Operador: ")
$Result=StringReplace($Result, "Marca comercial:"&@CRLF, "Marca comercial: ")
$ResultDiv=StringSplit($Result, @CRLF)
If (Not IsArray($ResultDiv) Or $ResultDiv[0]==0) Then
SetError(1)
Return "Error al consultar "&$XNumber
EndIf
For $I=1 To $ResultDiv[0] Step +1
If ($ResultDiv[$I]==@CRLF Or $ResultDiv[$I]=="" Or $ResultDiv[$I]==" " Or $ResultDiv[$I]==@Tab) Then ContinueLoop
Select
Case StringInStr($ResultDiv[$I], "Prefijo: ")<>0
$Info[0]=StringReplace($ResultDiv[$I], "Prefijo: ", "")
Case StringInStr($ResultDiv[$I], "Tecnología servicio: ")<>0
$Info[1]=StringReplace($ResultDiv[$I], "Tecnología servicio: ", "")
Case StringInStr($ResultDiv[$I], "Estado: ")<>0
$Info[2]=StringReplace($ResultDiv[$I], "Estado: ", "")
Case StringInStr($ResultDiv[$I], "Fecha asignación: ")<>0
$Info[3]=StringReplace($ResultDiv[$I], "Fecha asignación: ", "")
Case StringInStr($ResultDiv[$I], "Operador: ")<>0
$Info[4]=StringReplace($ResultDiv[$I], "Operador: ", "")
Case StringInStr($ResultDiv[$I], "Marca comercial: ")<>0
$Info[5]=StringReplace($ResultDiv[$I], "Marca comercial: ", "")
EndSelect
Next
SetError(0)
Return $Info
EndFunc
;aquí un ejemplo de uso:
$Operator=_AdslGetMobileOperator("aqui_el_numero_a_consultar")
For $I=0 To 5 Step +1
MsgBox(0, "", $Operator[$I])
Next
Si alguien conoce alguna página donde pueda realizarse este tipo de consultas y que no imponga limitaciones de este tipo que la postee y modificaré la función.
De igual forma si alguien encuentra algún fallo en la función (pese a que he implementado el máximo de control de errores que se me ha ocurrido) que lo diga y corregiré la función.
Espero que os guste.
Que la disfruteis!
Salu2!