mirror of
				https://github.com/Nioux/AideDeJeu.git
				synced 2025-10-31 07:26:09 +00:00 
			
		
		
		
	Adaptation aux nouvelles pages AideDD
This commit is contained in:
		
							parent
							
								
									28d833c94d
								
							
						
					
					
						commit
						e487488f60
					
				
					 8 changed files with 62 additions and 36 deletions
				
			
		|  | @ -178,15 +178,15 @@ namespace AideDeJeu.ViewModels | ||||||
| 
 | 
 | ||||||
|                 //try |                 //try | ||||||
|                 //{ |                 //{ | ||||||
|                 ItemDatabaseHelper<ItemDatabaseContext> helper = new ItemDatabaseHelper<ItemDatabaseContext>(); |                 //ItemDatabaseHelper<ItemDatabaseContext> helper = new ItemDatabaseHelper<ItemDatabaseContext>(); | ||||||
|                 await helper.AddOrUpdateSpellsAsync(items); |                 //await helper.AddOrUpdateSpellsAsync(items); | ||||||
|                 var items2 = await helper.GetSpellsAsync(); |                 //var items2 = await helper.GetSpellsAsync(); | ||||||
|                 //} |                 //} | ||||||
|                 //catch(Exception ex) |                 //catch(Exception ex) | ||||||
|                 //{ |                 //{ | ||||||
|                 //    Debug.WriteLine(ex); |                 //    Debug.WriteLine(ex); | ||||||
|                 //} |                 //} | ||||||
|                 var aitems = items2.ToArray(); |                 var aitems = items.ToArray(); | ||||||
|                 Array.Sort(aitems, new ItemComparer()); |                 Array.Sort(aitems, new ItemComparer()); | ||||||
|                 foreach (var item in aitems) |                 foreach (var item in aitems) | ||||||
|                 { |                 { | ||||||
|  |  | ||||||
|  | @ -8,6 +8,9 @@ | ||||||
|     <ContentPage.BindingContext> |     <ContentPage.BindingContext> | ||||||
|         <vm:AboutViewModel /> |         <vm:AboutViewModel /> | ||||||
|     </ContentPage.BindingContext> |     </ContentPage.BindingContext> | ||||||
|  |     <ContentPage.ToolbarItems> | ||||||
|  |         <ToolbarItem Text="truc" /> | ||||||
|  |     </ContentPage.ToolbarItems> | ||||||
|     <Grid> |     <Grid> | ||||||
|         <Grid.RowDefinitions> |         <Grid.RowDefinitions> | ||||||
|             <RowDefinition Height="Auto" /> |             <RowDefinition Height="Auto" /> | ||||||
|  |  | ||||||
|  | @ -99,11 +99,12 @@ | ||||||
|                     ItemsSource="{Binding Items}" |                     ItemsSource="{Binding Items}" | ||||||
|                     VerticalOptions="FillAndExpand" |                     VerticalOptions="FillAndExpand" | ||||||
|                     HasUnevenRows="true" |                     HasUnevenRows="true" | ||||||
|                     RefreshCommand="{Binding LoadItemsCommand}" |  | ||||||
|                     IsPullToRefreshEnabled="true" |  | ||||||
|                     IsRefreshing="{Binding IsBusy, Mode=OneWay}" |                     IsRefreshing="{Binding IsBusy, Mode=OneWay}" | ||||||
|                     CachingStrategy="RecycleElement" |                     CachingStrategy="RecycleElement" | ||||||
|                     SelectedItem="{Binding SelectedItem}"> |                     SelectedItem="{Binding SelectedItem}"> | ||||||
|  |                     <!--RefreshCommand="{Binding LoadItemsCommand}" | ||||||
|  |                     IsPullToRefreshEnabled="true"--> | ||||||
|  | 
 | ||||||
|                     <ListView.ItemTemplate> |                     <ListView.ItemTemplate> | ||||||
|                         <DataTemplate> |                         <DataTemplate> | ||||||
|                             <ViewCell> |                             <ViewCell> | ||||||
|  |  | ||||||
|  | @ -12,5 +12,6 @@ namespace AideDeJeuLib | ||||||
|         public string Name { get; set; } |         public string Name { get; set; } | ||||||
|         public string NameVO { get; set; } |         public string NameVO { get; set; } | ||||||
|         public string NamePHB { get; set; } |         public string NamePHB { get; set; } | ||||||
|  |         public string Html { get; set; } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -72,13 +72,21 @@ namespace AideDeJeuLib.Monsters | ||||||
|         public static Monster FromHtml(HtmlNode divBloc) |         public static Monster FromHtml(HtmlNode divBloc) | ||||||
|         { |         { | ||||||
|             var monster = new Monster(); |             var monster = new Monster(); | ||||||
|  |             monster.Html = divBloc.OuterHtml; | ||||||
|             var divMonster = divBloc?.SelectSingleNode("div[contains(@class,'monstre')]"); |             var divMonster = divBloc?.SelectSingleNode("div[contains(@class,'monstre')]"); | ||||||
|             monster.Name = divMonster?.SelectSingleNode("h1").InnerText; |             monster.Name = divMonster?.SelectSingleNode("h1").InnerText; | ||||||
| 
 | 
 | ||||||
|             var altNames = divMonster.SelectSingleNode("div[@class='trad']").InnerText; |             var altNames = divMonster.SelectSingleNode("div[@class='trad']")?.InnerText; | ||||||
|             var matchNames = new Regex(@"\[ (?<vo>.*?) \](?: \[ (?<alt>.*?) \])?").Match(altNames); |             if (altNames != null) | ||||||
|             monster.NameVO = matchNames.Groups["vo"].Value; |             { | ||||||
|             monster.NamePHB = string.IsNullOrEmpty(matchNames.Groups["alt"].Value) ? monster.Name : matchNames.Groups["alt"].Value; |                 var matchNames = new Regex(@"\[ (?<vo>.*?) \](?: \[ (?<alt>.*?) \])?").Match(altNames); | ||||||
|  |                 monster.NameVO = matchNames.Groups["vo"].Value; | ||||||
|  |                 monster.NamePHB = string.IsNullOrEmpty(matchNames.Groups["alt"].Value) ? monster.Name : matchNames.Groups["alt"].Value; | ||||||
|  |             } | ||||||
|  |             else | ||||||
|  |             { | ||||||
|  |                 monster.NamePHB = monster.Name; | ||||||
|  |             } | ||||||
| 
 | 
 | ||||||
|             var divSansSerif = divMonster?.SelectSingleNode("div[contains(@class,'sansSerif')]"); |             var divSansSerif = divMonster?.SelectSingleNode("div[contains(@class,'sansSerif')]"); | ||||||
|             var typeSizeAlignment = divSansSerif?.SelectSingleNode("h2/em")?.InnerText; |             var typeSizeAlignment = divSansSerif?.SelectSingleNode("h2/em")?.InnerText; | ||||||
|  |  | ||||||
|  | @ -74,11 +74,14 @@ namespace AideDeJeuLib.Monsters | ||||||
|             var client = GetHttpClient(); |             var client = GetHttpClient(); | ||||||
|             // https://www.aidedd.org/regles/monstres/?min=.25&max=20&c=M&sz=TP&lg=si&t=Humano%C3%AFde&s=srd |             // https://www.aidedd.org/regles/monstres/?min=.25&max=20&c=M&sz=TP&lg=si&t=Humano%C3%AFde&s=srd | ||||||
| 
 | 
 | ||||||
|             html = await client.GetStringAsync(string.Format($"https://www.aidedd.org/regles/monstres/?c={category}&t={type}&min={minPower}&max={maxPower}&sz={size}&lg={legendary}&s={source}", category, type, minPower, maxPower, size, legendary, source)); |             //html = await client.GetStringAsync(string.Format($"https://www.aidedd.org/regles/monstres/?c={category}&t={type}&min={minPower}&max={maxPower}&sz={size}&lg={legendary}&s={source}", category, type, minPower, maxPower, size, legendary, source)); | ||||||
|  |             var url = string.Format($"https://www.aidedd.org/dnd-filters/monstres.php?c={category}&t={type}&min={minPower}&max={maxPower}&sz={size}&lg={legendary}&s={source}", category, type, minPower, maxPower, size, legendary, source); | ||||||
|  |             html = await client.GetStringAsync(url); | ||||||
| 
 | 
 | ||||||
|             var pack = new HtmlDocument(); |             var pack = new HtmlDocument(); | ||||||
|             pack.LoadHtml(html); |             pack.LoadHtml(html); | ||||||
|             var trs = pack.GetElementbyId("liste").Element("table").Elements("tr").ToList(); |             //var trs = pack.GetElementbyId("liste").Element("table").Elements("tr").ToList(); | ||||||
|  |             var trs = pack.DocumentNode.SelectSingleNode("//table[contains(@class,'liste')]").Elements("tr").ToList(); | ||||||
|             var monsters = new List<Monster>(); |             var monsters = new List<Monster>(); | ||||||
|             foreach (var tr in trs) |             foreach (var tr in trs) | ||||||
|             { |             { | ||||||
|  | @ -86,28 +89,28 @@ namespace AideDeJeuLib.Monsters | ||||||
|                 if (tds.Length > 0) |                 if (tds.Length > 0) | ||||||
|                 { |                 { | ||||||
|                     var monster = new Monster(); |                     var monster = new Monster(); | ||||||
|                     var aname = tds[0].Element("a"); |                     var aname = tds[1].Element("a"); | ||||||
|                     var spanname = aname.Element("span"); |                     var spanname = aname.Element("span"); | ||||||
|                     if (spanname != null) |                     if (spanname != null) | ||||||
|                     { |                     { | ||||||
|                         monster.NamePHB = spanname.GetAttributeValue("title", ""); |                         monster.NamePHB = spanname.GetAttributeValue("title", ""); | ||||||
|                         monster.Name = spanname.Element("strong").InnerText; |                         monster.Name = spanname.InnerText; | ||||||
|                     } |                     } | ||||||
|                     else |                     else | ||||||
|                     { |                     { | ||||||
|                         monster.NamePHB = aname.Element("strong").InnerText; |                         monster.NamePHB = aname.InnerText; | ||||||
|                         monster.Name = aname.Element("strong").InnerText; |                         monster.Name = aname.InnerText; | ||||||
|                     } |                     } | ||||||
| 
 | 
 | ||||||
|                     //monster.Name = tds[0].InnerText; |                     //monster.Name = tds[0].InnerText; | ||||||
|                     var href = aname.GetAttributeValue("href", ""); |                     var href = aname.GetAttributeValue("href", ""); | ||||||
|                     var regex = new Regex("vf=(?<id>.*)"); |                     var regex = new Regex("vf=(?<id>.*)"); | ||||||
|                     monster.Id = regex.Match(href).Groups["id"].Value; |                     monster.Id = regex.Match(href).Groups["id"].Value; | ||||||
|                     monster.Power = tds[1].InnerText; |                     monster.Power = tds[2].InnerText; | ||||||
|                     monster.Type = tds[2].InnerText; |                     monster.Type = tds[3].InnerText; | ||||||
|                     monster.Size = tds[3].InnerText; |                     monster.Size = tds[4].InnerText; | ||||||
|                     monster.Alignment = tds[4].InnerText; |                     monster.Alignment = tds[5].InnerText; | ||||||
|                     monster.Legendary = tds[5].InnerText; |                     monster.Legendary = tds[6].InnerText; | ||||||
|                     monsters.Add(monster); |                     monsters.Add(monster); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|  |  | ||||||
|  | @ -58,11 +58,19 @@ namespace AideDeJeuLib.Spells | ||||||
|         public static Spell FromHtml(HtmlNode nodeSpell) |         public static Spell FromHtml(HtmlNode nodeSpell) | ||||||
|         { |         { | ||||||
|             var spell = new Spell(); |             var spell = new Spell(); | ||||||
|  |             spell.Html = nodeSpell.OuterHtml; | ||||||
|             spell.Name = nodeSpell.SelectSingleNode("h1").InnerText; |             spell.Name = nodeSpell.SelectSingleNode("h1").InnerText; | ||||||
|             var altNames = nodeSpell.SelectSingleNode("div[@class='trad']").InnerText; |             var altNames = nodeSpell.SelectSingleNode("div[@class='trad']")?.InnerText; | ||||||
|             var matchNames = new Regex(@"\[ (?<vo>.*?) \](?: \[ (?<alt>.*?) \])?").Match(altNames); |             if (altNames != null) | ||||||
|             spell.NameVO = matchNames.Groups["vo"].Value; |             { | ||||||
|             spell.NamePHB = string.IsNullOrEmpty(matchNames.Groups["alt"].Value) ? spell.Name : matchNames.Groups["alt"].Value; |                 var matchNames = new Regex(@"\[ (?<vo>.*?) \](?: \[ (?<alt>.*?) \])?").Match(altNames); | ||||||
|  |                 spell.NameVO = matchNames.Groups["vo"].Value; | ||||||
|  |                 spell.NamePHB = string.IsNullOrEmpty(matchNames.Groups["alt"].Value) ? spell.Name : matchNames.Groups["alt"].Value; | ||||||
|  |             } | ||||||
|  |             else | ||||||
|  |             { | ||||||
|  |                 spell.NamePHB = spell.Name; | ||||||
|  |             } | ||||||
|             spell.LevelType = nodeSpell.SelectSingleNode("h2/em").InnerText; |             spell.LevelType = nodeSpell.SelectSingleNode("h2/em").InnerText; | ||||||
|             spell.Level = spell.LevelType.Split(new string[] { " - " }, StringSplitOptions.None)[0].Split(' ')[1]; |             spell.Level = spell.LevelType.Split(new string[] { " - " }, StringSplitOptions.None)[0].Split(' ')[1]; | ||||||
|             spell.Type = spell.LevelType.Split(new string[] { " - " }, StringSplitOptions.None)[1]; |             spell.Type = spell.LevelType.Split(new string[] { " - " }, StringSplitOptions.None)[1]; | ||||||
|  |  | ||||||
|  | @ -72,12 +72,14 @@ namespace AideDeJeuLib.Spells | ||||||
|             var client = GetHttpClient(); |             var client = GetHttpClient(); | ||||||
|             // https://www.aidedd.org/regles/sorts/ |             // https://www.aidedd.org/regles/sorts/ | ||||||
| 
 | 
 | ||||||
|             var url = string.Format("https://www.aidedd.org/regles/sorts/?c={0}&min={1}&max={2}&e={3}&r={4}&s={5}", classe, niveauMin, niveauMax, ecole, rituel, source); |             //var url = string.Format("https://www.aidedd.org/regles/sorts/?c={0}&min={1}&max={2}&e={3}&r={4}&s={5}", classe, niveauMin, niveauMax, ecole, rituel, source); | ||||||
|  |             var url = string.Format("https://www.aidedd.org/dnd-filters/sorts.php?c={0}&min={1}&max={2}&e={3}&r={4}&s={5}", classe, niveauMin, niveauMax, ecole, rituel, source); | ||||||
|             html = await client.GetStringAsync(url); |             html = await client.GetStringAsync(url); | ||||||
| 
 | 
 | ||||||
|             var pack = new HtmlDocument(); |             var pack = new HtmlDocument(); | ||||||
|             pack.LoadHtml(html); |             pack.LoadHtml(html); | ||||||
|             var tdssort = pack.GetElementbyId("liste").Element("table").Elements("tr").ToList(); |             //var tdssort = pack.GetElementbyId("liste").Element("table").Elements("tr").ToList(); | ||||||
|  |             var tdssort = pack.DocumentNode.SelectSingleNode("//table[contains(@class,'liste')]").Elements("tr").ToList(); | ||||||
|             var spells = new List<Spell>(); |             var spells = new List<Spell>(); | ||||||
|             foreach (var tdsort in tdssort) |             foreach (var tdsort in tdssort) | ||||||
|             { |             { | ||||||
|  | @ -85,27 +87,27 @@ namespace AideDeJeuLib.Spells | ||||||
|                 if (thssort.Length > 0) |                 if (thssort.Length > 0) | ||||||
|                 { |                 { | ||||||
|                     Spell spell = new Spell(); |                     Spell spell = new Spell(); | ||||||
|                     var aname = thssort[0].Element("a"); |                     var aname = thssort[1].Element("a"); | ||||||
|                     var spanname = aname.Element("span"); |                     var spanname = aname.Element("span"); | ||||||
|                     if(spanname != null) |                     if(spanname != null) | ||||||
|                     { |                     { | ||||||
|                         spell.NamePHB = spanname.GetAttributeValue("title", ""); |                         spell.NamePHB = spanname.GetAttributeValue("title", ""); | ||||||
|                         spell.Name = spanname.Element("strong").InnerText; |                         spell.Name = spanname.InnerText; | ||||||
|                     } |                     } | ||||||
|                     else |                     else | ||||||
|                     { |                     { | ||||||
|                         spell.NamePHB = aname.Element("strong").InnerText; |                         spell.NamePHB = aname.InnerText; | ||||||
|                         spell.Name = aname.Element("strong").InnerText; |                         spell.Name = aname.InnerText; | ||||||
|                     } |                     } | ||||||
|                     var href = aname.GetAttributeValue("href", ""); |                     var href = aname.GetAttributeValue("href", ""); | ||||||
|                     var regex = new Regex("vf=(?<id>.*)"); |                     var regex = new Regex("vf=(?<id>.*)"); | ||||||
|                     spell.Id = regex.Match(href).Groups["id"].Value; |                     spell.Id = regex.Match(href).Groups["id"].Value; | ||||||
| 
 | 
 | ||||||
|                     spell.Level = thssort[1].InnerText; |                     spell.Level = thssort[2].InnerText; | ||||||
|                     spell.Type = thssort[2].InnerText; |                     spell.Type = thssort[3].InnerText; | ||||||
|                     spell.CastingTime = thssort[3].InnerText; |                     spell.CastingTime = thssort[4].InnerText; | ||||||
|                     spell.Concentration = thssort[4].InnerText; |                     spell.Concentration = thssort[5].InnerText; | ||||||
|                     spell.Rituel = thssort[5].InnerText; |                     spell.Rituel = thssort[6].InnerText; | ||||||
|                     spells.Add(spell); |                     spells.Add(spell); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Yan Maniez
						Yan Maniez