Exemple #1
0
 private void CreateOrGetCharacters(Picture picture, List <CharacterData> characters)
 {
     foreach (var characterData in characters)
     {
         Character character = null;
         if (!characterData.Exists)
         {
             character = new Character
             {
                 Name          = characterData.SuggestedName,
                 FamilyName    = characterData.SuggestedFamilyName,
                 DanbooruName  = characterData.Tag,
                 Pictures      = new HashSet <Picture>(),
                 CharacterTags = new HashSet <CharacterTag>()
             };
             character.Pictures.Add(picture);
         }
         else
         {
             using (CharacterRepository repo = new CharacterRepository())
             {
                 character = repo.GetByDanbooruName(characterData.Tag);
                 character.Pictures.Add(picture);
             }
         }
         picture.Characters.Add(character);
     }
 }
 private void TransformCharacters(Post change, Picture picture)
 {
     if (change.Characters.Length == 0)
     {
         return;
     }
     using (CharacterRepository charRepo = new CharacterRepository())
     {
         foreach (var characterName in change.Characters)
         {
             Character character = charRepo.GetByDanbooruName(characterName);
             if (character == null)
             {
                 bool extractedAlready = false;
                 IEnumerable <Character> characterSet;
                 char[]   sep = { ' ' };
                 string[] characterTrueName = characterName.Split(sep, 2);
                 for (int i = 0; i < characterTrueName.Length; i++)
                 {
                     characterTrueName[i] = characterTrueName[i].Capitalize();
                 }
                 if (characterTrueName.Length == 1)
                 {
                     characterSet = _changedObjects.ChangedCharacters.Where(c => c.Name == characterTrueName[0]);
                 }
                 else
                 {
                     characterSet = _changedObjects.ChangedCharacters.Where(c => c.Name == characterTrueName[1] && c.FamilyName == characterTrueName[0]);
                 }
                 extractedAlready = characterSet.Count() != 0;
                 if (!extractedAlready)
                 {
                     character = new Character
                     {
                         Pictures      = new HashSet <Picture>(),
                         CharacterTags = new HashSet <CharacterTag>()
                     };
                     if (characterTrueName.Length != 1)
                     {
                         character.Name       = characterTrueName[1];
                         character.FamilyName = characterTrueName[0];
                     }
                     else
                     {
                         character.Name = characterTrueName[0];
                     }
                 }
                 else
                 {
                     character = characterSet.Single();
                 }
                 if (!_changedObjects.ChangedCharacters.Contains(character))
                 {
                     _changedObjects.ChangedCharacters.Add(character);
                 }
             }
             character.Pictures.Add(picture);
             picture.Characters.Add(character);
         }
     }
 }
Exemple #3
0
        private List <CharacterData> GetSuggestedCharacterData(string[] extractedCharacters)
        {
            var characters = new List <CharacterData>();

            foreach (var character in extractedCharacters)
            {
                var characterData = new CharacterData {
                    Tag = character
                };
                bool exists = false;
                using (CharacterRepository repo = new CharacterRepository())
                {
                    exists = repo.DoExistsByDanbooruName(character);
                }
                characterData.Exists = exists;

                string suggestedName, suggestedFamilyName, nameValue, bracketValue;
                suggestedName = suggestedFamilyName = nameValue = bracketValue = string.Empty;

                if (!exists)
                {
                    int openBracketIndex = character.IndexOf('(');
                    if (openBracketIndex != -1)
                    {
                        int closeBracketIndex = character.IndexOf(')');
                        int length            = closeBracketIndex - openBracketIndex - 1;
                        bracketValue = character.Substring(openBracketIndex + 1, length);
                        nameValue    = character.Substring(0, openBracketIndex - 1);
                    }
                    else
                    {
                        nameValue = character;
                    }

                    if (nameValue.Contains(' '))
                    {
                        int firstSpaceIndex = nameValue.IndexOf(' ');
                        suggestedFamilyName = nameValue.Substring(0, firstSpaceIndex);
                        suggestedName       = nameValue.Substring(firstSpaceIndex + 1);
                    }
                    else
                    {
                        suggestedName = nameValue;
                    }
                    suggestedName       = suggestedName.Capitalize();
                    suggestedFamilyName = suggestedFamilyName.Capitalize();
                }
                else
                {
                    using (CharacterRepository repo = new CharacterRepository())
                    {
                        Character charObj = repo.GetByDanbooruName(character);
                        suggestedName       = charObj.Name;
                        suggestedFamilyName = charObj.FamilyName;
                    }
                }

                characterData.SuggestedName       = suggestedName;
                characterData.SuggestedFamilyName = suggestedFamilyName;
                characters.Add(characterData);
            }
            return(characters);
        }