added option to prevent mention extraction in user's description
This commit is contained in:
parent
f0a0bb9f43
commit
a59ed49a9a
6 changed files with 40 additions and 35 deletions
|
@ -4,5 +4,6 @@
|
||||||
{
|
{
|
||||||
public string Domain { get; set; }
|
public string Domain { get; set; }
|
||||||
public string AdminEmail { get; set; }
|
public string AdminEmail { get; set; }
|
||||||
|
public bool ResolveMentionsInProfiles { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -43,7 +43,7 @@ namespace BirdsiteLive.Domain
|
||||||
var to = $"{actorUrl}/followers";
|
var to = $"{actorUrl}/followers";
|
||||||
var apPublic = "https://www.w3.org/ns/activitystreams#Public";
|
var apPublic = "https://www.w3.org/ns/activitystreams#Public";
|
||||||
|
|
||||||
var extractedTags = _statusExtractor.ExtractTags(tweet.MessageContent);
|
var extractedTags = _statusExtractor.Extract(tweet.MessageContent);
|
||||||
_statisticsHandler.ExtractedStatus(extractedTags.tags.Count(x => x.type == "Mention"));
|
_statisticsHandler.ExtractedStatus(extractedTags.tags.Count(x => x.type == "Mention"));
|
||||||
|
|
||||||
string inReplyTo = null;
|
string inReplyTo = null;
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace BirdsiteLive.Domain.Tools
|
||||||
{
|
{
|
||||||
public interface IStatusExtractor
|
public interface IStatusExtractor
|
||||||
{
|
{
|
||||||
(string content, Tag[] tags) ExtractTags(string messageContent);
|
(string content, Tag[] tags) Extract(string messageContent, bool extractMentions = true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class StatusExtractor : IStatusExtractor
|
public class StatusExtractor : IStatusExtractor
|
||||||
|
@ -36,7 +36,7 @@ namespace BirdsiteLive.Domain.Tools
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public (string content, Tag[] tags) ExtractTags(string messageContent)
|
public (string content, Tag[] tags) Extract(string messageContent, bool extractMentions = true)
|
||||||
{
|
{
|
||||||
var tags = new List<Tag>();
|
var tags = new List<Tag>();
|
||||||
messageContent = $" {messageContent} ";
|
messageContent = $" {messageContent} ";
|
||||||
|
@ -102,6 +102,8 @@ namespace BirdsiteLive.Domain.Tools
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract Mentions
|
// Extract Mentions
|
||||||
|
if (extractMentions)
|
||||||
|
{
|
||||||
var mentionMatch = OrderByLength(_mentionRegex.Matches(messageContent));
|
var mentionMatch = OrderByLength(_mentionRegex.Matches(messageContent));
|
||||||
foreach (Match m in mentionMatch.OrderByDescending(x => x.Length))
|
foreach (Match m in mentionMatch.OrderByDescending(x => x.Length))
|
||||||
{
|
{
|
||||||
|
@ -119,6 +121,7 @@ namespace BirdsiteLive.Domain.Tools
|
||||||
messageContent = Regex.Replace(messageContent, m.ToString(),
|
messageContent = Regex.Replace(messageContent, m.ToString(),
|
||||||
$@" <span class=""h-card""><a href=""https://{_instanceSettings.Domain}/@{mention}"" class=""u-url mention"">@<span>{mention}</span></a></span>");
|
$@" <span class=""h-card""><a href=""https://{_instanceSettings.Domain}/@{mention}"" class=""u-url mention"">@<span>{mention}</span></a></span>");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Clean up return lines
|
// Clean up return lines
|
||||||
messageContent = Regex.Replace(messageContent, @"<p> ", "<p>");
|
messageContent = Regex.Replace(messageContent, @"<p> ", "<p>");
|
||||||
|
|
|
@ -59,7 +59,7 @@ namespace BirdsiteLive.Domain
|
||||||
var description = twitterUser.Description;
|
var description = twitterUser.Description;
|
||||||
if (!string.IsNullOrWhiteSpace(description))
|
if (!string.IsNullOrWhiteSpace(description))
|
||||||
{
|
{
|
||||||
var extracted = _statusExtractor.ExtractTags(description);
|
var extracted = _statusExtractor.Extract(description, _instanceSettings.ResolveMentionsInProfiles);
|
||||||
description = extracted.content;
|
description = extracted.content;
|
||||||
|
|
||||||
_statisticsHandler.ExtractedDescription(extracted.tags.Count(x => x.type == "Mention"));
|
_statisticsHandler.ExtractedDescription(extracted.tags.Count(x => x.type == "Mention"));
|
||||||
|
|
|
@ -11,7 +11,8 @@
|
||||||
"AllowedHosts": "*",
|
"AllowedHosts": "*",
|
||||||
"Instance": {
|
"Instance": {
|
||||||
"Domain": "domain.name",
|
"Domain": "domain.name",
|
||||||
"AdminEmail": "me@domain.name"
|
"AdminEmail": "me@domain.name",
|
||||||
|
"ResolveMentionsInProfiles": true
|
||||||
},
|
},
|
||||||
"Db": {
|
"Db": {
|
||||||
"Type": "postgres",
|
"Type": "postgres",
|
||||||
|
|
|
@ -30,7 +30,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var service = new StatusExtractor(_settings);
|
var service = new StatusExtractor(_settings);
|
||||||
var result = service.ExtractTags(message);
|
var result = service.Extract(message);
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
Assert.IsTrue(result.content.Contains("Bla."));
|
Assert.IsTrue(result.content.Contains("Bla."));
|
||||||
|
@ -46,7 +46,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var service = new StatusExtractor(_settings);
|
var service = new StatusExtractor(_settings);
|
||||||
var result = service.ExtractTags(message);
|
var result = service.Extract(message);
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
Assert.IsTrue(result.content.Contains("Bla."));
|
Assert.IsTrue(result.content.Contains("Bla."));
|
||||||
|
@ -62,7 +62,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var service = new StatusExtractor(_settings);
|
var service = new StatusExtractor(_settings);
|
||||||
var result = service.ExtractTags(message);
|
var result = service.Extract(message);
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
Assert.AreEqual(0, result.tags.Length);
|
Assert.AreEqual(0, result.tags.Length);
|
||||||
|
@ -80,7 +80,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var service = new StatusExtractor(_settings);
|
var service = new StatusExtractor(_settings);
|
||||||
var result = service.ExtractTags(message);
|
var result = service.Extract(message);
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
Assert.AreEqual(0, result.tags.Length);
|
Assert.AreEqual(0, result.tags.Length);
|
||||||
|
@ -98,7 +98,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var service = new StatusExtractor(_settings);
|
var service = new StatusExtractor(_settings);
|
||||||
var result = service.ExtractTags(message);
|
var result = service.Extract(message);
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
Assert.AreEqual(0, result.tags.Length);
|
Assert.AreEqual(0, result.tags.Length);
|
||||||
|
@ -116,7 +116,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var service = new StatusExtractor(_settings);
|
var service = new StatusExtractor(_settings);
|
||||||
var result = service.ExtractTags(message);
|
var result = service.Extract(message);
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
Assert.AreEqual(0, result.tags.Length);
|
Assert.AreEqual(0, result.tags.Length);
|
||||||
|
@ -136,7 +136,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var service = new StatusExtractor(_settings);
|
var service = new StatusExtractor(_settings);
|
||||||
var result = service.ExtractTags(message);
|
var result = service.Extract(message);
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
Assert.AreEqual(1, result.tags.Length);
|
Assert.AreEqual(1, result.tags.Length);
|
||||||
|
@ -157,7 +157,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var service = new StatusExtractor(_settings);
|
var service = new StatusExtractor(_settings);
|
||||||
var result = service.ExtractTags(message);
|
var result = service.Extract(message);
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
Assert.AreEqual(1, result.tags.Length);
|
Assert.AreEqual(1, result.tags.Length);
|
||||||
|
@ -178,7 +178,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var service = new StatusExtractor(_settings);
|
var service = new StatusExtractor(_settings);
|
||||||
var result = service.ExtractTags(message);
|
var result = service.Extract(message);
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
Assert.AreEqual(1, result.tags.Length);
|
Assert.AreEqual(1, result.tags.Length);
|
||||||
|
@ -199,7 +199,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var service = new StatusExtractor(_settings);
|
var service = new StatusExtractor(_settings);
|
||||||
var result = service.ExtractTags(message);
|
var result = service.Extract(message);
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
Assert.AreEqual(4, result.tags.Length);
|
Assert.AreEqual(4, result.tags.Length);
|
||||||
|
@ -219,7 +219,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var service = new StatusExtractor(_settings);
|
var service = new StatusExtractor(_settings);
|
||||||
var result = service.ExtractTags(message);
|
var result = service.Extract(message);
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
Assert.AreEqual(1, result.tags.Length);
|
Assert.AreEqual(1, result.tags.Length);
|
||||||
|
@ -240,7 +240,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var service = new StatusExtractor(_settings);
|
var service = new StatusExtractor(_settings);
|
||||||
var result = service.ExtractTags(message);
|
var result = service.Extract(message);
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
Assert.AreEqual(1, result.tags.Length);
|
Assert.AreEqual(1, result.tags.Length);
|
||||||
|
@ -261,7 +261,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var service = new StatusExtractor(_settings);
|
var service = new StatusExtractor(_settings);
|
||||||
var result = service.ExtractTags(message);
|
var result = service.Extract(message);
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
Assert.AreEqual(1, result.tags.Length);
|
Assert.AreEqual(1, result.tags.Length);
|
||||||
|
@ -282,7 +282,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var service = new StatusExtractor(_settings);
|
var service = new StatusExtractor(_settings);
|
||||||
var result = service.ExtractTags(message);
|
var result = service.Extract(message);
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
Assert.AreEqual(4, result.tags.Length);
|
Assert.AreEqual(4, result.tags.Length);
|
||||||
|
@ -302,7 +302,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var service = new StatusExtractor(_settings);
|
var service = new StatusExtractor(_settings);
|
||||||
var result = service.ExtractTags(message);
|
var result = service.Extract(message);
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
Assert.AreEqual(5, result.tags.Length);
|
Assert.AreEqual(5, result.tags.Length);
|
||||||
|
@ -325,7 +325,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var service = new StatusExtractor(_settings);
|
var service = new StatusExtractor(_settings);
|
||||||
var result = service.ExtractTags(message);
|
var result = service.Extract(message);
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
Assert.AreEqual(1, result.tags.Length);
|
Assert.AreEqual(1, result.tags.Length);
|
||||||
|
@ -345,7 +345,7 @@ namespace BirdsiteLive.Domain.Tests.Tools
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var service = new StatusExtractor(_settings);
|
var service = new StatusExtractor(_settings);
|
||||||
var result = service.ExtractTags(message);
|
var result = service.Extract(message);
|
||||||
|
|
||||||
#region Validations
|
#region Validations
|
||||||
Assert.AreEqual(1, result.tags.Length);
|
Assert.AreEqual(1, result.tags.Length);
|
||||||
|
|
Loading…
Add table
Reference in a new issue