OSDN Git Service

PostClass.Mediaを1つのURLごとに複数の画像URLを保持できるように修正
authorspx <spx268@gmail.com>
Thu, 19 Jun 2014 10:32:37 +0000 (19:32 +0900)
committerspx <spx268@gmail.com>
Thu, 19 Jun 2014 10:32:37 +0000 (19:32 +0900)
extended_entitiesに対応したはず

OpenTween/StatusDictionary.cs
OpenTween/Thumbnail/ThumbnailGenerator.cs
OpenTween/Twitter.cs

index 5560bd8..0d8f975 100644 (file)
@@ -85,7 +85,7 @@ namespace OpenTween
         public int RetweetedCount { get; set; }
         public long? RetweetedByUserId { get; set; }
         public long? InReplyToUserId { get; set; }
-        public Dictionary<string, string> Media { get; set; }
+        public Dictionary<string, List<string>> Media { get; set; }
 
         public string RelTabName { get; set; }
         public int FavoritedCount { get; set; }
@@ -162,7 +162,7 @@ namespace OpenTween
         {
             RetweetedBy = "";
             RelTabName = "";
-            Media = new Dictionary<string, string>();
+            Media = new Dictionary<string, List<string>>();
             ReplyToList = new List<string>();
         }
 
@@ -377,7 +377,7 @@ namespace OpenTween
             var clone = (PostClass)this.MemberwiseClone();
             clone.ReplyToList = new List<string>(this.ReplyToList);
             clone.PostGeo = new StatusGeo { Lng = this.PostGeo.Lng, Lat = this.PostGeo.Lat };
-            clone.Media = new Dictionary<string, string>(this.Media);
+            clone.Media = new Dictionary<string, List<string>>(this.Media);
 
             return clone;
         }
index 39a6298..9f678f6 100644 (file)
@@ -210,9 +210,9 @@ namespace OpenTween.Thumbnail
 
             if (post.Media != null)
             {
-                foreach (var media in post.Media)
+                foreach (var media in post.Media.Values.SelectMany(x => x))
                 {
-                    var thumbInfo = await ThumbnailGenerator.GetThumbnailInfoAsync(media.Value, post, token)
+                    var thumbInfo = await ThumbnailGenerator.GetThumbnailInfoAsync(media, post, token)
                         .ConfigureAwait(false);
 
                     if (thumbInfo != null)
index d2b045a..272abde 100644 (file)
@@ -2967,7 +2967,7 @@ namespace OpenTween
             return retStr;
         }
 
-        public async Task<string> CreateHtmlAnchorAsync(string text, List<string> AtList, TwitterEntities entities, Dictionary<string, string> media)
+        public async Task<string> CreateHtmlAnchorAsync(string text, List<string> AtList, TwitterEntities entities, Dictionary<string, List<string>> media)
         {
             if (entities != null)
             {
@@ -2978,8 +2978,17 @@ namespace OpenTween
                         ent.ExpandedUrl = await ShortUrl.Instance.ExpandUrlAsync(ent.ExpandedUrl)
                             .ConfigureAwait(false);
 
-                        if (media != null && !media.ContainsKey(ent.Url))
-                            media.Add(ent.Url, ent.ExpandedUrl);
+                        if (media != null)
+                        {
+                            List<string> mediaUrls;
+                            if (!media.TryGetValue(ent.Url, out mediaUrls))
+                            {
+                                mediaUrls = new List<string>();
+                                media.Add(ent.Url, mediaUrls);
+                            }
+                            else if (mediaUrls.Contains(ent.ExpandedUrl)) continue;
+                            mediaUrls.Add(ent.ExpandedUrl);
+                        }
                     }
                 }
                 if (entities.Hashtags != null)
@@ -3000,10 +3009,19 @@ namespace OpenTween
                 }
                 if (entities.Media != null)
                 {
-                    foreach (var ent in entities.Media)
+                    if (media != null)
                     {
-                        if (media != null && !media.ContainsKey(ent.Url))
-                            media.Add(ent.Url, ent.MediaUrl);
+                        foreach (var ent in entities.Media)
+                        {
+                            List<string> mediaUrls;
+                            if (!media.TryGetValue(ent.Url, out mediaUrls))
+                            {
+                                mediaUrls = new List<string>();
+                                media.Add(ent.Url, mediaUrls);
+                            }
+                            else if (mediaUrls.Contains(ent.MediaUrl)) continue;
+                            mediaUrls.Add(ent.MediaUrl);
+                        }
                     }
                 }
             }
@@ -3017,7 +3035,7 @@ namespace OpenTween
         }
 
         [Obsolete]
-        public string CreateHtmlAnchor(string text, List<string> AtList, TwitterEntities entities, Dictionary<string, string> media)
+        public string CreateHtmlAnchor(string text, List<string> AtList, TwitterEntities entities, Dictionary<string, List<string>> media)
         {
             return this.CreateHtmlAnchorAsync(text, AtList, entities, media).Result;
         }