Как получить реальный URL загрузки поста?

Привет!
Я искал это по всему интернету, но безрезультатно, поэтому решил спросить здесь.

Дам немного контекста: мы создаём кастомный фронтенд, используя API пользователей Discourse. Я пытался отобразить сырое содержимое поста, но изображения передаются в виде uploads://<id>.png, из-за чего браузер не может их загрузить.

Есть ли способ получить реальный URL через API? Например, https://custom.discourse.org/uploads/<id>.png или что-то подобное?

Спасибо!

См. Converting short upload URLs to full URLs

Огромное спасибо, я обязательно посмотрю!

Привет @RGJ, только что попробовал пример кода на Python, упомянутый здесь: Converting short upload URLs to full URLs - #2 by michaeld

Но, кажется, декодирование происходит неправильно.

Вот код, который я в итоге попробовал. Он должен декодироваться в “77f164006403e10d7d40143d525f8a5d69390baf”, но я получаю “77f13112951f458abf39d5e480c59eba10c97f31”. Есть какие-то идеи, почему это может быть? Я не очень опытен в подобных вещах.

import base62
input = "h73zkifccxqjtevvuahwq9hefkt"
expected = "77f164006403e10d7d40143d525f8a5d69390baf"

decoded = hex(base62.decode(input, base62.CHARSET_INVERTED))[2:].zfill(40)

print('decoded: ' + decoded)

if expected != decoded:
  print('не декодировано правильно')
else:
  print('декодировано правильно')

Моя вина — ссылка uploads:// выводилась в нижнем регистре до печати в консоль, поэтому декодирование не сработало. При правильном регистре всё работает!

Огромное спасибо за быструю помощь!!!

Вот код, который я использовал в Flutter для решения этой задачи:

import 'package:base_x/base_x.dart';
import 'package:hex/hex.dart';

String decodeUploadsLink(String encoded) {
  var base62Rev = BaseXCodec('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
  var decodedRev = base62Rev.decode(encoded);
  return HEX.encode(decodedRev);
}