using aeqw89.DataKeys; using Beam.Dynamic; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; namespace Beam.Temporary.Cli { public static class NovelStatics { //public static void Define_LightNovelWorld_Novel_TheLegendaryMechanic(SharedDataDictionary sdd) { // var lnwAggregator = new DataKey("aeqw89:document:aggregators:light_novel_world"); // var lnwAuxiliary = new DataKey("aeqw89:document:auxillaries:light_novel_world"); // var novel = new TextResource() { // Key = new DataKey("novels:the_legendary_mechanic"), // AssociatedSource = lnwAggregator, // AssociatedMetaSource = lnwAuxiliary, // TemplateInitialData = ["the-legendary-mechanic-245", "1"], // MetaTemplateInitialData = ["the-legendary-mechanic"] // }; // sdd.Novels.TryAdd(novel.Key, novel); // sdd.AggregatorNovels.TryAdd(lnwAggregator, [novel.Key]); //} //public static void Define_LightNovelWorl_Novel_IAloneLevelUp(SharedDataDictionary sdd) { // var lnwAggregator = new DataKey("light_novel_world").ToAggregator().As(); // var lnwAuxiliary = new DataKey("light_novel_world").ToAuxiliary().As(); // var novel = new TextResource() { // Key = new DataKey("novels:i_alone_level_up"), // AssociatedSource = lnwAggregator, // AssociatedMetaSource = lnwAuxiliary, // TemplateInitialData = ["i-alone-level-up-236", "1"], // MetaTemplateInitialData = ["i-alone-level-up-solo-leveling-05122225"] // }; // sdd.Novels.TryAdd(novel.Key, novel); // sdd.AggregatorNovels.TryAdd(lnwAggregator, [novel.Key]); //} public static void Define_WoDuShu_HouseOfHorrors(BeamDataDictionary sdd) { var (wdsAgg, wdsAux) = CreateKeyPair("aggregators", "auxillaries", "wodushu", "aeqw89:document"); var novel = new TextResource() { Key = new DataKey("novels:house_of_horrors"), FriendlyName = "My House Of Horrors", AssociatedSource = wdsAgg, AssociatedMetaSource = wdsAux, TemplateInitialData = new ImmutableState(["24349", "2896325"]), MetaTemplateInitialData = new ImmutableState(["24349"]) }; sdd.Novels.TryAdd(novel.Key, novel); sdd.AggregatorNovels.TryAdd(wdsAgg, [novel.Key]); } private static (DataKey, DataKey) CreateKeyPair(string pref1, string pref2, string common, string @namespace) { return ( new DataKey(pref1 + ":" + common).WithNamespace(@namespace), new DataKey(pref2 + ":" + common).WithNamespace(@namespace) ); } public static void Define_WoDuShu(BeamDataDictionary sdd) { var (wdsAgg, wdsAux) = CreateKeyPair("aggregators", "auxillaries", "wodushu", "aeqw89:document"); var bindings = new DataKey("aeqw89:bindings:wodushu"); var aggregator = new WebResource(wdsAgg) { Name = "WoDuShu.com", Description = "A Chinese novel aggregator site", Domain = "https://wodushu.com", Bindings = bindings }; var auxiliary = new WebResource(wdsAux) { Name = "WoDuShu.com", Description = "A Chinese novel aggregator site", Domain = "https://wodushu.com", Bindings = bindings.WithSuffix("_aux") }; sdd.Templates.TryAdd(wdsAgg, new() { Factory = new(StateChangerFactory.LastAsNumber), Builder = new SourceLinkBuilder("www.wodushu.com") .WithSegments("read", "", "") .WithParameters(1, "") .WithParameters(2, (".html", Position.After)) }); sdd.Templates.TryAdd(wdsAux, new() { Factory = new(StateChangerFactory.Constant), Builder = new SourceLinkBuilder("www.wodushu.com") .WithSegments("book", "") .WithParameters(1, "") }); sdd.Aggregators.TryAdd(wdsAgg, aggregator); sdd.Auxillaries.TryAdd(wdsAux, auxiliary); var binding_agg = new DataKey("aeqw89:bindings:wodushu"); var binding_aux = new DataKey("aeqw89:bindings:wodushu_aux"); sdd.Bindings.Add(binding_agg, new() { Title = new ContentsDataProvider() { Content = new Binding() { XPath = "/html/body/div[4]/div/div/div[2]/h1" } }, Content = new ParagraphedContentDataProvider() { Content = new Binding() { XPath = "//*[@id=\"content\"]" } }, }); sdd.Bindings.Add(binding_aux, new() { Title = new ContentsDataProvider() { Content = new Binding() { XPath = "/html/body/div[3]/div[1]/div/div/div[2]/div[1]/h1" } }, Authors = new ContentsArrayDataProvider() { Content = new Binding() { XPath = "/html/body/div[3]/div[1]/div/div/div[2]/div[1]/div/p[1]/a" } }, Description = new ParagraphedContentDataProvider() { Content = new Binding() { XPath = "/html/body/div[3]/div[1]/div/div/div[2]/div[2]" } } }); } //public static void Define_NovelFull(SharedDataDictionary sdd) { // var docNamespace = "aeqw89:document"; // var nfAgg = new DataKey("aggregators:novel_full").WithNamespace(docNamespace); // var nfAux = new DataKey("auxillaries:novel_full").WithNamespace(docNamespace); // var nfBindings = new DataKey("aeqw89:bindings:light_novel_world"); // var aggregator = new WebResource(nfAgg) { // Name = "Novel Full", // Description = "A novel aggregator site", // Domain = "https://novelfull.net", // Bindings = nfBindings // }; // var auxiliary = new WebResource(nfAux) { // Name = "Novel Full", // Description = "A novel aggregator site", // Domain = "https://novelfull.net", // Bindings = nfBindings.WithSuffix("_aux") // }; // sdd.Templates.TryAdd(nfAux, new(StateChangerFactory.LastAsNumberPrefixed)); // sdd.Aggregators.TryAdd(nfAgg, aggregator); // sdd.Auxillaries.TryAdd(nfAux, auxiliary); // var binding_agg = new DataKey("aeqw89:bindings:be") //} //public static void Define_LightNovelWorld(SharedDataDictionary sdd) { // var lnwAggregator = new DataKey("aeqw89:document:aggregators:light_novel_world"); // var lnwAuxiliary = new DataKey("aeqw89:document:auxillaries:light_novel_world"); // const string lnwBindingsA = "aeqw89:bindings:light_novel_world"; // var aggregator = new WebResource(lnwAggregator) { // Name = "Light Novel World", // Description = "A novel aggregator site maintained by NetherClaw", // Domain = "https://www.lightnovelworld.co", // Bindings = new DataKey(lnwBindingsA) // }; // const string lnwBindingsB = "aeqw89:bindings:light_novel_world_aux"; // var auxiliary = new WebResource(lnwAuxiliary) { // Name = "Light Novel World", // Description = "A novel aggregator site maintained by NetherClaw", // Domain = "https://www.lightnovelworld.co", // Bindings = new DataKey(lnwBindingsB) // }; // sdd.Templates.TryAdd(lnwAuxiliary, new() { // Template = "https://www.lightnovelworld.co/novel/{0}", // IndexOfChapterIndex = -1 // }); // sdd.Templates.TryAdd(lnwAggregator, new() { // Template = "https://www.lightnovelworld.co/novel/{0}/chapter-{1}", // IndexOfChapterIndex = 1 // }); // sdd.Aggregators.TryAdd(aggregator.Key, aggregator); // sdd.Auxillaries.TryAdd(auxiliary.Key, auxiliary); // var lnwBindings = new DataKey(lnwBindingsA); // var lnwBindingsAux = new DataKey(lnwBindingsB); // sdd.Bindings.TryAdd(lnwBindings, new DataBindings() { // Title = new Binding("aeqw89:binding:light_novel_world:title") { // XPath = "/html/body/main/article/section/div[1]/h1/span[2]", // Type = BindingType.Single // }, // Content = new("aeqw89:binding:light_novel_world:content") { // Provider = new ParagraphedContentDataProvider() { // Content = new Binding() { // XPath = "//*[@id=\"chapter-container\"]" // } // }, // Type = BindingType.UseProvider // }, // }); // sdd.Bindings.TryAdd(lnwBindingsAux, new DataBindings() { // Title = new("aeqw89:binding:light_novel_world_aux:title") { // XPath = "/html/body/main/article/header/div[2]/div[2]/div[1]/h1", // Type = BindingType.Single // }, // Authors = new("aeqw89:binding:light_novel_world_aux:authors") { // XPath = "/html/body/main/article/header/div[2]/div[2]/div[1]/div[1]/a", // Type = BindingType.Single // }, // Description = new("aeqw89:binding:light_novel_world_aux:description") { // Provider = new ParagraphedContentDataProvider() { // Content = new() { // XPath = "/html/body/main/article/div/section/div[1]/div" // } // }, // Type = BindingType.UseProvider // }, // Tags = new("aeqw89:binding:light_novel_world_aux:tags") { // Provider = new ListContentDataProvider() { // Content = new() { // XPath = "/html/body/main/article/header/div[2]/div[2]/div[3]/ul" // } // }, // Type = BindingType.UseProvider // } // }); //} } }