コード例 #1
0
        public IEnumerable <string> GetKeywords(IPartialRssItem rssItem)
        {
            foreach (var match in (IEnumerable <Match>) this._regex.Matches(rssItem.Title))
            {
                if (match.Groups.ContainsKey("keyword"))
                {
                    yield return(match.Groups["keyword"].Value);

                    continue;
                }

                if (match.Groups.ContainsKey("kw"))
                {
                    yield return(match.Groups["kw"].Value);

                    continue;
                }

                if (match.Groups.Count > 1)
                {
                    foreach (var gi in Enumerable.Range(1, match.Groups.Count - 1))
                    {
                        yield return(match.Groups[gi].Value);
                    }
                    continue;
                }

                yield return(match.Groups[0].Value);
            }
        }
コード例 #2
0
        public string[] GetKeywords(IPartialRssItem rssItem)
        {
            var finders  = this._finders;
            var excludes = this._excludes;

            return(finders.SelectMany(f => f.GetKeywords(rssItem))
                   .Where(z => !string.IsNullOrWhiteSpace(z))
                   .Distinct()
                   .Where(k => !excludes.Contains(k))
                   .ToArray());
        }
コード例 #3
0
        public IEnumerable <string> GetKeywords(IPartialRssItem item)
        {
            var magnetLink = item.GetPropertyOrDefault(RssItemProperties.MagnetLink);

            if (!string.IsNullOrWhiteSpace(magnetLink))
            {
                yield return(magnetLink);

                if (MagnetUri.TryParse(magnetLink, out var ml))
                {
                    yield return(ml.InfoHash);
                }
            }
        }
コード例 #4
0
ファイル: GroupService.cs プロジェクト: Cologler/RSSViewer
        private static string GetGroupName(IImmutableList <Regex> regexes, IPartialRssItem rssItem)
        {
            foreach (var re in regexes)
            {
                var match = re.Match(rssItem.Title);
                if (match.Success)
                {
                    if (match.Groups.ContainsKey("name"))
                    {
                        return(match.Groups["name"].Value.Trim());
                    }

                    if (match.Groups.Count > 1)
                    {
                        return(match.Groups[1].Value.Trim());
                    }

                    return(match.Groups[0].Value);
                }
            }

            return(string.Empty);
        }
コード例 #5
0
 public IEnumerable <string> GetKeywords(IPartialRssItem item)
 {
     yield return(item.Title);
 }
コード例 #6
0
 public bool IsMatch(IPartialRssItem rssItem) => true;
コード例 #7
0
 public static (string, string) GetKey(this IPartialRssItem rssItem) => (rssItem.FeedId, rssItem.RssId);
コード例 #8
0
 public bool IsMatch(IPartialRssItem rssItem) => this._stringMatcher.IsMatch(rssItem.Title);
コード例 #9
0
 public RssItemViewModel(IPartialRssItem rssItem) : base()
 {
     this.RssItem = rssItem;
 }