conversion
This commit is contained in:
		
							
								
								
									
										206
									
								
								src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										206
									
								
								src/NadekoBot/Modules/Searches/Commands/UnitConversion.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,206 @@ | ||||
| using Discord; | ||||
| using Discord.Commands; | ||||
| using NadekoBot.Attributes; | ||||
| using NadekoBot.Extensions; | ||||
| using Newtonsoft.Json; | ||||
| using NLog; | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.IO; | ||||
| using System.Linq; | ||||
| using System.Net.Http; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
| using System.Xml; | ||||
|  | ||||
| namespace NadekoBot.Modules.Searches | ||||
| { | ||||
|     public partial class Searches | ||||
|     { | ||||
|         [Group] | ||||
|         public class UnitConverterCommands | ||||
|         { | ||||
|             private Logger _log; | ||||
|  | ||||
|             public UnitConverterCommands() | ||||
|             { | ||||
|                 _log = LogManager.GetCurrentClassLogger(); | ||||
|  | ||||
|                 try | ||||
|                 { | ||||
|                     Units = JsonConvert.DeserializeObject<List<JsonUnit>>(File.ReadAllText("units.json")); | ||||
|                 } | ||||
|                 catch (Exception e) | ||||
|                 { | ||||
|                     _log.Warn("Could not load units: " + e.Message); | ||||
|  | ||||
|                 } | ||||
|  | ||||
|             } | ||||
|  | ||||
|             public List<JsonUnit> Units { get; set; } | ||||
|  | ||||
|              | ||||
|  | ||||
|             [Command("updatecur")] | ||||
|             [RequireContext(ContextType.Guild)] | ||||
|             public async Task UpdateCurrency(IUserMessage msg) | ||||
|             { | ||||
|                 var channel = msg.Channel as IGuildChannel; | ||||
|                 var currencyRates = await UpdateCurrencyRates(); | ||||
|                 var unitTypeString = "currency"; | ||||
|                 var baseType = new JsonUnit() | ||||
|                 { | ||||
|                     Triggers = new List<string>() { currencyRates.Base }, | ||||
|                     Modifier = decimal.One, | ||||
|                     UnitType = unitTypeString | ||||
|                 }; | ||||
|                 foreach (var rate in currencyRates.ConversionRates) | ||||
|                 { | ||||
|                     Units.Add(new JsonUnit() { | ||||
|                         Triggers = new List<string>() { rate.Key}, | ||||
|                         UnitType = unitTypeString, | ||||
|                         Modifier = rate.Value | ||||
|                     }); | ||||
|                 } | ||||
|                 File.WriteAllText("units.json", JsonConvert.SerializeObject(Units, Formatting.Indented)); | ||||
|                 await msg.Reply("done"); | ||||
|             } | ||||
|  | ||||
|             [LocalizedCommand, LocalizedDescription, LocalizedSummary] | ||||
|             [RequireContext(ContextType.Guild)] | ||||
|             public async Task ConvertList(IUserMessage msg) | ||||
|             { | ||||
|                 var sb = new StringBuilder("Units that can be used by the converter: "); | ||||
|                 var res = Units.GroupBy(x => x.UnitType); | ||||
|                 foreach (var group in res) | ||||
|                 { | ||||
|                     sb.AppendLine($"{group.Key}: ```xl"); | ||||
|                     foreach (var el in group) | ||||
|                     { | ||||
|                         sb.AppendLine(string.Join(",", el.Triggers)); | ||||
|                     } | ||||
|                     sb.AppendLine("```"); | ||||
|                 } | ||||
|                 await msg.ReplyLong(sb.ToString()); | ||||
|             } | ||||
|             [LocalizedCommand, LocalizedDescription, LocalizedSummary] | ||||
|             public async Task Convert(IUserMessage msg, string origin, string target, decimal value) | ||||
|             { | ||||
|                 var originUnit = Units.Find(x => x.Triggers.Contains(origin)); | ||||
|                 var targetUnit = Units.Find(x => x.Triggers.Contains(target)); | ||||
|                 if (originUnit.UnitType != targetUnit.UnitType) | ||||
|                 { | ||||
|                     await msg.Reply(string.Format("Cannot convert {0} to {1}: types of unit are not equal", originUnit.Triggers.First(), targetUnit.Triggers.First())); | ||||
|                     return; | ||||
|                 } | ||||
|                 decimal res = (value * originUnit.Modifier)  / targetUnit.Modifier; | ||||
|                 await msg.Reply(string.Format("{0} {1} is equal to {2} {3}", value, originUnit.Triggers.First(), res, targetUnit.Triggers.First())); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|  | ||||
|             public static async Task<Rates> UpdateCurrencyRates() | ||||
|             { | ||||
|                 using (var http = new HttpClient()) | ||||
|                 { | ||||
|                     var res = await http.GetStringAsync("http://api.fixer.io/latest").ConfigureAwait(false); | ||||
|                     return  JsonConvert.DeserializeObject<Rates>(res); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             public class Rates | ||||
|             { | ||||
|                 [JsonProperty("base")] | ||||
|                 public string Base { get; set; } | ||||
|                 [JsonProperty("date")] | ||||
|                 public DateTime Date { get; set; } | ||||
|                 [JsonProperty("rates")] | ||||
|                 public Dictionary<string, decimal> ConversionRates { get; set; } | ||||
|             } | ||||
|          | ||||
|  | ||||
|         public class JsonUnit | ||||
|         { | ||||
|             public List<string> Triggers { get; set; } | ||||
|             public string UnitType { get; set; } | ||||
|             public decimal Modifier { get; set; } | ||||
|         } | ||||
|  | ||||
|         #region GetXML | ||||
|         /* | ||||
|         public class UnitCollection | ||||
|         { | ||||
|             public List<UnitType> UnitTypes; | ||||
|  | ||||
|             public UnitCollection(string content) | ||||
|             { | ||||
|                 using (var xmlReader = XmlReader.Create(File.OpenRead("units.xml"), new XmlReaderSettings() { IgnoreComments = true, IgnoreWhitespace = true })) | ||||
|                 { | ||||
|                     XmlDocument doc = new XmlDocument(); | ||||
|                     doc.Load(xmlReader); | ||||
|  | ||||
|                     UnitTypes = new List<UnitType>(); | ||||
|                     foreach (XmlNode node in doc.LastChild.ChildNodes) | ||||
|                     { //units/ | ||||
|                         UnitType type = new UnitType() | ||||
|                         { | ||||
|                             Name = node.Name | ||||
|                         }; | ||||
|                         var units = new List<Unit>(); | ||||
|                         foreach (XmlNode unitNode in node.ChildNodes) | ||||
|                         { | ||||
|                             var curNode = unitNode.FirstChild; | ||||
|                             Unit u = new Unit() | ||||
|                             { | ||||
|                                 Key = curNode.InnerText, | ||||
|                                 Singular = (curNode = curNode.NextSibling).InnerText, | ||||
|                                 Plural = (curNode = curNode.NextSibling).InnerText, | ||||
|                                 Symbol = (curNode = curNode.NextSibling).InnerText, | ||||
|                                 Source = curNode.NextSibling.NextSibling.InnerText | ||||
|                             }; | ||||
|                             List<Factor> factors = new List<Factor>(); | ||||
|                             foreach (XmlNode factorNode in curNode.NextSibling.ChildNodes) | ||||
|                             { | ||||
|                                 Factor f = new Factor() | ||||
|                                 { | ||||
|                                     Modifier = factorNode.FirstChild.InnerText.Replace(" ", "") | ||||
|                                 }; | ||||
|                                 f.From = factorNode.Attributes.GetNamedItem("from").InnerText; | ||||
|                                 factors.Add(f); | ||||
|                             } | ||||
|                             u.Factors = factors; | ||||
|                             units.Add(u); | ||||
|                         } | ||||
|                         type.Units = units; | ||||
|                         UnitTypes.Add(type); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             public class UnitType | ||||
|             { | ||||
|                 public string Name { get; set; } | ||||
|                 public List<Unit> Units { get; set; } | ||||
|             } | ||||
|  | ||||
|             public class Unit | ||||
|             { | ||||
|                 public string Key { get; set; } | ||||
|                 public string Plural { get; set; } | ||||
|                 public string Singular { get; set; } | ||||
|                 public string Symbol { get; set; } | ||||
|                 public List<Factor> Factors { get; set; } | ||||
|                 public string Source { get; set; } | ||||
|             } | ||||
|  | ||||
|             public class Factor | ||||
|             { | ||||
|                 public string From { get; set; } | ||||
|                 public string Modifier { get; set; } | ||||
|             } | ||||
|         } | ||||
|         */ | ||||
|         #endregion | ||||
|     } | ||||
| } | ||||
							
								
								
									
										949
									
								
								src/NadekoBot/units.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										949
									
								
								src/NadekoBot/units.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,949 @@ | ||||
| [ | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "millimeter", | ||||
|       "millimeters", | ||||
|       "millimeter", | ||||
|       "mm" | ||||
|     ], | ||||
|     "UnitType": "length", | ||||
|     "Modifier": 0.001 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "centimeter", | ||||
|       "centimeters", | ||||
|       "centimeter", | ||||
|       "cm" | ||||
|     ], | ||||
|     "UnitType": "length", | ||||
|     "Modifier": 0.01 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "decimeter", | ||||
|       "decimeters", | ||||
|       "decimeter", | ||||
|       "dm" | ||||
|     ], | ||||
|     "UnitType": "length", | ||||
|     "Modifier": 0.1 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "meter", | ||||
|       "meters", | ||||
|       "meter", | ||||
|       "m" | ||||
|     ], | ||||
|     "UnitType": "length", | ||||
|     "Modifier": 1.0 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "kilometer", | ||||
|       "kilometers", | ||||
|       "kilometer", | ||||
|       "km" | ||||
|     ], | ||||
|     "UnitType": "length", | ||||
|     "Modifier": 1000.0 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "foot", | ||||
|       "feet", | ||||
|       "foot", | ||||
|       "ft" | ||||
|     ], | ||||
|     "UnitType": "length", | ||||
|     "Modifier": 0.3048 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "inch", | ||||
|       "inches", | ||||
|       "inch", | ||||
|       "in" | ||||
|     ], | ||||
|     "UnitType": "length", | ||||
|     "Modifier": 0.0254 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "mile", | ||||
|       "miles", | ||||
|       "mile", | ||||
|       "mi" | ||||
|     ], | ||||
|     "UnitType": "length", | ||||
|     "Modifier": 1609.344 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "yard", | ||||
|       "yards", | ||||
|       "yard", | ||||
|       "yd" | ||||
|     ], | ||||
|     "UnitType": "length", | ||||
|     "Modifier": 0.9144 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "cubic foot", | ||||
|       "cubic feet", | ||||
|       "cubic foot", | ||||
|       "ft3" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 0.02831685 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "cubic inch", | ||||
|       "cubic inches", | ||||
|       "cubic inch", | ||||
|       "in3" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 0.00001638706 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "cubic mile", | ||||
|       "cubic miles", | ||||
|       "cubic mile", | ||||
|       "mi3" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 4168182000.0 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "cubic yard", | ||||
|       "cubic yards", | ||||
|       "cubic yard", | ||||
|       "yd3" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 0.7645549 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "cup", | ||||
|       "cups", | ||||
|       "cup", | ||||
|       "cup" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 0.0002365882 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "imperial gallon", | ||||
|       "Imperial gallons", | ||||
|       "Imperial gallon", | ||||
|       "gal" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 0.00454609 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "us gallon", | ||||
|       "US gallons", | ||||
|       "US gallon", | ||||
|       "gal" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 0.003785412 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "milliliter", | ||||
|       "milliliters", | ||||
|       "milliliter", | ||||
|       "mL" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 0.000001 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "liter", | ||||
|       "liters", | ||||
|       "liter", | ||||
|       "L" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 0.001 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "imperial fluid ounce", | ||||
|       "Imperial fluid ounces", | ||||
|       "Imperial fluid ounce", | ||||
|       "fl oz" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 0.00002841306 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "us fluid ounce", | ||||
|       "US fluid ounces", | ||||
|       "US fluid ounce", | ||||
|       "fl oz" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 0.00002957353 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "imperial pint", | ||||
|       "Imperial pints", | ||||
|       "Imperial pint", | ||||
|       "pt" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 0.00056826125 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "us liquid pint", | ||||
|       "US pints (liquid)", | ||||
|       "US pint (liquid)", | ||||
|       "pt" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 0.0004731765 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "us dry pint", | ||||
|       "US pints (dry)", | ||||
|       "US pint (dry)", | ||||
|       "pt" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 0.0005506105 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "imperial quart", | ||||
|       "Imperial quarts", | ||||
|       "Imperial quart", | ||||
|       "qt" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 0.00113652297 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "us liquid quart", | ||||
|       "US quarts (liquid)", | ||||
|       "US quart (liquid)", | ||||
|       "qt" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 0.0009463529 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "us dry quart", | ||||
|       "US quarts (dry)", | ||||
|       "US quart (dry)", | ||||
|       "qt" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 0.001101221 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "tablespoon", | ||||
|       "tablespoons", | ||||
|       "tablespoon", | ||||
|       "tbsp" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 0.00001478676 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "teaspoon", | ||||
|       "teaspoons", | ||||
|       "teaspoon", | ||||
|       "tspn" | ||||
|     ], | ||||
|     "UnitType": "volume", | ||||
|     "Modifier": 0.000004928922 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "milligram", | ||||
|       "milligrams", | ||||
|       "milligram", | ||||
|       "mg" | ||||
|     ], | ||||
|     "UnitType": "weight", | ||||
|     "Modifier": 0.000001 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "gram", | ||||
|       "grams", | ||||
|       "gram", | ||||
|       "g" | ||||
|     ], | ||||
|     "UnitType": "weight", | ||||
|     "Modifier": 0.001 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "kilogram", | ||||
|       "kilograms", | ||||
|       "kilogram", | ||||
|       "kg" | ||||
|     ], | ||||
|     "UnitType": "weight", | ||||
|     "Modifier": 1.0 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "carat", | ||||
|       "carats", | ||||
|       "carat", | ||||
|       "CD" | ||||
|     ], | ||||
|     "UnitType": "weight", | ||||
|     "Modifier": 0.00020 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "grain", | ||||
|       "grains", | ||||
|       "grain", | ||||
|       "gr" | ||||
|     ], | ||||
|     "UnitType": "weight", | ||||
|     "Modifier": 0.00006479891 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "ounce", | ||||
|       "ounces", | ||||
|       "ounce", | ||||
|       "oz" | ||||
|     ], | ||||
|     "UnitType": "weight", | ||||
|     "Modifier": 0.02834952 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "pennyweight", | ||||
|       "pennyweights", | ||||
|       "pennyweight", | ||||
|       "dwt" | ||||
|     ], | ||||
|     "UnitType": "weight", | ||||
|     "Modifier": 0.001555174 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "pound", | ||||
|       "pounds", | ||||
|       "pound", | ||||
|       "lb" | ||||
|     ], | ||||
|     "UnitType": "weight", | ||||
|     "Modifier": 0.4535924 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "stone", | ||||
|       "stones", | ||||
|       "stone", | ||||
|       "st" | ||||
|     ], | ||||
|     "UnitType": "weight", | ||||
|     "Modifier": 6.35029318 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "slug", | ||||
|       "slugs", | ||||
|       "slug", | ||||
|       "slug" | ||||
|     ], | ||||
|     "UnitType": "weight", | ||||
|     "Modifier": 14.59390 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "metric ton", | ||||
|       "metric tons", | ||||
|       "metric ton", | ||||
|       "t" | ||||
|     ], | ||||
|     "UnitType": "weight", | ||||
|     "Modifier": 1000.0 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "long ton", | ||||
|       "long tons", | ||||
|       "long ton", | ||||
|       "t" | ||||
|     ], | ||||
|     "UnitType": "weight", | ||||
|     "Modifier": 1016.047 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "short ton", | ||||
|       "short tons", | ||||
|       "short ton", | ||||
|       "t" | ||||
|     ], | ||||
|     "UnitType": "weight", | ||||
|     "Modifier": 907.1847 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "acre", | ||||
|       "acres", | ||||
|       "acre", | ||||
|       "acre" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 4046.873 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "are", | ||||
|       "ares", | ||||
|       "are", | ||||
|       "a" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 100.0 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "hectare", | ||||
|       "hectares", | ||||
|       "hectare", | ||||
|       "ha" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 10000.0 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "square foot", | ||||
|       "square feet", | ||||
|       "square foot", | ||||
|       "ft2" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 0.09290304 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "square meter", | ||||
|       "square meters", | ||||
|       "square meter", | ||||
|       "m2" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 1.0 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "square kilometer", | ||||
|       "square kilometers", | ||||
|       "square kilometer", | ||||
|       "km2" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 1000000.0 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "square inch", | ||||
|       "square inches", | ||||
|       "square inch", | ||||
|       "in2" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 0.00064516 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "square yard", | ||||
|       "square yards", | ||||
|       "square yard", | ||||
|       "yd2" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 0.8361274 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "square mile", | ||||
|       "square miles", | ||||
|       "square mile", | ||||
|       "mi2" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 2589988.0 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "aankadam", | ||||
|       "aankadam", | ||||
|       "aankadam", | ||||
|       "aankadam" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 6.69 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "perch", | ||||
|       "perches", | ||||
|       "perch", | ||||
|       "perch" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 25.29 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "cent", | ||||
|       "cents", | ||||
|       "cent", | ||||
|       "cent" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 40.47 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "chatak", | ||||
|       "chataks", | ||||
|       "chatak", | ||||
|       "chatak" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 41.81 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "kottah", | ||||
|       "kottah (B)", | ||||
|       "kottah (B)", | ||||
|       "kottah (B)" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 66.89 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "guntha", | ||||
|       "guntha", | ||||
|       "guntha", | ||||
|       "guntha" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 101.17 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "ground", | ||||
|       "grounds", | ||||
|       "ground", | ||||
|       "ground" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 222.97 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "marla", | ||||
|       "marla", | ||||
|       "marla", | ||||
|       "marla" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 501.68 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "rood", | ||||
|       "roods", | ||||
|       "rood", | ||||
|       "rood" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 1011.71 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "bigha I", | ||||
|       "bigha I", | ||||
|       "bigha I", | ||||
|       "bigha I" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 1618.74 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "bigha II", | ||||
|       "bigha II", | ||||
|       "bigha II", | ||||
|       "bigha II" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 2529.29 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "kanal", | ||||
|       "kanal", | ||||
|       "kanal", | ||||
|       "kanal" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 10033.53 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "biswa I", | ||||
|       "biswa I", | ||||
|       "biswa I", | ||||
|       "biswa I" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 32374.85 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "biswa II", | ||||
|       "biswa II", | ||||
|       "biswa II", | ||||
|       "biswa II" | ||||
|     ], | ||||
|     "UnitType": "area", | ||||
|     "Modifier": 50585.71 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "pascal", | ||||
|       "pascal", | ||||
|       "pascal", | ||||
|       "Pa" | ||||
|     ], | ||||
|     "UnitType": "pressure", | ||||
|     "Modifier": 1.0 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "torr", | ||||
|       "torr", | ||||
|       "torr", | ||||
|       "Torr" | ||||
|     ], | ||||
|     "UnitType": "pressure", | ||||
|     "Modifier": 133.3224 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "bar", | ||||
|       "bars", | ||||
|       "bar", | ||||
|       "bar" | ||||
|     ], | ||||
|     "UnitType": "pressure", | ||||
|     "Modifier": 100000.0 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "millibar", | ||||
|       "millibars", | ||||
|       "millibar", | ||||
|       "mb" | ||||
|     ], | ||||
|     "UnitType": "pressure", | ||||
|     "Modifier": 100.0 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "psi", | ||||
|       "psi", | ||||
|       "psi", | ||||
|       "lbf/in2" | ||||
|     ], | ||||
|     "UnitType": "pressure", | ||||
|     "Modifier": 6894.757 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "day", | ||||
|       "days", | ||||
|       "day", | ||||
|       "d" | ||||
|     ], | ||||
|     "UnitType": "time", | ||||
|     "Modifier": 86400.0 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "hour", | ||||
|       "hours", | ||||
|       "hour", | ||||
|       "h" | ||||
|     ], | ||||
|     "UnitType": "time", | ||||
|     "Modifier": 3600.0 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "minute", | ||||
|       "minutes", | ||||
|       "minute", | ||||
|       "min" | ||||
|     ], | ||||
|     "UnitType": "time", | ||||
|     "Modifier": 60.0 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "year", | ||||
|       "years", | ||||
|       "year", | ||||
|       "yr" | ||||
|     ], | ||||
|     "UnitType": "time", | ||||
|     "Modifier": 31536000.0 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "AUD" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 1.4787 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "BGN" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 1.9558 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "BRL" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 3.5991 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "CAD" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 1.4562 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "CHF" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 1.0951 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "CNY" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 7.4565 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "CZK" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 27.025 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "DKK" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 7.4448 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "GBP" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 0.8517 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "HKD" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 8.6631 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "HRK" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 7.4846 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "HUF" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 308.97 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "IDR" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 14814.35 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "ILS" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 4.2241 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "INR" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 74.8703 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "JPY" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 114.27 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "KRW" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 1244.47 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "MXN" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 20.7542 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "MYR" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 4.5205 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "NOK" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 9.2873 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "NZD" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 1.5427 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "PHP" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 51.797 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "PLN" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 4.3436 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "RON" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 4.4505 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "RUB" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 72.4564 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "SEK" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 9.5008 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "SGD" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 1.5196 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "THB" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 38.608 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "TRY" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 3.2977 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "USD" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 1.1168 | ||||
|   }, | ||||
|   { | ||||
|     "Triggers": [ | ||||
|       "ZAR" | ||||
|     ], | ||||
|     "UnitType": "currency", | ||||
|     "Modifier": 16.0537 | ||||
|   } | ||||
| ] | ||||
		Reference in New Issue
	
	Block a user