taka-tuos / nanotodon

CLI mastodon client
MIT License
37 stars 6 forks source link

起動時のタイムライン取得のトゥート数を減らしたい #67

Closed tsutsui closed 1 month ago

tsutsui commented 2 months ago

mastodonで書いてた件ですが https://social.mikutter.hachune.net/@tsutsuii/112786611208513348

16MB RAMの LUNA + NetBSD/luna68k だと、デフォルトの 20トゥート取得の後の get_timeline() の中の sjson_decode() が重くてスラッシング状態になり TL表示まで数時間かかる、みたいな現象があります。 (24MBの sun3だとデフォルトの20で普通に起動するので数MB単位の差ですが)

起動時のタイムラインはもともとターミナルの高さ分(つまり 25〜50行くらい?)しか表示できないので 起動時の取得数は 5〜10でいいんじゃないかと思っています。 少なくとも 5にすると 16MBの LUNAでも分単位の時間で起動します。 (具体的な使用量は測っていない)

API定義は以下 https://docs.joinmastodon.org/methods/timelines/#home

limit Integer. Maximum number of results to return. Defaults to 20 statuses. Max 40 statuses.

なので最後に ?limit=5 とかつけるだけですが、実際書こうとすると -timeline オプションとかもあるし、数値もオプションにするのもありなのか? とかの仕様定義もあるので、とりあえず issueで。

雑にデフォルトのHTLだけ、かつ、5で決め打ちなら以下です

diff --git b/nanotodon.c a/nanotodon.c
index a5d5840..34a0ccb 100644
--- b/nanotodon.c
+++ a/nanotodon.c
@@ -25,7 +25,7 @@ char *streaming_json = NULL;
 #define URI_TIMELINE "api/v1/timelines/"

 char *selected_stream = "user";
-char *selected_timeline = "home";
+char *selected_timeline = "home?limit=5";

 #define CURL_USERAGENT "curl/" LIBCURL_VERSION
taka-tuos commented 2 months ago

これはlimitをいくつにするかを指定できるようにしたいですね(決め打ちで縮めるのもなあという)

tsutsui commented 1 month ago

オプション指定できるようにするという仕様とは別に、

int limit_timeline = 20;

このデフォルトの20というのは そういう方針か(=減らす必要のあるマシンだけ明示的に指定する)、5〜10に減らすのはありか、 どんなもんでしょう。

taka-tuos commented 1 month ago

今のところ「減らす必要があるマシンだけ明示的に指定する」で考えてます

tsutsui commented 1 month ago

仕様的に20がデフォルトという定義であれば完了だと思うのでクローズしときます