python url slug reddit

python - ¿Cuál es la identificación alfanumérica de 5 caracteres en la URL reddit?



slug (3)

Eso parece una identificación única para el hilo. Lo más probable es que se use para encontrar el hilo en la base de datos.

¿Cuál es el 7n5lu en la URL de reddit? http://www.reddit.com/r/reddit.com/comments/7n5lu/man_can_fly_if_you_watch_one_video_in_2

¿Cómo se genera?

actualización: @Gerald, gracias por el código. Inicialmente pensé que esto es una ofuscación de la identificación. Pero, simplemente está haciendo la conversión de un número entero a una representación más compacta. Estoy pensando, ¿por qué se hace esto? ¿por qué no usar el entero original en sí mismo?

>>> to36(4000) ''334'' >>> to36(4001) ''335''


Pequeño comentario.

No es suficiente para este ejemplo, pero generalmente se agrega a las listas

a = [] for i in range(NNN): a.append(i) a.reverse()

realmente más eficiente que insertar en la cabeza.

a = [] for i in range(NNN): a.insert(0,i)

.


¡El código fuente de reddit está disponible ! Esto es lo que encontré para generar esa cadena:

def to_base(q, alphabet): if q < 0: raise ValueError, "must supply a positive integer" l = len(alphabet) converted = [] while q != 0: q, r = divmod(q, l) converted.insert(0, alphabet[r]) return "".join(converted) or ''0'' def to36(q): return to_base(q, ''0123456789abcdefghijklmnopqrstuvwxyz'')

y en otros lugares, bajo la clase "Enlace":

@property def _id36(self): return to36(self._id)