public ActionResult <int> Add(ManagementRule item) { var maxId = 0; if (this._cache.Values.Count > 0) { maxId = this._cache.Keys.Max(); } item.Id = maxId + 1; if (this._cache.Values.Any(o => o.RuleString.Equals(item.RuleString, StringComparison.OrdinalIgnoreCase) && o.SearchPosition == item.SearchPosition)) { return(new ActionResult <int>(ActionStatus.Error, "Rule already exists")); } if (!this._cache.TryAdd(item.Id, item)) { return(new ActionResult <int>(ActionStatus.Error, "Id already exists, try again")); } if (item.IgnoreVideo) { item.Target = null; } var saveResult = this._storage.Save(this._cache); if (saveResult.Status != ActionStatus.Success) { return(new ActionResult <int>(saveResult)); } return(new ActionResult <int>(ActionStatus.Success, item.Id)); }
public ActionResult Update(ManagementRule item) { var cacheItemResult = Get(item.Id); if (cacheItemResult.Status != ActionStatus.Success) { return(cacheItemResult); } var oldRule = cacheItemResult.Data; oldRule.Regex = item.Regex; oldRule.RuleString = item.RuleString; oldRule.Target = item.IgnoreVideo ? null : item.Target; oldRule.IgnoreVideo = item.IgnoreVideo; oldRule.Priority = item.Priority; oldRule.SearchPosition = item.SearchPosition; this._storage.Save(this._cache); return(new ActionResult(ActionStatus.Success)); }
private void buttonAdd_Click(object sender, EventArgs e) { var rule = new ManagementRule { Regex = this.checkBoxRegex.Checked, RuleString = this.textBoxRule.Text, Target = this.comboBoxTarget.SelectedValue as string ?? this.comboBoxTarget.Text, IgnoreVideo = this.checkBoxIgnore.Checked, Priority = (int)this.numericUpDownPriority.Value, SearchPosition = (SearchPosition)this.comboBoxSearchPosition.SelectedValue }; var result = YtManagementClient.AddRule(rule); if (result.Status != ActionStatus.Success) { this.ShowTooltip(result.Message, ToolTipIcon.Error); return; } this.ShowTooltip("Success", ToolTipIcon.Info); ReloadRules(); }
private bool CheckRuleOnString(string text, ManagementRule rule, out ManagementRule matchedRule) { if (rule.Regex) { if (!Regex.IsMatch(text, rule.RuleString, RegexOptions.Singleline | RegexOptions.IgnoreCase)) { matchedRule = null; return(false); } matchedRule = rule; return(true); } else { if (text.IndexOf(rule.RuleString, StringComparison.OrdinalIgnoreCase) < 0) { matchedRule = null; return(false); } matchedRule = rule; return(true); } }
public static ActionResult UpdateRule(ManagementRule rule) { return(Post <ActionResult>("rules", rule)); }
public static ActionResult <int> AddRule(ManagementRule rule) { return(Put <ActionResult <int> >("rules", rule)); }
public Common.Model.ActionResult Put([FromBody] ManagementRule item) => _rulesRepository.Add(item);
public Common.Model.ActionResult Post([FromBody] ManagementRule item) => _rulesRepository.Update(item);
private void Process() { var subscriptionResult = ytService.GetSubscriptions(); if (subscriptionResult.Status != ActionStatus.Success) { return; } var rules = rulesRepository.GetAll().Data; foreach (var subscription in subscriptionResult.Data) { var uploads = ytService.GetUploads(subscription.Id); if (uploads.Status != ActionStatus.Success) { continue; } var unprocessedVideos = uploads.Data.Where(o => !ytService.IsProcessed(o.Id)).ToList(); foreach (var video in unprocessedVideos) // should only process new videos { Console.WriteLine("Checking video {0}", video.Title); ManagementRule matchedRule = null; foreach (var rule in rules.OrderByDescending(o => o.Priority)) { var success = false; switch (rule.SearchPosition) { case SearchPosition.VideoTitle: success = CheckRuleOnString(video.Title, rule, out matchedRule); break; case SearchPosition.ChannelTitle: success = CheckRuleOnString(subscription.Title, rule, out matchedRule); break; case SearchPosition.All: if (success = CheckRuleOnString(video.Title, rule, out matchedRule)) { break; } success |= CheckRuleOnString(subscription.Title, rule, out matchedRule); break; default: Console.WriteLine("SearchPosition {0} not supported", rule.SearchPosition); continue; } if (success) { break; } } if (matchedRule == null) { Console.WriteLine("No rules found for '{0}'", video.Title); continue; } matchedRule.LastMatch = DateTime.Now; if (!matchedRule.IgnoreVideo) { Console.WriteLine("Moving video '{0}' to '{1}'", video.Title, matchedRule.Target); var addResult = ytService.AddToPlaylist(video.Id, matchedRule.Target); if (addResult.Status != ActionStatus.Success) { Console.WriteLine("{0} {1}", addResult.Status, addResult.Message); continue; } } ytService.SetProcessed(video.Id, matchedRule.Id); } } }