[DataContract]
public class TwitterEntities
{
- [DataMember(Name = "hashtags")]
+ [DataMember(Name = "hashtags", IsRequired = false)]
public TwitterEntityHashtag[] Hashtags { get; set; }
[DataMember(Name = "media", IsRequired = false)]
public TwitterEntityMedia[] Media { get; set; }
- [DataMember(Name = "urls")]
+ [DataMember(Name = "urls", IsRequired = false)]
public TwitterEntityUrl[] Urls { get; set; }
- [DataMember(Name = "user_mentions")]
+ [DataMember(Name = "user_mentions", IsRequired = false)]
public TwitterEntityMention[] UserMentions { get; set; }
}
[DataMember(Name = "entities")]
public TwitterEntities Entities { get; set; }
+ [DataMember(Name = "extended_entities", IsRequired = false)]
+ public TwitterEntities ExtendedEntities { get; set; }
+
[DataMember(Name = "favorite_count")]
public int? FavoriteCount { get; set; }
[DataMember(Name = "withheld_scope")]
public string WithheldScope { get; set; }
+ /// <summary>
+ /// Entities と ExtendedEntities をマージした状態のエンティティを返します
+ /// </summary>
+ [IgnoreDataMember]
+ public TwitterEntities MergedEntities
+ {
+ get
+ {
+ if (this.ExtendedEntities == null)
+ return this.Entities;
+
+ return new TwitterEntities
+ {
+ Hashtags = this.ExtendedEntities.Hashtags ?? this.Entities.Hashtags,
+ Media = this.ExtendedEntities.Media ?? this.Entities.Media,
+ Urls = this.ExtendedEntities.Urls ?? this.Entities.Urls,
+ UserMentions = this.ExtendedEntities.UserMentions ?? this.Entities.UserMentions,
+ };
+ }
+ }
+
/// <exception cref="SerializationException"/>
public static TwitterStatus ParseJson(string json)
{
更新履歴
==== Ver 1.2.1-beta1(2014/xx/xx)
+ * NEW: 5月28日(太平洋夏時間, UTC-7)から追加される予定の pic.twitter.com の複数枚画像表示に対応しました
+ - pic.twitter.com への複数枚画像の投稿は未対応です
* CHG: 起動時に .NET Framework 4.5.1 以降がインストールされているか確認を行います
* CHG: Foursquareの地図表示を swarmapp.com のURLでも表示可能にしました
* FIX: 発言詳細欄から右クリックで日本語ハッシュタグを固定すると、エンコード状態のハッシュタグが登録される問題を修正
post.RetweetedId = retweeted.Id;
//本文
post.TextFromApi = retweeted.Text;
- entities = retweeted.Entities;
+ entities = retweeted.MergedEntities;
//Source取得(htmlの場合は、中身を取り出し)
post.Source = retweeted.Source;
//Reply先
post.CreatedAt = MyCommon.DateTimeParse(status.CreatedAt);
//本文
post.TextFromApi = status.Text;
- entities = status.Entities;
+ entities = status.MergedEntities;
//Source取得(htmlの場合は、中身を取り出し)
post.Source = status.Source;
post.InReplyToStatusId = status.InReplyToStatusId;
post.RetweetedId = post.StatusId;
//本文
post.TextFromApi = retweeted.Text;
- entities = retweeted.Entities;
+ entities = retweeted.MergedEntities;
//Source取得(htmlの場合は、中身を取り出し)
post.Source = retweeted.Source;
//Reply先
//本文
post.TextFromApi = status.Text;
- entities = status.Entities;
+ entities = status.MergedEntities;
//Source取得(htmlの場合は、中身を取り出し)
post.Source = status.Source;
post.InReplyToStatusId = status.InReplyToStatusId;
if (status != null)
{
- var html = await this.Twitter.CreateHtmlAnchorAsync(status.Text, atlist, status.Entities, null);
+ var html = await this.Twitter.CreateHtmlAnchorAsync(status.Text, atlist, status.MergedEntities, null);
html = this.Owner.createDetailHtml(html +
" Posted at " + MyCommon.DateTimeParse(status.CreatedAt) +
" via " + status.Source);