private static List<Role> GetCast(string castSource) { var cast = new List<Role>(); var parts = Regex.Split(castSource, "<tr class="); foreach (var part in parts.Skip(1)) { var bit = part.Remove(0, part.IndexOf("<td class=\"name\">")); var actorBit = bit.Remove(bit.IndexOf("</td>")); actorBit = actorBit.Remove(0, actorBit.IndexOf("href")); var bits = Extractor.ExtractAndDecode(@"href=""/name/{X}/"" >{X}<", actorBit); var p = new Person {Name = bits[1], Url = bits[0]}; bit = part.Remove(0, part.IndexOf("<td class=\"character\"")); var characterBit = bit.Remove(bit.IndexOf("</div>")+2); if (characterBit.Contains("href=")) { characterBit = characterBit.Remove(0, characterBit.IndexOf("<div>") + 5); characterBit = characterBit.Remove(0, characterBit.IndexOf(">")); } else { characterBit = characterBit.Remove(0, characterBit.IndexOf("<div>")); } bits = Extractor.ExtractAndDecode(">{X}<", characterBit); cast.Add(new Role{Actor = p, CharacterName = bits[0]}); } return cast; }
private void AddToPersonCache(Person person) { if (!_personCache.ContainsKey(person.Name)) _personCache.Add(person.Name, person); }