Reddit网址中的字母数字ID是什么?

15

1
如果您将数字与字母一起使用,则最终字符串会更短。例如:to36(9) == '9' to36(10) == 'a' - gak
4个回答

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')

另外,在“Link”类下面:

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

3
请注意,它们存在一个微小的错误:零的情况假定零是“0”。最后一行应该以“或alphabet [0]”结尾。 - Ned Batchelder

0

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


0

这是一个整数,只是以36进制表示。ID是按顺序生成的。例如,在ID 89之后的评论是ID 8a,以此类推。因此,您不需要从URL中获取任何其他信息。

评论、帖子、消息、用户和子版块理论上可以具有相同的ID并逐个计数。您可以通过它们的“全名”来区分它们,这是一种类型的东西,下划线,然后是下划线。

t1是评论,t2是用户,t3是提交,t4是消息,t5是子版块,t6是奖项,ModAction是管理员操作,ModmailConversation是modmail对话等。

有关更多信息,请参见API文档


-1

小备注。

这个例子可能不够充分,但通常将元素添加到列表中

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

相比于在头部插入,这种方法确实更高效。

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

.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接