Что такое буквенно-цифровой идентификатор в URL-адресе Reddit?
Что такое 7n5lu
в Reddit URL?
http://www.reddit.com/r/reddit.com/comments/7n5lu/man_can_fly_if_you_watch_one_video_in_2
... и как это генерируется?
Обновление: @Gerald, я сначала думал, что это - какое-то запутывание идентификатора. Он просто выполняет преобразование из целого числа в более компактное представление. Я думаю, почему это делается? почему бы не использовать само оригинальное целое число !!
>>> to36(4000)
'334'
>>> to36(4001)
'335'
Ответы
Ответ 1
Исходный код 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')
и в другом месте в классе "Ссылка":
@property
def _id36(self):
return to36(self._id)
Ответ 2
Это выглядит как уникальный идентификатор для потока. Скорее всего, он использовался для поиска потока в базе данных.
Ответ 3
Это целое число, только в базе 36. Идентификатор генерируется последовательно. Например, комментарий сразу после идентификатора 89
- это идентификатор 8a
и т.д. Учитывая это, вам не нужна никакая другая информация из URL.
Теоретически комментарии, сообщения, сообщения, пользователи и подредакты могут иметь одинаковый идентификатор и считаться. Вы можете различать их по "полному имени", которое является типом вещи, подчеркиванием, а затем подчеркиванием.
t1
- это комментарий, t2
- пользователь, t3
- t6
, t4
- сообщение, t5
- t6
, t6
- награда, ModAction
- действие модератора, ModmailConversation
- диалог Modmail и т.д.
См. Документацию API для получения дополнительной информации.
Ответ 4
Маленькое замечание.
Недостаточно для этого примера, но обычно добавляется к спискам
a = []
for i in range(NNN): a.append(i)
a.reverse()
действительно эффективнее, чем вставка на голову.
a = []
for i in range(NNN): a.insert(0,i)
.