public void TestSankakuTagParser() { string target = @"../../../DanbooruDownloader3.test/TestXml/sankakutagspage.htm"; var data = File.ReadAllText(target); var parser = new SankakuComplexParser(); var result = parser.parseTagsPage(data, 1); Assert.IsNotNull(result); Assert.IsTrue(result.Tag.Length == 50, "Count: " + result.Tag.Length); List <DanbooruTag> newTagList = new List <DanbooruTag>(); target = @"../../../DanbooruDownloader3.test/TestXml/sankakutagspage-invalid.htm"; data = File.ReadAllText(target); parser = new SankakuComplexParser(); result = parser.parseTagsPage(data, 1); Assert.IsNotNull(result); Assert.IsTrue(result.Tag.Length == 50, "Count: " + result.Tag.Length); var filename = "dummy.xml"; DanbooruTagsDao.Save(filename, result.Tag.ToList()); DanbooruTagsDao dao = new DanbooruTagsDao(filename); }
private void HandleLoop(string tempName) { DanbooruTagCollection tempTags = null; if (isSankaku) { string data = File.ReadAllText(tempName); if (!string.IsNullOrWhiteSpace(data)) { tempTags = new SankakuComplexParser().parseTagsPage(data, Page); } else { string message = "Got empty response!"; Program.Logger.Error(message); ++retry; if (retry > Int32.Parse(DanbooruDownloader3.Properties.Settings.Default.retry)) { WaitForDelay(message); ProcessLoop(--Page); } else { MessageBox.Show(message); } } } else { tempTags = new DanbooruTagsDao(tempName).Tags; } if (tempTags == null || tempTags.Tag == null || tempTags.Tag.Length == 0 || (prevTag != null && prevTag.Tag.Last().Name == tempTags.Tag.Last().Name)) { // no more tags chkUseLoop.Enabled = true; var newTagList = CombineLoopTag(Page); if (SelectedProvider != null) { string targetXml = "tags-" + SelectedProvider.Name + ".xml"; if (File.Exists(targetXml)) { if (chkBackup.Checked) { string backupName = targetXml + ".bak"; if (File.Exists(backupName)) { File.Delete(backupName); } File.Move(targetXml, backupName); } else { File.Delete(targetXml); } } DanbooruTagsDao.Save(targetXml, newTagList); SelectedProvider.LoadProviderTagCollection(); Program.Logger.Info(String.Format("[Download Tags] Private Tags.xml saved to {0}.", targetXml)); } if (chkMerge.Checked) { Program.Logger.Debug("[Download Tags] Merging Old Tags."); lblStatus.Text = "Status: Merging Old Tags, this might take some times."; lblStatus.Invalidate(); lblStatus.Update(); lblStatus.Refresh(); Application.DoEvents(); DanbooruTagsDao.Save(TAGS_FILENAME + ".merge", newTagList); var message = DanbooruTagsDao.Merge(TAGS_FILENAME + ".merge", TAGS_FILENAME); Program.Logger.Info("[Download Tags] " + message); MessageBox.Show(message, "Tags.xml merged."); File.Delete(TAGS_FILENAME + ".merge"); } else { // write back to TAGS_FILENAME DanbooruTagsDao.Save(TAGS_FILENAME, newTagList); } DanbooruTagsDao.Instance = new DanbooruTagsDao(TAGS_FILENAME); Program.Logger.Info("[Download Tags] Complete."); lblStatus.Text = "Status: Download complete."; if (chkAutoClose.Checked) { this.Close(); } } else { // continue next page ProcessLoop(Page); prevTag = tempTags; } }