public WikipediaItem(categorymembersSelect cm, WikipediaItem parent) { PageId = cm.pageid; Type = cm.type.Value; Title = cm.title; ParentItem = parent; }
private IEnumerable <LeechedResourceBase> leechContents(WikipediaItem parent) { IEnumerator <LeechedResourceBase> pagesEnumerator = null; try { var pages = _wiki.Query.categorymembers() .Where(c => c.title == parent.Title && c.type == categorymemberstype.page) .Pages; pagesEnumerator = leechPages(pages, parent).GetEnumerator(); } catch (Exception ex) { Debug.WriteLine("Exception encountered enumerating the members of \"{0}\": {1}", parent.Title, ex); } if (pagesEnumerator != null) { LeechedResourceBase page = null; do { try { page = pagesEnumerator.MoveNext() ? pagesEnumerator.Current : null; } catch (Exception ex) { Debug.WriteLine("Exception encountered leeching the members of \"{0}\": {1}", parent.Title, ex); } if (page != null) { yield return(page); } } while (page != null); } IEnumerator <categorymembersSelect> categoriesEnumerator = null; try { categoriesEnumerator = _wiki.Query.categorymembers() .Where(c => c.title == parent.Title && c.type == categorymemberstype.subcat) .ToEnumerable() .GetEnumerator(); } catch (Exception ex) { Debug.WriteLine("Exception encountered enumerating the subcategories of \"{0}\": {1}", parent.Title, ex); } if (categoriesEnumerator != null) { categorymembersSelect category = null; do { try { category = categoriesEnumerator.MoveNext() ? categoriesEnumerator.Current : null; } catch (Exception ex) { Debug.WriteLine("Exception encountered leeching the subcategories of \"{0}\": {1}", parent.Title, ex); } if (category != null) { WikipediaItem categoryItem = new WikipediaItem(category, parent); if (categoryNameBrowsable(categoryItem.Title) && browsedCategories.All(bc => bc.PageId != categoryItem.PageId)) { browsedCategories.Add(categoryItem); foreach (LeechedResourceBase leechedResource in leechContents(categoryItem)) { yield return(leechedResource); } } } } while (category != null); } }