reddit URL中的5个字符的字母数字id是什么?

Sha*_*eem 15 python url reddit slug

什么7n5lu是reddit URL 7n5lu

它是如何产生的?

更新:@Gerald,感谢您的代码.我最初认为这是对id的一些混淆.但是,它只是从整数转换为更紧凑的表示.我在想,为什么要这样做?为什么不使用原始整数本身!

>>> to36(4000)
'334'
>>> to36(4001)
'335'
Run Code Online (Sandbox Code Playgroud)

gak*_*gak 28

reddit源代码可用!以下是我发现生成该字符串的内容:

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')
Run Code Online (Sandbox Code Playgroud)

和其他地方,在"链接"类下:

@property
def _id36(self):
    return to36(self._id)
Run Code Online (Sandbox Code Playgroud)

  • 注意他们有一个微小的bug:零情况假定为零是"0".最后一行应以"或alphabet [0]"结尾. (2认同)

Rya*_*rty 0

这看起来像是线程的唯一 ID。它很可能用于在数据库中查找线程。