Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        public bool ContainsItem(AnkiItem item)
        {
            int matching = 1 + _ankiItems.Count(ankiItem => item == ankiItem);

            return(matching == item.Count);
        }