投稿の実際のURLを取得する方法は?

こんにちは!
インターネットでこの情報を見つけようとしましたが、見つからなかったので、ここで質問することにしました。

少し状況を説明させてください。DiscourseのユーザーAPIを使用してカスタムフロントエンドを作成しています。投稿の生のコンテンツをレンダリングしようとしていますが、画像は次のように渡されます: uploads://<id>.png。そのため、ブラウザで取得できません。

API経由で実際のURLを取得する方法はありますか? https://custom.discourse.org/uploads/<id>.png のようなものですか?

よろしくお願いします!

「いいね!」 1
「いいね!」 6

ありがとうございます。確認してみます!

「いいね!」 1

@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('not decoded correctly')
else:
  print('decoded correctly')

私のミスでした。コンソールに 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);
}
「いいね!」 5