OSDN Git Service

ふぁぼイベントに含まれるツイートでExtended Tweetを考慮する
authorKimura Youichi <kim.upsilon@bucyou.net>
Tue, 8 Nov 2016 13:21:04 +0000 (22:21 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Fri, 11 Nov 2016 15:11:00 +0000 (00:11 +0900)
現状は event.target_object.text に 140 字を越えるテキストが含まれているが、
Streaming API から流れてくる他のツイートと同様に extended_tweet を含む形式に
なった場合も対応できるように常に Normalize メソッドを使用する。

Fixes: 18413771 ("Extended Mode (tweet_mode=extended) でのツイートの取得に対応")

OpenTween/Twitter.cs

index f1c3238..c229b1e 100644 (file)
@@ -1951,6 +1951,7 @@ namespace OpenTween
             evt.Eventtype = eventType;
 
             TwitterStreamEvent<TwitterStatusCompat> tweetEvent;
+            TwitterStatus tweet;
 
             switch (eventData.Event)
             {
@@ -1979,8 +1980,9 @@ namespace OpenTween
                 case "favorite":
                 case "unfavorite":
                     tweetEvent = TwitterStreamEvent<TwitterStatusCompat>.ParseJson(content);
-                    evt.Target = "@" + tweetEvent.TargetObject.User.ScreenName + ":" + WebUtility.HtmlDecode(tweetEvent.TargetObject.Text);
-                    evt.Id = tweetEvent.TargetObject.Id;
+                    tweet = tweetEvent.TargetObject.Normalize();
+                    evt.Target = "@" + tweet.User.ScreenName + ":" + WebUtility.HtmlDecode(tweet.FullText);
+                    evt.Id = tweet.Id;
 
                     if (SettingCommon.Instance.IsRemoveSameEvent)
                     {
@@ -1991,7 +1993,7 @@ namespace OpenTween
                     var tabinfo = TabInformations.GetInstance();
 
                     PostClass post;
-                    var statusId = tweetEvent.TargetObject.Id;
+                    var statusId = tweet.Id;
                     if (!tabinfo.Posts.TryGetValue(statusId, out post))
                         break;
 
@@ -2028,8 +2030,9 @@ namespace OpenTween
                     if (evt.IsMe) return;
 
                     tweetEvent = TwitterStreamEvent<TwitterStatusCompat>.ParseJson(content);
-                    evt.Target = "@" + tweetEvent.TargetObject.User.ScreenName + ":" + WebUtility.HtmlDecode(tweetEvent.TargetObject.Text);
-                    evt.Id = tweetEvent.TargetObject.Id;
+                    tweet = tweetEvent.TargetObject.Normalize();
+                    evt.Target = "@" + tweet.User.ScreenName + ":" + WebUtility.HtmlDecode(tweet.FullText);
+                    evt.Id = tweet.Id;
 
                     if (SettingCommon.Instance.IsRemoveSameEvent)
                     {