2020-03-13 13:57:10 +01:00
|
|
|
|
using System.Linq;
|
2020-01-30 20:57:41 +01:00
|
|
|
|
using System.Text.RegularExpressions;
|
|
|
|
|
using System.Threading.Tasks;
|
2020-03-13 13:57:10 +01:00
|
|
|
|
using System.Web;
|
2020-01-30 20:57:41 +01:00
|
|
|
|
using Telegram.Bot.Types;
|
|
|
|
|
using Telegram.Bot.Types.Enums;
|
|
|
|
|
|
|
|
|
|
namespace RSSBot {
|
|
|
|
|
public static class Utils {
|
2020-03-13 13:57:10 +01:00
|
|
|
|
private static readonly Regex RegexHtml = new Regex("<.*?>");
|
|
|
|
|
|
2020-11-05 19:34:45 +01:00
|
|
|
|
public static string StripHtml(string input)
|
|
|
|
|
{
|
2020-03-13 13:57:10 +01:00
|
|
|
|
return RegexHtml.Replace(input, string.Empty).Trim();
|
2020-01-30 20:57:41 +01:00
|
|
|
|
}
|
|
|
|
|
|
2020-11-05 19:34:45 +01:00
|
|
|
|
private static string CleanRss(string input)
|
|
|
|
|
{
|
2020-01-30 20:57:41 +01:00
|
|
|
|
string[] replacements = {
|
2020-03-13 22:43:40 +01:00
|
|
|
|
"[←]",
|
2020-01-30 20:57:41 +01:00
|
|
|
|
"[…]",
|
2020-03-13 22:43:40 +01:00
|
|
|
|
"[...]",
|
2020-01-30 20:57:41 +01:00
|
|
|
|
"[bilder]",
|
|
|
|
|
"[boerse]",
|
|
|
|
|
"[mehr]",
|
|
|
|
|
"[video]",
|
|
|
|
|
"...[more]",
|
|
|
|
|
"[more]",
|
|
|
|
|
"[liveticker]",
|
|
|
|
|
"[livestream]",
|
|
|
|
|
"[multimedia]",
|
|
|
|
|
"[sportschau]",
|
|
|
|
|
"[phoenix]",
|
|
|
|
|
"[swr]",
|
|
|
|
|
"[ndr]",
|
|
|
|
|
"[mdr]",
|
|
|
|
|
"[rbb]",
|
|
|
|
|
"[wdr]",
|
|
|
|
|
"[hr]",
|
|
|
|
|
"[br]",
|
|
|
|
|
"Click for full.",
|
|
|
|
|
"Read more »",
|
|
|
|
|
"Read more",
|
|
|
|
|
"...Read More",
|
2020-05-03 18:52:56 +02:00
|
|
|
|
"...mehr lesen",
|
|
|
|
|
"mehr lesen",
|
2020-01-30 20:57:41 +01:00
|
|
|
|
"(more…)",
|
|
|
|
|
"View On WordPress",
|
|
|
|
|
"Continue reading →",
|
2020-03-13 22:43:40 +01:00
|
|
|
|
"» weiterlesen",
|
|
|
|
|
"(Feed generated with FetchRSS)",
|
2020-01-30 20:57:41 +01:00
|
|
|
|
"(RSS generated with FetchRss)",
|
|
|
|
|
"-- Delivered by Feed43 service",
|
|
|
|
|
"Meldung bei www.tagesschau.de lesen"
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
string[] regexReplacements = {
|
|
|
|
|
"Der Beitrag.*erschien zuerst auf .+.",
|
|
|
|
|
"The post.*appeared first on .+.",
|
|
|
|
|
"http://www.serienjunkies.de/.*.html"
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
input = replacements.Aggregate(input, (current, replacement) => current.Replace(replacement, ""));
|
|
|
|
|
input = regexReplacements.Aggregate(input,
|
|
|
|
|
(current, replacement) => Regex.Replace(current, replacement, ""));
|
|
|
|
|
|
|
|
|
|
return input;
|
|
|
|
|
}
|
|
|
|
|
|
2020-11-05 19:34:45 +01:00
|
|
|
|
public static string ProcessContent(string input)
|
|
|
|
|
{
|
|
|
|
|
string content = StripHtml(HttpUtility.HtmlDecode(input));
|
2020-01-30 20:57:41 +01:00
|
|
|
|
content = CleanRss(content);
|
2020-11-05 19:34:45 +01:00
|
|
|
|
if (content.Length > 250) {
|
|
|
|
|
content = content.Substring(0, 250) + "...";
|
|
|
|
|
}
|
2020-01-30 20:57:41 +01:00
|
|
|
|
|
|
|
|
|
return content;
|
|
|
|
|
}
|
|
|
|
|
|
2020-11-05 19:34:45 +01:00
|
|
|
|
public static GroupCollection ReturnMatches(string text, string pattern)
|
|
|
|
|
{
|
2020-01-30 20:57:41 +01:00
|
|
|
|
return Regex.Match(text,
|
|
|
|
|
pattern,
|
|
|
|
|
RegexOptions.IgnoreCase
|
|
|
|
|
).Groups;
|
|
|
|
|
}
|
|
|
|
|
|
2020-11-05 19:34:45 +01:00
|
|
|
|
public static async Task<bool> IsBotAdmin(long chatId)
|
|
|
|
|
{
|
2020-01-30 20:57:41 +01:00
|
|
|
|
ChatMember chatMember = await Bot.BotClient.GetChatMemberAsync(chatId, Bot.BotClient.BotId);
|
|
|
|
|
return chatMember.Status.Equals(ChatMemberStatus.Administrator);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|