private string CreateAudio(int j, AnkiItem item, string type) { const string audioTemplate = "[sound:{0}]"; const string filePrefix = "DeckHelper-"; string textField = MediaInfo.FrontTextField; string audioField = MediaInfo.FrontAudioField; CultureInfo cultureInfo = MediaInfo.FrontCultureInfo; if (type == "B") { textField = MediaInfo.BackTextField; audioField = MediaInfo.BackAudioField; cultureInfo = MediaInfo.BackCultureInfo; } if (textField == null || audioField == null || cultureInfo == null) { return(String.Empty); } SynthetizerHelper.CreateAudio(Path.Combine(_path, j.ToString()), GeneralHelper.ProcessString(item[textField].ToString()), cultureInfo, MediaInfo.Bitrate); var fileName = filePrefix + DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() + MediaInfo.Extension; int indexOfAudioField = Array.IndexOf(item.Keys.ToArray(), audioField); if (indexOfAudioField != -1) { item.Set(audioField, String.Format(audioTemplate, fileName)); } return(fileName); }
/// <summary> /// Creates an AnkiItem and add it to the Anki object /// </summary> public void AddItem(params string[] properties) { var mid = ""; IDictionaryEnumerator myEnumerator = _infoPerMid.GetEnumerator(); while (myEnumerator.MoveNext()) { if (IsRightFieldList((myEnumerator.Value as Info).Item3, properties)) { mid = myEnumerator.Key.ToString(); break; } } if (mid == "" || (_infoPerMid.Contains(mid) && properties.Length != (_infoPerMid[mid] as Info).Item3.Count)) { throw new ArgumentException("Number of fields provided is not the same as the one expected"); } AnkiItem item = new AnkiItem((_infoPerMid[mid] as Info).Item3, properties) { Mid = mid }; if (ContainsItem(item) == true) { return; } _ankiItems.Add(item); }
/// <summary> /// Tell if the anki object contains an AnkiItem (strict comparison) /// </summary> public bool ContainsItem(AnkiItem item) { int matching = 1; foreach (var ankiItem in _ankiItems) { if (item == ankiItem) { ++matching; } } return(matching == item.Count ? true : false); }
/// <summary> /// Add AnkiItem to the Anki object /// </summary> public void AddItem(AnkiItem item) { if (item.Mid == "") { item.Mid = "DEFAULT"; } if (_infoPerMid.Contains(item.Mid) && item.Count != (_infoPerMid[item.Mid] as Info).Item3.Count) { throw new ArgumentException("Number of fields provided is not the same as the one expected"); } else if (ContainsItem(item) == true) { return; } _ankiItems.Add(item); }
public bool ContainsItem(AnkiItem item) { int matching = 1 + _ankiItems.Count(ankiItem => item == ankiItem); return(matching == item.Count); }