Hatena::ブログ(Diary)

ねこら対策研究要塞日誌@はてな このページをアンテナに追加 RSSフィード Twitter

2017-04-19

[]Pythonで画像付きToot Pythonで画像付きTootを含むブックマーク

できたことはできた。

https://pawoo.net/@nekora2199/1865696

ほぼ、http://qiita.com/code_monkey/items/e4929ef13e2a2032d467 のまんまだけど。

mastodon.pyを改造する必要があった。メディアアップロードに失敗するJavaライブラリもダメダメだが、Python版もイマイチのようだな。

あとは成功時のリクエスト電文をキャプチャすれば話は終わりだと思ったんだが、これ、アップロード直後の値をそのまま使ってるので対抗にはmastodonアップロード処理が必要であり、mastodonインスタンスとの通信はhttpsなのでそのままtcpmonでキャプチャしても意味不明な罠。

先のmedia_filesをprint()すると以下のようになっている。まさかこれを全部渡しているのか。idだけではないのか。

[{'text_url': 'https://pawoo.net/media/_Vf6DFtADky79UzLrtw', 'id': 177167, 'url': 'https://img.pawoo.net/media_attachments/files/000/177/167/original/31ed315ef2e64925.jpg?1492601655', 'preview_url': 'https://img.pawoo.net/media_attachments/files/000/177/167/small/31ed315ef2e64925.jpg?1492601655', 'type': 'image'}]

ちなみに一応渡してみたがダメだった。

ちょっと調査方向を変えて不慣れなPythonライブラリではなく、アップロードは出来ないがTootはできたJavaの方を読んでみるか。でもアレも結局google通信ライブラリに渡しているだけで具体的なHTTP電文は…。

    public MastodonStatus postStatus(String status, int replyTo, int[] mediasIds, boolean sensitiveMedia, String spoilerText, Visibility visibility) throws IOException {
        Validate.isTrue(mediasIds == null || (mediasIds.length >= 0 && mediasIds.length <= 4), "maximum 4 medias");

        FormDataContent content = new FormDataContent();
        content.addPart("status", status);
        if (replyTo >= 0)
            content.addPart("in_reply_to_id", String.valueOf(replyTo));
        if (mediasIds != null && mediasIds.length > 0)
            content.addPart("media_ids", Arrays.toString(mediasIds));
        content.addPart("sensitive", String.valueOf(sensitiveMedia));
        if (spoilerText != null)
            content.addPart("spoiler_text", spoilerText);
        if (visibility != null)
            content.addPart("visibility", visibility.name().toLowerCase());

        return raw.post("/api/v1/statuses", content, MastodonStatus.class);
    }
int[] mediasIds,
content.addPart("media_ids", Arrays.toString(mediasIds));

うーむ、数値の配列だ。そりゃそうだよな。全部渡す必要など無い筈だから。

今週末あたり、Javaライブラリバグが取れないかしら。

https://github.com/zyuiop/mastodon-java

…もう今日で15日放置されてるから微妙だな。

つかAndoroidアプリがある以上、Java版の正しいライブラリが探せばあるのではなかろうか。高々規格にあったHTTPを送るだけだし、そんなに難しい事をやる訳でも無いんだし。HTTPに詳しく英語に堪能な英米人なら容易いと思われる。

HTTP配列渡しから攻めてみるか

http://sample/xxx?data=a&data=b&data[]=c

https://teratail.com/questions/30958

こういうものなのだろうか?今回はPOSTだけど。

トラックバック - http://d.hatena.ne.jp/nekora/20170419/p1