keff
(keff)
1
こんにちは!
インターネットでこの情報を見つけようとしましたが、見つからなかったので、ここで質問することにしました。
少し状況を説明させてください。DiscourseのユーザーAPIを使用してカスタムフロントエンドを作成しています。投稿の生のコンテンツをレンダリングしようとしていますが、画像は次のように渡されます: uploads://<id>.png。そのため、ブラウザで取得できません。
API経由で実際のURLを取得する方法はありますか? https://custom.discourse.org/uploads/<id>.png のようなものですか?
よろしくお願いします!
「いいね!」 1
keff
(keff)
4
@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')
keff
(keff)
5
私のミスでした。コンソールに uploads:// リンクを出力する前に小文字に変換されていたため、デコードが機能しませんでした。正しい大文字と小文字を使用すると機能します!
迅速なご協力、誠にありがとうございました!!!
keff
(keff)
6
これを実現するために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