Всем привет, кто зашел ответить на вопрос.
Вот пример ссылки на один из постов в Instagram
https://www.instagram.com/p/CWvxAY7B0ci/
1. Получение MediaId из shortcode.
Данный shortcode в ссылке CWvxAY7B0ci - это MediaId поста, закодированный в base64. Декодируется так:
1. Из таблицы base64 берется индекс символа, соответствующий символу shortcode. Взяв индексы для CWvxAY7B0ci получаем 2,22,47,49,0,24,59,1,52,28,34 соответственно. Все это собрано в массив.
2. Затем, через цикл for, каждое значение умножается на 64 и суммируется с последующим значением.
Код
shortcode = 'CWvxAY7B0ci'
alphabet ={
"A": 0,
"C": 2,
"B": 1,
#и т.д. все значения
}
result = 0
for char in shortcode:
result = result * 64 + alphabet[char]
#результат 2715604631366879010
Собственно вопрос - почему так? Зачем умножать каждое значение на 64? Зачем их суммировать? По каким правилам это работает? Эта формула какой-то стандарт по кодировке или "фича" Instagram?
2. Получение shortcode из MediaId.
Если в предыдущем вопросе было хоть какое-то понимание происходящего, то тут совсем не понимаю всех действий. Зачем искать остаток и вычитать его? Даже вопросов нет больше, потому что полностью не понимаю почему и как происходит кодировка в этой части кода и не знаю что спросить. Помогите, подскажите.
Код
media_id = int('2715604631366879010')
alphabet ={
"A": 0,
"C": 2,
"B": 1,
#и т.д. все значения
}
short_code = ''
while media_id > 0:
remainder = media_id % 64
media_id = (media_id-remainder)/64
short_code = alphabet[remainder] + short_code
#результат CWvxAY7B0ci
ЗАРАНЕЕ СПАСИБО!