Initial implementation of voice works scanning.

This commit is contained in:
2025-09-11 00:07:49 -04:00
parent f250276a99
commit 3c0a39b324
50 changed files with 1351 additions and 88 deletions

View File

@@ -0,0 +1,79 @@
using JSMR.Infrastructure.Scanning;
using Shouldly;
namespace JSMR.Tests.Unit;
public class DLSiteSearchFilterBuilderTests
{
[Fact]
public void Build_Simple_Query()
{
var filterBuilder = new DLSiteSearchFilterBuilder()
.UseDefaultLocale()
.IncludeJapaneseSupportedLanguage();
string url = filterBuilder.BuildSearchQuery(1, 100);
using var writer = new StringWriter();
writer.Write($"https://www.dlsite.com/maniax/");
writer.Write($"fsr/=/language/jp/");
writer.Write("sex_category[0]/male/");
writer.Write("ana_flg/all/");
writer.Write("work_category[0]/doujin/");
writer.Write("order[0]/release_d/");
writer.Write("work_type_category[0]/audio/");
writer.Write("work_type_category_name[0]/ボイス・ASMR/");
writer.Write("options_and_or/and/");
writer.Write($"options[0]/JPN/");
writer.Write($"per_page/100/");
writer.Write($"page/1/");
writer.Write("show_type/1/");
writer.Write($"?locale=ja_JP");
url.ShouldBe(writer.ToString());
}
[Fact]
public void Build_Advanced_Query()
{
var filterBuilder = new DLSiteSearchFilterBuilder()
.UseEnglishLocale()
.IncludeJapaneseSupportedLanguage()
.IncludeEnglishSupportedLanguage()
.ExcludeMakers(["RG0000001", "RG0000002", "", "RG0000001"])
.ExcludePartiallyAIGeneratedWorks()
.ExcludeAIGeneratedWorks();
string url = filterBuilder.BuildSearchQuery(1, 100);
using var writer = new StringWriter();
writer.Write($"https://www.dlsite.com/maniax/");
writer.Write($"fsr/=/language/en/");
writer.Write("sex_category[0]/male/");
writer.Write("ana_flg/all/");
writer.Write("work_category[0]/doujin/");
writer.Write("order[0]/release_d/");
writer.Write("work_type_category[0]/audio/");
writer.Write("work_type_category_name[0]/ボイス・ASMR/");
writer.Write("options_and_or/and/");
writer.Write($"options[0]/JPN/");
writer.Write($"options[1]/ENG/");
writer.Write($"keyword_maker_name/-RG0000001+-RG0000002/");
writer.Write($"options_not[0]/AIP/");
writer.Write($"options_not[1]/AIG/");
writer.Write($"per_page/100/");
writer.Write($"page/1/");
writer.Write("show_type/1/");
writer.Write($"?locale=en_US");
url.ShouldBe(writer.ToString());
}
}

View File

@@ -10,15 +10,15 @@ public class MySqlBooleanQueryTests
{
string normalizedValue = MySqlBooleanQuery.Normalize("value1 value2|value3 -value4 \"value 5\"");
normalizedValue.ShouldBe("+value1 +(value2|value3) -value4 +\"value 5\"");
normalizedValue.ShouldBe("+value1 +(value2 value3) -value4 +\"value 5\"");
}
[Fact]
public void Normalize_Unusual_Usage()
{
string normalizedValue = MySqlBooleanQuery.Normalize("+value1 +(value2|value3) -value4 +\"value 5\"");
string normalizedValue = MySqlBooleanQuery.Normalize("+value1 +(value2 value3) -value4 +\"value 5\"");
normalizedValue.ShouldBe("+value1 +(value2|value3) -value4 +\"value 5\"");
normalizedValue.ShouldBe("+value1 +(value2 value3) -value4 +\"value 5\"");
}
[Fact]
@@ -28,4 +28,12 @@ public class MySqlBooleanQueryTests
normalizedValue.ShouldBe("+value1 +value2 +value3");
}
[Fact]
public void Normalize_Bad_Or_Data()
{
string normalizedValue = MySqlBooleanQuery.Normalize("value1 | value2");
normalizedValue.ShouldBe("+value1 +value2");
}
}