Estou trabalhando para criar um encurtador de URL para o meu site, e meu plano atual (estou aberto a sugestões) é usar um ID de nó para gerar o URL encurtado. Assim, em teoria, o nó 26 pode ser short.com/z
, o nó 1 pode ser short.com/a
, o nó 52 pode ser short.com/Z
e o nó 104 pode ser short.com/ZZ
. Quando um usuário acessa esse URL, preciso reverter o processo (obviamente).
Posso pensar em algumas maneiras esquisitas de fazer isso, mas acho que existem outras melhores. Alguma sugestão?
Respostas:
ASCII para int:
dá
97
E voltando a uma string:
str(unichr(97))
chr(97)
dá
'a'
fonte
fonte
Se vários caracteres estiverem vinculados a um único inteiro / comprimento, como foi o meu problema:
Rendimentos
'0123456789'
ex = 227581098929683594426425L
fonte
E o BASE58 que codifica o URL? Como por exemplo o flickr faz.
Transformar isso de volta em um número também não é grande coisa.
fonte
Usar
hex(id)[2:]
eint(urlpart, 16)
. Existem outras opções. A codificação base32 do seu ID também funcionaria, mas não sei se existe alguma biblioteca que codifique a base32 incorporada no Python.Aparentemente, um codificador base32 foi introduzido no Python 2.4 com o módulo base64 . Você pode tentar usar
b32encode
eb32decode
. Você deve darTrue
tanto para ocasefold
emap01
opções ,b32decode
caso as pessoas anotem seus URLs encurtados.Na verdade, eu retiro isso. Ainda acho que a codificação base32 é uma boa idéia, mas esse módulo não é útil para o caso de encurtamento de URL. Você pode observar a implementação no módulo e criar seu próprio caso específico. :-)
fonte