speg03の雑記帳

主に未来の自分のために試したことなどを記録しています

GitHubでTermtter本家をforkした

Termtterで気になっていたところがあったので,forkの試験も兼ねていろいろやってみたよ.

GitHub - jugyo/termtter: moved to https://github.com/termtter/termtterからforkボタンを押して,普通にcloneした.

$ git clone git@github.com:speg03/termtter.git

以下,ちょこちょこ変更したところ.

lib/plugin/favorite.rb

favoriteしたstatusのtextを出力に含めるとか細かい変更もあるけど,一番やりたかったのはユーザを指定したときの挙動.

> favorite @hoge

とかしたとき,

statuses = t.get_user_timeline(user)

となっていて,本当に最新のstatusを取ってくる.そうすると,今見えている最新のstatusと違うことがあるので困る.

で,次のように変更した.

statuses = public_storage[:log].select {|s| s.user_screen_name == user }

これで今までに取得した範囲から最新のstatusをfavoriteできる.

lib/plugin/uri-open.rb

uri-openをしばらく使ってみるとわかるのだけど,listがbuzztterで埋め尽くされるなどして困る.

あと,一番最近のURIを開こうと思ってもlistの末尾に追加されるようだったので,いちいち番号を調べる必要があるのも不便.

で,次のような感じ.

diff --git a/lib/plugin/uri-open.rb b/lib/plugin/uri-open.rb
index efa864f..c9946ca 100644
--- a/lib/plugin/uri-open.rb
+++ b/lib/plugin/uri-open.rb
@@ -5,8 +5,12 @@ module Termtter::Client

   add_hook do |statuses, event, t|
     if !statuses.empty? && event == :update_friends_timeline
-      statuses.each do |s|
-        public_storage[:uris] += s.text.scan(%r|https?://[^\s]+|)
+      statuses.sort_by{|s| s.id }.each do |s|
+        uris = s.text.scan(%r|https?://[^\s]+|)
+        uris.each do |uri|
+          public_storage[:uris].delete(uri)
+          public_storage[:uris].unshift(uri)
+        end
       end
     end
   end

(17:42 編集)何かちまちま変更してる….statusをsortするようにした.

これで一番最近のURIを開くときは,

> uri-open 0

でよくなるし,URIが重複しないようになった.