public string CreateHtmlAnchor(string text, List<string> AtList, TwitterEntities entities, List<MediaInfo> media)
{
if (entities != null)
{
if (entities.Hashtags != null)
{
lock (this.LockObj)
{
this._hashList.AddRange(entities.Hashtags.Select(x => "#" + x.Text));
}
}
if (entities.UserMentions != null)
{
foreach (var ent in entities.UserMentions)
{
var screenName = ent.ScreenName.ToLowerInvariant();
if (!AtList.Contains(screenName))
AtList.Add(screenName);
}
}
if (entities.Media != null)
{
if (media != null)
{
foreach (var ent in entities.Media)
{
if (!media.Any(x => x.Url == ent.MediaUrl))
{
if (ent.VideoInfo != null &&
ent.Type == "animated_gif" || ent.Type == "video")
{
//var videoUrl = ent.VideoInfo.Variants
// .Where(v => v.ContentType == "video/mp4")
// .OrderByDescending(v => v.Bitrate)
// .Select(v => v.Url).FirstOrDefault();
media.Add(new MediaInfo(ent.MediaUrl, ent.AltText, ent.ExpandedUrl));
}
else
media.Add(new MediaInfo(ent.MediaUrl, ent.AltText, videoUrl: null));
}
}
}
}
}
// PostClass.ExpandedUrlInfo を使用して非同期に URL 展開を行うためここでは expanded_url を使用しない
text = TweetFormatter.AutoLinkHtml(text, entities, keepTco: true);
text = Regex.Replace(text, "(^|[^a-zA-Z0-9_/&##@@>=.~])(sm|nm)([0-9]{1,10})", "$1<a href=\"http://www.nicovideo.jp/watch/$2$3\">$2$3</a>");
text = PreProcessUrl(text); //IDN置換
return text;
}