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 HandleSingle() { if (File.Exists(TAGS_FILENAME)) { File.Delete(TAGS_FILENAME); } File.Move(TAGS_FILENAME + ".!tmp", TAGS_FILENAME); 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); } } File.Copy(TAGS_FILENAME, targetXml); SelectedProvider.LoadProviderTagCollection(); Program.Logger.Info(String.Format("[Download Tags] Private Tags.xml saved to {0}.", targetXml)); } // merge operation if (chkMerge.Checked) { Program.Logger.Debug("[Download Tags] Merging..."); lblStatus.Text = "Status: Merging..., this might take some times."; lblStatus.Invalidate(); lblStatus.Update(); lblStatus.Refresh(); Application.DoEvents(); 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"); } DanbooruTagsDao.Instance = new DanbooruTagsDao(TAGS_FILENAME); Program.Logger.Info("[Download Tags] Complete."); lblStatus.Text = "Status: Download complete."; if (chkAutoClose.Checked) { this.Close(); } }
public void TestImportTagList() { string tempName = @"../../../DanbooruDownloader3.test/TestXml/tags.xml.197.!tmp"; var tempList = new DanbooruTagsDao(tempName).Tags; Assert.IsTrue(tempList.Tag == null); tempName = @"../../../DanbooruDownloader3.test/TestXml/tags.xml.1.!tmp"; tempList = new DanbooruTagsDao(tempName).Tags; Assert.IsTrue(tempList.Tag != null); Assert.IsTrue(tempList.Tag.Length == 1000); }
public void TestMergeTagsXml() { string source = @"../../../DanbooruDownloader3.test/TestXml/tags-source.xml"; string actualTarget = @"../../../DanbooruDownloader3.test/TestXml/tags-target.xml"; string target = "tags-target.xml"; File.Copy(actualTarget, target); var message = DanbooruTagsDao.Merge(source, target); var targetInstance = new DanbooruTagsDao(target); Assert.IsTrue(targetInstance.Tags.Tag.Length > 0); }
public DanbooruTagCollection LoadProviderTagCollection() { try { DanbooruTagsDao dao = new DanbooruTagsDao("tags-" + Name + ".xml"); _hasPrivateTags = true; return(dao.Tags); } catch (FileNotFoundException) { _hasPrivateTags = false; return(DanbooruTagsDao.Instance.Tags); } }
public void TestDanbooruTagsDao() { { var dao = new DanbooruTagsDao(sourceDanbooruTagsXml); Assert.IsTrue(dao.IsArtistTag("raistlinkid")); Assert.IsTrue(dao.IsCopyrightTag("i_feel_fine")); Assert.IsTrue(dao.IsCharacterTag("geordi_la_forge")); //Assert.IsTrue(dao.IsCircleTag("")); //Assert.IsTrue(dao.IsFaultsTag("")); Assert.IsTrue(dao.GetTagType("cracking_knuckles") == DanbooruTagType.General); Assert.IsTrue(dao.GetTagType("unknown_tags!!!@!@#!") == DanbooruTagType.General); } }
private List <DanbooruTag> CombineLoopTag(int lastPage) { // construct the tag list from each xml List <DanbooruTag> newTagList = new List <DanbooruTag>(); for (int i = 1; i < lastPage; ++i) { Program.Logger.Debug("[Download Tags] Merging Page: " + i); lblStatus.Text = "Status: Merging Page: " + i + ", this might take some times."; lblStatus.Invalidate(); lblStatus.Update(); lblStatus.Refresh(); Application.DoEvents(); string tempName = TAGS_FILENAME + "." + i + ".!tmp"; DanbooruTagCollection tempTag; if (isSankaku) { SankakuComplexParser parser = new SankakuComplexParser(); tempTag = parser.parseTagsPage(File.ReadAllText(tempName), i); } else { tempTag = new DanbooruTagsDao(tempName).Tags; } if (tempTag != null && tempTag.Tag != null) { newTagList.AddRange(tempTag.Tag); } } for (int i = 1; i < lastPage; ++i) { string tempName = TAGS_FILENAME + "." + i + ".!tmp"; File.Delete(tempName); } return(newTagList); }
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; } }