公式RTが表示される位置がwebでのそれと異なるという指摘があり、
調べてみると、元tweetがpostされた時間をキーにしてTLへの挿入
位置を決める実装になっていました。

この挙動だと、仮に1日前のtweetをRTしたとすると遥か過去のTLに
混ざってしまい、TLの流れが速い人は目撃できないことになります。

そこで、RTされた時間をキーにして挿入するように変更したいと
考えています。添付した変更で、webと同等の表示になると思います。

#

> 公式RTに関して同じtweetが複数表示される事例があるようです。

いまの実装だと、複数人が同一のtweetをRTすると、そのすべてが
表示されるような気がします。。

> tweet 挿入時に、その直前に挿入した tweet もIDの比較対象にして
> 重複表示しないようにしています。
> (ID重複がない場合はその分無駄な処理を行うことになりますが)

前述の変更をする前であれば、直前に挿入したIDと比較するだけで
検出ができると思います。ただし、変更後はRTされたtweetのIDは
整列されなくなりますから、もう一ひねりする必要がありそうな
気がします。

という感じなのでcommitするタイミングを窺っているのですが、
commitしてもよいでしょうか?
diff --git a/ChangeLog b/ChangeLog
index 2479518..103c773 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-02-03  Satoshi Yatagawa  <yata_git...@y.haun.org>
+
+	* twittering-mode.el (twittering-status-to-status-datum): Don't
+	rewrite `created-at' by a same name element in `retweeted_status'
+	node.
+
 2010-01-31  Tadashi MATSUO  <t...@mymail.twin.jp>
 
 	* twittering-mode.el (twittering-http-get-default-sentinel):
diff --git a/twittering-mode.el b/twittering-mode.el
index 1628353..f028694 100644
--- a/twittering-mode.el
+++ b/twittering-mode.el
@@ -1687,6 +1687,7 @@ If STATUS-DATUM is already in DATA-VAR, return nil. If not, return t."
 	   user-protected
 	   regex-index
 	   (retweeted-status-data (cddr (assq 'retweeted_status status-data)))
+	   original-created-at
 	   original-user-name
 	   original-user-screen-name)
 
@@ -1695,7 +1696,8 @@ If STATUS-DATUM is already in DATA-VAR, return nil. If not, return t."
 	(setq original-user-screen-name (twittering-decode-html-entities
 					 (assq-get 'screen_name user-data))
 	      original-user-name (twittering-decode-html-entities
-				  (assq-get 'name user-data)))
+				  (assq-get 'name user-data))
+	      original-created-at (assq-get 'created_at status-data))
 	(setq status-data retweeted-status-data
 	      user-data (cddr (assq 'user retweeted-status-data))))
 
@@ -1704,7 +1706,8 @@ If STATUS-DATUM is already in DATA-VAR, return nil. If not, return t."
 		  (assq-get 'text status-data)))
       (setq source (twittering-decode-html-entities
 		    (assq-get 'source status-data)))
-      (setq created-at (assq-get 'created_at status-data))
+      (setq created-at (or original-created-at
+			   (assq-get 'created_at status-data)))
       (setq truncated (assq-get 'truncated status-data))
       (setq in-reply-to-status-id
 	    (twittering-decode-html-entities
------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
twmode-users mailing list
twmode-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/twmode-users

メールによる返信