Estoy trabajando en hacer un acortador de URL para mi sitio, y mi plan actual (estoy abierto a sugerencias) es usar una ID de nodo para generar la URL acortada. Entonces, en teoría, el nodo 26 podría ser short.com/z
, el nodo 1 podría ser short.com/a
, el nodo 52 podría ser short.com/Z
y el nodo 104 podría ser short.com/ZZ
. Cuando un usuario accede a esa URL, necesito revertir el proceso (obviamente).
Puedo pensar en algunas maneras poco claras de hacer esto, pero supongo que hay mejores. ¿Alguna sugerencia?
Respuestas:
ASCII a int:
da
97
Y de vuelta a una cadena:
str(unichr(97))
chr(97)
da
'a'
fuente
fuente
Si varios caracteres están unidos dentro de un solo entero / largo, como fue mi problema:
Rendimientos
'0123456789'
yx = 227581098929683594426425L
fuente
¿Qué pasa con BASE58 que codifica la URL? Como por ejemplo flickr hace.
Convertir eso de nuevo en un número tampoco es un gran problema.
fuente
Uso
hex(id)[2:]
yint(urlpart, 16)
. Hay otras opciones la codificación base32 de su identificación también podría funcionar, pero no sé si hay alguna biblioteca que codifique base32 integrada en Python.Aparentemente, se introdujo un codificador base32 en Python 2.4 con el módulo base64 . Puede intentar usar
b32encode
yb32decode
. Usted debe darTrue
tanto para elcasefold
ymap01
opciones parab32decode
en caso de que la gente escriba sus direcciones URL acortadas.En realidad, lo retiro. Todavía creo que la codificación base32 es una buena idea, pero ese módulo no es útil para el caso del acortamiento de URL. Puede ver la implementación en el módulo y hacer la suya propia para este caso específico. :-)
fuente