From 3fefee22bb6fa5554f6aa82d40d3d2a97c6c1cad Mon Sep 17 00:00:00 2001 From: skofisk Date: Mon, 29 Jan 2018 06:58:25 +0100 Subject: [PATCH 01/79] Update shebang line to work with virtualenv (#584) --- start_pokealarm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start_pokealarm.py b/start_pokealarm.py index b109c2078..deedf94fe 100644 --- a/start_pokealarm.py +++ b/start_pokealarm.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # -*- coding: utf-8 -*- # Monkey Patch to allow Gevent's Concurrency From 153f2161f0b00fe9e61f48ae051e89d0b58e9524 Mon Sep 17 00:00:00 2001 From: DavisPoGo Date: Mon, 29 Jan 2018 07:17:33 -0800 Subject: [PATCH 02/79] Fix for weather boosts indexing (#586) --- data/weather_boosts.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/data/weather_boosts.json b/data/weather_boosts.json index 367140d7a..2f39c9161 100644 --- a/data/weather_boosts.json +++ b/data/weather_boosts.json @@ -1,9 +1,9 @@ { - "1": [9, 11, 4], - "2": [10, 12, 6], - "3": [0, 5], - "4": [1, 16, 3], - "5": [15, 2, 13], - "6": [14, 8], - "7": [17, 7] + "1": [10, 12, 5], + "2": [11, 13, 7], + "3": [1, 6], + "4": [2, 17, 4], + "5": [16, 3, 14], + "6": [15, 9], + "7": [18, 8] } \ No newline at end of file From 66f03dc0f37f4c08a3cc0fa0ef8dc99cfe573e24 Mon Sep 17 00:00:00 2001 From: LegitDongo <9087537+LegitDongo@users.noreply.github.com> Date: Wed, 31 Jan 2018 10:25:04 -0600 Subject: [PATCH 03/79] Fix lazy load for Twitter (#589) --- PokeAlarm/Alarms/Twitter/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PokeAlarm/Alarms/Twitter/__init__.py b/PokeAlarm/Alarms/Twitter/__init__.py index 58a7dade4..1d4d9679c 100644 --- a/PokeAlarm/Alarms/Twitter/__init__.py +++ b/PokeAlarm/Alarms/Twitter/__init__.py @@ -1,8 +1,8 @@ -from TwitterAlarm import TwitterAlarm # noqa F401 - try: import twitter # noqa F401 except ImportError: from PokeAlarm.Utils import pip_install pip_install('twitter', '1.17.1') + +from TwitterAlarm import TwitterAlarm # noqa F401 From fb66d042f883c046d59d1b881c991d3aff7ee196 Mon Sep 17 00:00:00 2001 From: kvangent Date: Wed, 31 Jan 2018 10:20:43 -0800 Subject: [PATCH 04/79] Reseed image urls. --- PokeAlarm/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PokeAlarm/__init__.py b/PokeAlarm/__init__.py index 701feaae9..94388fdcd 100644 --- a/PokeAlarm/__init__.py +++ b/PokeAlarm/__init__.py @@ -7,7 +7,7 @@ } not_so_secret_url = binascii.unhexlify( - '68747470733a2f2f6d6f6e73746572696d616765732e746b2f76312e332f') + '68747470733a2f2f6d6f6e73746572696d616765732e746b2f76312e342f') class Unknown: From 6eb53e9403c9915577e3196011aea58a9b92919b Mon Sep 17 00:00:00 2001 From: Marcus Ponting Date: Fri, 2 Feb 2018 15:14:42 +0000 Subject: [PATCH 05/79] Fix bugs in weather alerts for 3.6 --- PokeAlarm/Alarms/Discord/DiscordAlarm.py | 3 +- PokeAlarm/Events/MonEvent.py | 2 +- PokeAlarm/Events/RaidEvent.py | 39 ++++++++++++------- PokeAlarm/Events/WeatherEvent.py | 5 ++- PokeAlarm/Manager.py | 48 +++++++++++++++--------- 5 files changed, 61 insertions(+), 36 deletions(-) diff --git a/PokeAlarm/Alarms/Discord/DiscordAlarm.py b/PokeAlarm/Alarms/Discord/DiscordAlarm.py index 10ab383aa..255ee2e38 100644 --- a/PokeAlarm/Alarms/Discord/DiscordAlarm.py +++ b/PokeAlarm/Alarms/Discord/DiscordAlarm.py @@ -107,7 +107,8 @@ def __init__(self, settings, max_attempts, static_map_key): # Set Alert Parameters self.__monsters = self.create_alert_settings( - settings.pop('monsters', {}), self._defaults['monsters'], 'monsters') + settings.pop('monsters', {}), + self._defaults['monsters'], 'monsters') self.__stops = self.create_alert_settings( settings.pop('stops', {}), self._defaults['stops'], 'stops') self.__gyms = self.create_alert_settings( diff --git a/PokeAlarm/Events/MonEvent.py b/PokeAlarm/Events/MonEvent.py index ebab3c090..cd2f1d7f2 100644 --- a/PokeAlarm/Events/MonEvent.py +++ b/PokeAlarm/Events/MonEvent.py @@ -44,7 +44,7 @@ def __init__(self, data): self.weather_id = check_for_none( int, data.get('weather'), Unknown.TINY) self.boosted_weather_id = check_for_none( - int, data.get('boosted_weather'), Unknown.TINY) + int, data.get('boosted_weather'), 0) # Encounter Stats self.mon_lvl = check_for_none( diff --git a/PokeAlarm/Events/RaidEvent.py b/PokeAlarm/Events/RaidEvent.py index 80d21a18a..4fa562874 100644 --- a/PokeAlarm/Events/RaidEvent.py +++ b/PokeAlarm/Events/RaidEvent.py @@ -32,14 +32,22 @@ def __init__(self, data): self.lng = float(data['longitude']) self.distance = Unknown.SMALL # Completed by Manager self.direction = Unknown.TINY # Completed by Manager - self.weather_id = check_for_none( - int, data.get('weather'), Unknown.TINY) # Monster Info self.raid_lvl = int(data['level']) self.mon_id = int(data['pokemon_id']) self.cp = int(data['cp']) self.types = get_base_types(self.mon_id) + self.boss_level = 20 + + # Weather Info + self.weather_id = check_for_none( + int, data.get('weather'), Unknown.TINY) + self.boosted_weather_id = \ + 0 if Unknown.is_not(self.weather_id) else Unknown.TINY + if is_weather_boosted(self.mon_id, self.weather_id): + self.boosted_weather_id = self.weather_id + self.boss_level = 25 # Quick Move self.quick_id = check_for_none(int, data.get('move_1'), Unknown.TINY) @@ -80,19 +88,19 @@ def generate_dts(self, locale, timezone, units): raid_end_time = get_time_as_str(self.raid_end, timezone) dts = self.custom_dts.copy() - boss_level = 20 - boosted_weather_id = \ - 0 if Unknown.is_not(self.weather_id) else Unknown.TINY, - if is_weather_boosted(self.mon_id, self.weather_id): - boss_level = 25 - boosted_weather_id = self.weather_id - boosted_weather_name = locale.get_weather_name(boosted_weather_id) + exraid = self.gym_park + if exraid == 'unknown': + exraid = '' + else: + exraid = "\n*Potential EX Raid (" + exraid + ")*" + + boosted_weather_name = locale.get_weather_name(self.boosted_weather_id) weather_name = locale.get_weather_name(self.weather_id) type1 = locale.get_type_name(self.types[0]) type2 = locale.get_type_name(self.types[1]) - cp_range = get_pokemon_cp_range(self.mon_id, boss_level) + cp_range = get_pokemon_cp_range(self.mon_id, self.boss_level) dts.update({ # Identification 'gym_id': self.gym_id, @@ -130,18 +138,21 @@ def generate_dts(self, locale, timezone, units): 'gmaps': get_gmaps_link(self.lat, self.lng), 'applemaps': get_applemaps_link(self.lat, self.lng), 'geofence': self.geofence, + + # Weather 'weather_id': self.weather_id, 'weather': weather_name, 'weather_or_empty': Unknown.or_empty(weather_name), 'weather_emoji': get_weather_emoji(self.weather_id), - 'boosted_weather_id': boosted_weather_id, + 'boosted_weather_id': self.boosted_weather_id, 'boosted_weather': boosted_weather_name, 'boosted_weather_or_empty': ( - '' if boosted_weather_id == 0 + '' if self.boosted_weather_id == 0 else Unknown.or_empty(boosted_weather_name)), - 'boosted_weather_emoji': get_weather_emoji(boosted_weather_id), + 'boosted_weather_emoji': get_weather_emoji( + self.boosted_weather_id), 'boosted_or_empty': - locale.get_boosted_text() if boss_level == 25 else '', + locale.get_boosted_text() if self.boss_level == 25 else '', # Raid Info 'raid_lvl': self.raid_lvl, diff --git a/PokeAlarm/Events/WeatherEvent.py b/PokeAlarm/Events/WeatherEvent.py index 9711b9e8e..cab1fb88d 100644 --- a/PokeAlarm/Events/WeatherEvent.py +++ b/PokeAlarm/Events/WeatherEvent.py @@ -4,7 +4,7 @@ # Local Imports from PokeAlarm import Unknown from . import BaseEvent -from PokeAlarm.Utils import get_time_as_str +from PokeAlarm.Utils import get_time_as_str, get_weather_emoji class WeatherEvent(BaseEvent): @@ -40,7 +40,7 @@ def __init__(self, data): self.geofence = Unknown.REGULAR self.custom_dts = {} - def generate_dts(self, locale): + def generate_dts(self, locale, timezone, units): """ Return a dict with all the DTS for this event. """ time_changed = get_time_as_str(self.time_changed) dts = self.custom_dts.copy() @@ -61,6 +61,7 @@ def generate_dts(self, locale): # Weather info 'condition': self.condition, 'weather': locale.get_weather_name(self.condition), + 'weather_emoji': get_weather_emoji(self.condition), 'alert_severity': self.alert_severity, 'warn': self.warn, 'day': self.day diff --git a/PokeAlarm/Manager.py b/PokeAlarm/Manager.py index 744531bc3..d7db33a32 100644 --- a/PokeAlarm/Manager.py +++ b/PokeAlarm/Manager.py @@ -936,31 +936,43 @@ def process_weather(self, weather): self.__cache.update_cell_weather( weather.weather_cell_id, weather.condition) - # Check the Filters - passed = True - for name, f in self.__weather_filters.iteritems(): - passed = f.check_event(weather) and \ - self.check_weather_geofences(f, weather) - if passed: # Stop checking + # Check for Rules + rules = self.__weather_rules + if len(rules) == 0: # If no rules, default to all + rules = {"default": Rule( + self.__weather_filters.keys(), self.__alarms.keys())} + + for r_name, rule in rules.iteritems(): # For all rules + for f_name in rule.filter_names: # Check Filters in Rules + f = self.__weather_filters.get(f_name) + passed = f.check_event(weather) and \ + self.check_weather_geofences(f, weather) + if not passed: + continue # go to next filter weather.custom_dts = f.custom_dts - break - if not passed: # Weather was rejected by all filters - return - # Generate the DTS for the event - dts = weather.generate_dts(self.__locale) + if self.__quiet is False: + log.info("{} weather notification" + " has been triggered in rule '{}'!" + "".format(weather.weather_cell_id, r_name)) + self._trigger_weather(weather, weather.alarm_names) + break # Next rule + + def _trigger_weather(self, weather, alarms): - if self.__quiet is False: - log.info("{} weather notification triggered!".format( - weather.weather_cell_id)) + dts = weather.generate_dts( + self.__locale, self.__timezone, self.__units) threads = [] # Spawn notifications in threads so they can work in background - for alarm in self.__alarms: - threads.append(gevent.spawn(alarm.weather_alert, dts)) - gevent.sleep(0) # explict context yield + for name in alarms: + alarm = self.__alarms.get(name) + if alarm: + threads.append(gevent.spawn(alarm.weather_alert, dts)) + else: + log.critical("Alarm '{}' not found!".format(name)) - for thread in threads: + for thread in threads: # Wait for all alarms to finish thread.join() # Check to see if a notification is within the given range From 7ddf2c512806ae8ca638e3805f0ffc975b7126a5 Mon Sep 17 00:00:00 2001 From: Marcus Ponting Date: Fri, 2 Feb 2018 15:55:34 +0000 Subject: [PATCH 06/79] removing personal code --- PokeAlarm/Events/RaidEvent.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/PokeAlarm/Events/RaidEvent.py b/PokeAlarm/Events/RaidEvent.py index 4fa562874..fce099cc4 100644 --- a/PokeAlarm/Events/RaidEvent.py +++ b/PokeAlarm/Events/RaidEvent.py @@ -88,12 +88,6 @@ def generate_dts(self, locale, timezone, units): raid_end_time = get_time_as_str(self.raid_end, timezone) dts = self.custom_dts.copy() - exraid = self.gym_park - if exraid == 'unknown': - exraid = '' - else: - exraid = "\n*Potential EX Raid (" + exraid + ")*" - boosted_weather_name = locale.get_weather_name(self.boosted_weather_id) weather_name = locale.get_weather_name(self.weather_id) From ce3f22d47421db3c4ab3c753cc2d413e499908b0 Mon Sep 17 00:00:00 2001 From: Marcus Ponting Date: Fri, 2 Feb 2018 16:53:34 +0000 Subject: [PATCH 07/79] weather alert bugfixes --- PokeAlarm/Manager.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/PokeAlarm/Manager.py b/PokeAlarm/Manager.py index d7db33a32..56d68fb89 100644 --- a/PokeAlarm/Manager.py +++ b/PokeAlarm/Manager.py @@ -88,6 +88,7 @@ def __init__(self, name, google_key, locale, units, timezone, time_limit, self.__gym_rules = {} self.__egg_rules = {} self.__raid_rules = {} + self.__weather_rules = {} # Initialize the queue and start the process self.__queue = Queue() @@ -216,6 +217,24 @@ def add_raid_rule(self, name, filters, alarms): self.__raid_rules[name] = Rule(filters, alarms) + # Add new Weather Rule + def add_weather_rule(self, name, filters, alarms): + if name in self.__weather_rules: + raise ValueError("Unable to add Rule: Weather Rule with the name " + "{} already exists!".format(name)) + + for filt in filters: + if filt not in self.__weather_filters: + raise ValueError("Unable to create Rule: No weather Filter " + "named {}!".format(filt)) + + for alarm in alarms: + if alarm not in self.__alarms: + raise ValueError("Unable to create Rule: No Alarm " + "named {}!".format(alarm)) + + self.__weather_rules[name] = Rule(filters, alarms) + # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MANAGER LOADING ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -955,7 +974,7 @@ def process_weather(self, weather): log.info("{} weather notification" " has been triggered in rule '{}'!" "".format(weather.weather_cell_id, r_name)) - self._trigger_weather(weather, weather.alarm_names) + self._trigger_weather(weather, rule.alarm_names) break # Next rule def _trigger_weather(self, weather, alarms): From 48e7f49dfb5090f912c4b93397d9b73a47b3ce7c Mon Sep 17 00:00:00 2001 From: Buncertainc Date: Wed, 31 Jan 2018 06:29:40 +0800 Subject: [PATCH 08/79] Update zh_hk translations. (#588) --- locales/zh_hk.json | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/locales/zh_hk.json b/locales/zh_hk.json index e89a60f12..b5382791f 100644 --- a/locales/zh_hk.json +++ b/locales/zh_hk.json @@ -6,31 +6,31 @@ "3": "Spark (\u53f2\u5e15)" }, "sizes": { - "1": "\u5c0f", - "2": "\u77ed", + "1": "\u7d30\u5c0f", + "2": "\u5c0f", "3": "\u6b63\u5e38", "4": "\u5927", "5": "\u5de8\u5927" }, "types": { - "1": "\u6b63\u5e38", - "2": "\u6218\u6597", - "3": "\u98de", - "4": "\u6bd2\u836f", + "1": "\u4e00\u822c", + "2": "\u683c\u9b25", + "3": "\u98db\u884c", + "4": "\u6bd2", "5": "\u5730\u9762", - "6": "\u6447\u6eda", - "7": "\u98de\u866b", - "8": "\u5e7d\u7075", - "9": "\u94a2", + "6": "\u5ca9\u77f3", + "7": "\u87f2", + "8": "\u5e7d\u9748", + "9": "\u92fc", "10": "\u706b", "11": "\u6c34", "12": "\u8349", - "13": "\u7535", - "14": "\u7cbe\u795e", + "13": "\u96fb", + "14": "\u8d85\u80fd\u529b", "15": "\u51b0", - "16": "\u9f99", - "17": "\u4ed9\u5973", - "18": "\u9ed1\u6697" + "16": "\u9f8d", + "17": "\u60e1", + "18": "\u5996\u7cbe" }, "moves": { "13": "Wrap (\u7dca\u675f)", @@ -951,13 +951,13 @@ }, "weather": { "0": "\u6ca1\u6709", - "1": "\u660e\u786e", - "2": "\u96e8", - "3": "\u5c40\u90e8\u9634\u5929", - "4": "\u591a\u4e91\u7684", - "5": "\u6709\u98ce", - "6": "\u96ea", - "7": "\u591a\u96fe\u8def\u6bb5" + "1": "\u6674\u5929", + "2": "\u96e8\u5929", + "3": "\u591a\u96f2", + "4": "\u9670\u5929", + "5": "\u5f37\u98a8", + "6": "\u4e0b\u96ea", + "7": "\u8d77\u9727" }, "misc": { "boosted": "\u63D0\u632F" From 1666f5f740bb5f58101b56dc37b660197781c8e9 Mon Sep 17 00:00:00 2001 From: MARTINI1 Date: Fri, 2 Feb 2018 21:13:02 +0100 Subject: [PATCH 09/79] Update filters and rules examples (#592) --- filters.json.example | 2 +- rules.json.example | 46 ++++++++++++++++++++++---------------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/filters.json.example b/filters.json.example index 390afa011..875bfd5b6 100644 --- a/filters.json.example +++ b/filters.json.example @@ -5,7 +5,7 @@ }, "filters":{ "filter_by_monsters_example":{ - "monsters":["Bulbasaur","Charmander",7], + "monsters":["Bulbasaur","Charmander",7] }, "filter_by_ivs_example":{ "min_atk": 0, "max_atk": 15, diff --git a/rules.json.example b/rules.json.example index 0c38e28cc..14e025c8a 100644 --- a/rules.json.example +++ b/rules.json.example @@ -1,36 +1,36 @@ { - "monsters": { - "first_rule" : { - "filters": [ "filter_by_monsters_example" ], - "alarms": [ "discord_alarm" ] + "monsters":{ + "first_rule":{ + "filters":["filter_by_monsters_example"], + "alarms":["discord_alarm"] }, - "second_rule" : { - "filters": [ "filter_by_ivs_example", "filter_by_moves_example" ], - "alarms": [ "telegram_alarm" ] + "second_rule":{ + "filters":["filter_by_ivs_example","filter_by_moves_example"], + "alarms":["telegram_alarm"] } }, "stops":{ - "all" : { - "filters": [ "filter_by_geofence_example"], - "alarms": [ "discord_alarm", "telegram_alarm" ] + "all":{ + "filters":["filter_by_geofence_example"], + "alarms":["discord_alarm","telegram_alarm"] } }, - "gyms": { - "all" : { - "filters": [ "filter_by_teams_example", "gym_name_contains_regex_example"], - "alarms": [ "discord_alarm", "telegram_alarm" ] + "gyms":{ + "all":{ + "filters":["filter_by_teams_example","gym_name_contains_regex_example"], + "alarms":["discord_alarm","telegram_alarm"] } }, - "eggs": { - "all" : { - "filters": [ "filter_by_lvl_example" ], - "alarms": [ "discord_alarm", "telegram_alarm" ] + "eggs":{ + "all":{ + "filters":["filter_by_lvl_example"], + "alarms":["discord_alarm","telegram_alarm"] } }, - "raids": { - "all" : { - "filters": [ "filter_by_monster", "filter_raid_lvl_and_teams" ], - "alarms": [ "discord_alarm", "telegram_alarm" ] + "raids":{ + "all":{ + "filters":["filter_by_monster","filter_raid_lvl_and_teams"], + "alarms":["discord_alarm","telegram_alarm"] } } -} \ No newline at end of file +} From a75fd6e3d35966a2086e804a85bb16cd4acea616 Mon Sep 17 00:00:00 2001 From: evilmoses Date: Fri, 2 Feb 2018 20:13:36 +0000 Subject: [PATCH 10/79] Weather Boost Fixes (#594) --- PokeAlarm/Events/MonEvent.py | 2 +- PokeAlarm/Events/RaidEvent.py | 33 +++++++++++++++++++-------------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/PokeAlarm/Events/MonEvent.py b/PokeAlarm/Events/MonEvent.py index ebab3c090..cd2f1d7f2 100644 --- a/PokeAlarm/Events/MonEvent.py +++ b/PokeAlarm/Events/MonEvent.py @@ -44,7 +44,7 @@ def __init__(self, data): self.weather_id = check_for_none( int, data.get('weather'), Unknown.TINY) self.boosted_weather_id = check_for_none( - int, data.get('boosted_weather'), Unknown.TINY) + int, data.get('boosted_weather'), 0) # Encounter Stats self.mon_lvl = check_for_none( diff --git a/PokeAlarm/Events/RaidEvent.py b/PokeAlarm/Events/RaidEvent.py index 36108d436..42b9a9a27 100644 --- a/PokeAlarm/Events/RaidEvent.py +++ b/PokeAlarm/Events/RaidEvent.py @@ -32,14 +32,22 @@ def __init__(self, data): self.lng = float(data['longitude']) self.distance = Unknown.SMALL # Completed by Manager self.direction = Unknown.TINY # Completed by Manager - self.weather_id = check_for_none( - int, data.get('weather'), Unknown.TINY) # Monster Info self.raid_lvl = int(data['level']) self.mon_id = int(data['pokemon_id']) self.cp = int(data['cp']) self.types = get_base_types(self.mon_id) + self.boss_level = 20 + + # Weather Info + self.weather_id = check_for_none( + int, data.get('weather'), Unknown.TINY) + self.boosted_weather_id = \ + 0 if Unknown.is_not(self.weather_id) else Unknown.TINY + if is_weather_boosted(self.mon_id, self.weather_id): + self.boosted_weather_id = self.weather_id + self.boss_level = 25 # Quick Move self.quick_id = check_for_none(int, data.get('move_1'), Unknown.TINY) @@ -76,19 +84,13 @@ def generate_dts(self, locale, timezone, units): raid_end_time = get_time_as_str(self.raid_end, timezone) dts = self.custom_dts.copy() - boss_level = 20 - boosted_weather_id = \ - 0 if Unknown.is_not(self.weather_id) else Unknown.TINY, - if is_weather_boosted(self.mon_id, self.weather_id): - boss_level = 25 - boosted_weather_id = self.weather_id - boosted_weather_name = locale.get_weather_name(boosted_weather_id) + boosted_weather_name = locale.get_weather_name(self.boosted_weather_id) weather_name = locale.get_weather_name(self.weather_id) type1 = locale.get_type_name(self.types[0]) type2 = locale.get_type_name(self.types[1]) - cp_range = get_pokemon_cp_range(self.mon_id, boss_level) + cp_range = get_pokemon_cp_range(self.mon_id, self.boss_level) dts.update({ # Identification 'gym_id': self.gym_id, @@ -126,18 +128,21 @@ def generate_dts(self, locale, timezone, units): 'gmaps': get_gmaps_link(self.lat, self.lng), 'applemaps': get_applemaps_link(self.lat, self.lng), 'geofence': self.geofence, + + # Weather 'weather_id': self.weather_id, 'weather': weather_name, 'weather_or_empty': Unknown.or_empty(weather_name), 'weather_emoji': get_weather_emoji(self.weather_id), - 'boosted_weather_id': boosted_weather_id, + 'boosted_weather_id': self.boosted_weather_id, 'boosted_weather': boosted_weather_name, 'boosted_weather_or_empty': ( - '' if boosted_weather_id == 0 + '' if self.boosted_weather_id == 0 else Unknown.or_empty(boosted_weather_name)), - 'boosted_weather_emoji': get_weather_emoji(boosted_weather_id), + 'boosted_weather_emoji': get_weather_emoji( + self.boosted_weather_id), 'boosted_or_empty': - locale.get_boosted_text() if boss_level == 25 else '', + locale.get_boosted_text() if self.boss_level == 25 else '', # Raid Info 'raid_lvl': self.raid_lvl, From ba3c1d7b5d13c50961b5d0637456f99a2ba4ac35 Mon Sep 17 00:00:00 2001 From: LegitDongo <9087537+LegitDongo@users.noreply.github.com> Date: Wed, 7 Feb 2018 10:32:35 -0600 Subject: [PATCH 11/79] Fix bug with incorrect timezones for Stops(#598) --- PokeAlarm/Events/StopEvent.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PokeAlarm/Events/StopEvent.py b/PokeAlarm/Events/StopEvent.py index 425a94c44..3fd37cc8e 100644 --- a/PokeAlarm/Events/StopEvent.py +++ b/PokeAlarm/Events/StopEvent.py @@ -37,7 +37,7 @@ def __init__(self, data): def generate_dts(self, locale, timezone, units): """ Return a dict with all the DTS for this event. """ - time = get_time_as_str(self.expiration) + time = get_time_as_str(self.expiration, timezone) dts = self.custom_dts.copy() dts.update({ # Identification From 97f87493c30f289ede05ffbe32f605f24e5804db Mon Sep 17 00:00:00 2001 From: Billy Bryant <3013565+billyjbryant@users.noreply.github.com> Date: Sat, 10 Feb 2018 22:49:47 -0500 Subject: [PATCH 12/79] Updates en.json to add Castform's Forms Updates en.json locale to add the Form names for Castform's form_ids --- locales/en.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/locales/en.json b/locales/en.json index af5583e64..d5e67f106 100644 --- a/locales/en.json +++ b/locales/en.json @@ -29,6 +29,12 @@ "26": "Z", "27": "!", "28": "?" + }, + "351": { + "29": "Normal", + "30": "Sunny", + "31": "Rainy", + "32": "Snowy" } }, "teams": { From 7f681ab59932b906324972f396aec009b08aacfb Mon Sep 17 00:00:00 2001 From: Billy Bryant <3013565+billyjbryant@users.noreply.github.com> Date: Sun, 11 Feb 2018 12:58:58 -0500 Subject: [PATCH 13/79] Added Deoxys Forms as well --- locales/en.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/locales/en.json b/locales/en.json index d5e67f106..95b5f8368 100644 --- a/locales/en.json +++ b/locales/en.json @@ -35,6 +35,12 @@ "30": "Sunny", "31": "Rainy", "32": "Snowy" + }, + "386": { + "33": "Normal", + "34": "Attack", + "35": "Defense", + "36": "Speed" } }, "teams": { From 0b59ae3767389402035025f17dc9b306f3b9f8c1 Mon Sep 17 00:00:00 2001 From: Billy Bryant <3013565+billyjbryant@users.noreply.github.com> Date: Mon, 12 Feb 2018 00:08:38 -0500 Subject: [PATCH 14/79] Form Locale Updates for Castform, Deoxys and Updated Rayquaza Base Stats (#602) --- data/base_stats.json | 6 +++--- locales/en.json | 12 ++++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/data/base_stats.json b/data/base_stats.json index 2594649e5..f901da1a2 100644 --- a/data/base_stats.json +++ b/data/base_stats.json @@ -4010,9 +4010,9 @@ "height": 3.51 }, "384": { - "attack": 312, - "defense": 187, - "stamina": 210, + "attack": 284, + "defense": 170, + "stamina": 191, "type1": 16, "type2": 3, "legendary": true, diff --git a/locales/en.json b/locales/en.json index af5583e64..95b5f8368 100644 --- a/locales/en.json +++ b/locales/en.json @@ -29,6 +29,18 @@ "26": "Z", "27": "!", "28": "?" + }, + "351": { + "29": "Normal", + "30": "Sunny", + "31": "Rainy", + "32": "Snowy" + }, + "386": { + "33": "Normal", + "34": "Attack", + "35": "Defense", + "36": "Speed" } }, "teams": { From 2a768233ef61fb5c61021fb34167728611c1d1d7 Mon Sep 17 00:00:00 2001 From: Buncertainc Date: Tue, 6 Feb 2018 20:09:02 +0800 Subject: [PATCH 15/79] Minor fix for zh_hk.json. (#596) --- locales/zh_hk.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/locales/zh_hk.json b/locales/zh_hk.json index b5382791f..b7ed5c0ca 100644 --- a/locales/zh_hk.json +++ b/locales/zh_hk.json @@ -6,7 +6,7 @@ "3": "Spark (\u53f2\u5e15)" }, "sizes": { - "1": "\u7d30\u5c0f", + "1": "\u8ff7\u4f60", "2": "\u5c0f", "3": "\u6b63\u5e38", "4": "\u5927", @@ -29,8 +29,8 @@ "14": "\u8d85\u80fd\u529b", "15": "\u51b0", "16": "\u9f8d", - "17": "\u60e1", - "18": "\u5996\u7cbe" + "17": "\u5996\u7cbe", + "18": "\u60e1" }, "moves": { "13": "Wrap (\u7dca\u675f)", From 2cd0927718c430c71be99a4ef663b40e56a8db58 Mon Sep 17 00:00:00 2001 From: Joddie Date: Mon, 12 Feb 2018 06:18:21 +0100 Subject: [PATCH 16/79] Make it possible to add a list of monsters to NOT trigger alarm. (#599) Add 'ignore_monsters' restriction to monster filters. --- PokeAlarm/Filters/BaseFilter.py | 1 + PokeAlarm/Filters/MonFilter.py | 8 ++++++++ docs/filters/monster-filters.md | 1 + tests/filters/test_monster_filter.py | 24 ++++++++++++++++++++++++ 4 files changed, 34 insertions(+) diff --git a/PokeAlarm/Filters/BaseFilter.py b/PokeAlarm/Filters/BaseFilter.py index f89c472a2..6c6ef1781 100644 --- a/PokeAlarm/Filters/BaseFilter.py +++ b/PokeAlarm/Filters/BaseFilter.py @@ -131,6 +131,7 @@ def __call__(self, filtr, event): if Unknown.is_(value): return Unknown.TINY # Cannot check - missing attribute result = self._eval_func(self._limit, value) # compare value to limit + if result is False: # Log rejection filtr.reject(event, "{} incorrect ({} to {})".format( self._attr_name, value, self._limit)) diff --git a/PokeAlarm/Filters/MonFilter.py b/PokeAlarm/Filters/MonFilter.py index 9635b7b92..54127a30f 100644 --- a/PokeAlarm/Filters/MonFilter.py +++ b/PokeAlarm/Filters/MonFilter.py @@ -20,6 +20,14 @@ def __init__(self, name, data): limit=BaseFilter.parse_as_set( MonUtils.get_monster_id, 'monsters', data)) + # Exclude Monsters - f.ignore_monsters not in m.monster_id + # Filter fails if match is found. + self.exclude_monster_ids = self.evaluate_attribute( # + event_attribute='monster_id', + eval_func=lambda d, v: not operator.contains(d, v), + limit=BaseFilter.parse_as_set( + MonUtils.get_monster_id, 'ignore_monsters', data)) + # Distance self.min_dist = self.evaluate_attribute( # f.min_dist <= m.distance event_attribute='distance', eval_func=operator.le, diff --git a/docs/filters/monster-filters.md b/docs/filters/monster-filters.md index e6469b09c..f86915585 100644 --- a/docs/filters/monster-filters.md +++ b/docs/filters/monster-filters.md @@ -34,6 +34,7 @@ Monster Filters can use the following parameters to filter Events: | Parameter | Description | Example | | ------------- |-------------------------------------------------- |---------- | | monsters | Array of allowed monsters, by id or name. | `[ "Bulbasaur", "2", 3 ]`| +| ignore_monsters | Array of ignored monsters, by id or name. | `[ "Pidgey", "13", 14 ]`| | min_dist | Min distance of event from set location in miles or meters (depending on settings). | `0.0` *| | max_dist | Max distance of event from set location in miles or meters (depending on settings). | `1000.0` *| | min_time_left | Minimum time (in seconds) until monster despawns. | `1000` | diff --git a/tests/filters/test_monster_filter.py b/tests/filters/test_monster_filter.py index 09eb56787..1b13886ab 100644 --- a/tests/filters/test_monster_filter.py +++ b/tests/filters/test_monster_filter.py @@ -41,6 +41,30 @@ def test_monster_id(self): for e in [fail1, fail2, fail3]: self.assertFalse(mon_filter.check_event(e)) + def test_ignore_monster_id(self): + # Create the filters + settings = { + "ignore_monsters": [4, "5", "Charizard"] + } + mon_filter = Filters.MonFilter('filter1', settings) + + # Generate events that should pass + pass1 = Events.MonEvent(generate_monster({"pokemon_id": 1})) + pass2 = Events.MonEvent(generate_monster({"pokemon_id": 2})) + pass3 = Events.MonEvent(generate_monster({"pokemon_id": 3})) + # Test passing events + for e in [pass1, pass2, pass3]: + self.assertTrue(mon_filter.check_event(e)) + + # Generate events that should fail + fail1 = Events.MonEvent(generate_monster({"pokemon_id": 4})) + fail2 = Events.MonEvent(generate_monster({"pokemon_id": 5})) + fail3 = Events.MonEvent(generate_monster({"pokemon_id": 6})) + + # Test failing events + for e in [fail1, fail2, fail3]: + self.assertFalse(mon_filter.check_event(e)) + def test_lvl(self): # Create the filters settings = {"min_lvl": 5, "max_lvl": 10} From 6874372dbe34db417d3f7e8a774a593f8279c244 Mon Sep 17 00:00:00 2001 From: kvangent Date: Mon, 12 Feb 2018 09:12:08 -0800 Subject: [PATCH 17/79] Reseed image urls for cache busting. --- PokeAlarm/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PokeAlarm/__init__.py b/PokeAlarm/__init__.py index 94388fdcd..071663040 100644 --- a/PokeAlarm/__init__.py +++ b/PokeAlarm/__init__.py @@ -7,7 +7,7 @@ } not_so_secret_url = binascii.unhexlify( - '68747470733a2f2f6d6f6e73746572696d616765732e746b2f76312e342f') + '68747470733a2f2f6d6f6e73746572696d616765732e746b2f76312e352f') class Unknown: From 80ed94fe562f8ba48d3d13f0800c2afea2481834 Mon Sep 17 00:00:00 2001 From: kvangent Date: Mon, 12 Feb 2018 20:12:50 -0800 Subject: [PATCH 18/79] Improve custom_dts inheritance. --- PokeAlarm/Manager.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/PokeAlarm/Manager.py b/PokeAlarm/Manager.py index 4ca712903..8e6a374c8 100644 --- a/PokeAlarm/Manager.py +++ b/PokeAlarm/Manager.py @@ -227,10 +227,15 @@ def add_raid_rule(self, name, filters, alarms): @staticmethod def load_filter_section(section, sect_name, filter_type): defaults = section.pop('defaults', {}) + default_dts = defaults.pop('custom_dts', {}) filter_set = OrderedDict() for name, settings in section.pop('filters', {}).iteritems(): settings = dict(defaults.items() + settings.items()) try: + local_dts = dict(default_dts.items() + + settings.pop('custom_dts', {}).items()) + if len(local_dts) > 0: + settings['custom_dts'] = local_dts filter_set[name] = filter_type(name, settings) log.debug( "Filter '%s' set as the following: %s", name, From 8f89715ef7ef0b19b67a2d880ad941f42ab8ae85 Mon Sep 17 00:00:00 2001 From: Joddie Date: Fri, 16 Feb 2018 17:26:14 +0100 Subject: [PATCH 19/79] Add 'address_eu' to API detection. (#608) --- PokeAlarm/Manager.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/PokeAlarm/Manager.py b/PokeAlarm/Manager.py index 8e6a374c8..b56e5f9ec 100644 --- a/PokeAlarm/Manager.py +++ b/PokeAlarm/Manager.py @@ -367,8 +367,9 @@ def load_alarms_file(self, file_path, max_attempts): # Check for optional arguments and enable APIs as needed def set_optional_args(self, line): # Reverse Location - args = {'street', 'street_num', 'address', 'postal', 'neighborhood', - 'sublocality', 'city', 'county', 'state', 'country'} + args = {'street', 'street_num', 'address', 'address_eu', + 'postal', 'neighborhood', 'sublocality', 'city', 'county', + 'state', 'country'} if contains_arg(line, args): if self.__loc_service is None: log.critical("Reverse location DTS were detected but " From 08869132acc10285d99bb90a43be96433f48e2e7 Mon Sep 17 00:00:00 2001 From: kvangent Date: Fri, 16 Feb 2018 08:48:15 -0800 Subject: [PATCH 20/79] Fix Geofence ordering in Filters. (#604) * Parse geofences as list. * Pep8 stuff. --- PokeAlarm/Filters/BaseFilter.py | 19 +++++++++++++++++++ PokeAlarm/Filters/EggFilter.py | 2 +- PokeAlarm/Filters/GymFilter.py | 2 +- PokeAlarm/Filters/MonFilter.py | 2 +- PokeAlarm/Filters/RaidFilter.py | 2 +- PokeAlarm/Filters/StopFilter.py | 2 +- 6 files changed, 24 insertions(+), 5 deletions(-) diff --git a/PokeAlarm/Filters/BaseFilter.py b/PokeAlarm/Filters/BaseFilter.py index 6c6ef1781..a4d09405e 100644 --- a/PokeAlarm/Filters/BaseFilter.py +++ b/PokeAlarm/Filters/BaseFilter.py @@ -79,6 +79,25 @@ def parse_as_type(kind, param_name, data): 'Unable to interpret the value "{}" as a '.format(value) + 'valid {} for parameter {}.", '.format(kind, param_name)) + @staticmethod + def parse_as_list(value_type, param_name, data): + """ Parse and convert a list of values into a list.""" + # Validate Input + values = data.pop(param_name, None) + if values is None or len(values) == 0: + return None + if not isinstance(values, list): + raise ValueError( + 'The "{0}" parameter must formatted as a list containing ' + 'different values. Example: "{0}": ' + '[ "value1", "value2", "value3" ] '.format(param_name)) + # Generate Allowed Set + allowed = [] + for value in values: + # Value type should throw the correct error + allowed.append(value_type(value)) + return allowed + @staticmethod def parse_as_set(value_type, param_name, data): """ Parse and convert a list of values into a set.""" diff --git a/PokeAlarm/Filters/EggFilter.py b/PokeAlarm/Filters/EggFilter.py index fddffd7bd..a8b732e8d 100644 --- a/PokeAlarm/Filters/EggFilter.py +++ b/PokeAlarm/Filters/EggFilter.py @@ -53,7 +53,7 @@ def __init__(self, name, data): GymUtils.get_team_id, 'current_teams', data)) # Geofences - self.geofences = BaseFilter.parse_as_set(str, 'geofences', data) + self.geofences = BaseFilter.parse_as_list(str, 'geofences', data) # Custom DTS self.custom_dts = BaseFilter.parse_as_dict( diff --git a/PokeAlarm/Filters/GymFilter.py b/PokeAlarm/Filters/GymFilter.py index 8f94226c0..3826b5ef4 100644 --- a/PokeAlarm/Filters/GymFilter.py +++ b/PokeAlarm/Filters/GymFilter.py @@ -48,7 +48,7 @@ def __init__(self, name, data): limit=BaseFilter.parse_as_type(int, 'max_slots', data)) # Geofences - self.geofences = BaseFilter.parse_as_set(str, 'geofences', data) + self.geofences = BaseFilter.parse_as_list(str, 'geofences', data) # Custom DTS self.custom_dts = BaseFilter.parse_as_dict( diff --git a/PokeAlarm/Filters/MonFilter.py b/PokeAlarm/Filters/MonFilter.py index 54127a30f..a515cd3a6 100644 --- a/PokeAlarm/Filters/MonFilter.py +++ b/PokeAlarm/Filters/MonFilter.py @@ -137,7 +137,7 @@ def __init__(self, name, data): limit=BaseFilter.parse_as_set(get_weather_id, 'weather', data)) # Geofences - self.geofences = BaseFilter.parse_as_set(str, 'geofences', data) + self.geofences = BaseFilter.parse_as_list(str, 'geofences', data) # Custom DTS self.custom_dts = BaseFilter.parse_as_dict( diff --git a/PokeAlarm/Filters/RaidFilter.py b/PokeAlarm/Filters/RaidFilter.py index ea1f228ff..a07ee4d4f 100644 --- a/PokeAlarm/Filters/RaidFilter.py +++ b/PokeAlarm/Filters/RaidFilter.py @@ -84,7 +84,7 @@ def __init__(self, name, data): limit=BaseFilter.parse_as_set(get_weather_id, 'weather', data)) # Geofences - self.geofences = BaseFilter.parse_as_set(str, 'geofences', data) + self.geofences = BaseFilter.parse_as_list(str, 'geofences', data) # Custom DTS self.custom_dts = BaseFilter.parse_as_dict( diff --git a/PokeAlarm/Filters/StopFilter.py b/PokeAlarm/Filters/StopFilter.py index 6ad2eae7c..879c74257 100644 --- a/PokeAlarm/Filters/StopFilter.py +++ b/PokeAlarm/Filters/StopFilter.py @@ -31,7 +31,7 @@ def __init__(self, name, data): limit=BaseFilter.parse_as_type(int, 'max_time_left', data)) # Geofences - self.geofences = BaseFilter.parse_as_set(str, 'geofences', data) + self.geofences = BaseFilter.parse_as_list(str, 'geofences', data) # Custom DTS self.custom_dts = BaseFilter.parse_as_dict( From e7cd0367a63c3fc2c5003532da0a188e63511df8 Mon Sep 17 00:00:00 2001 From: kvangent Date: Fri, 16 Feb 2018 08:55:26 -0800 Subject: [PATCH 21/79] Caching Improvements (#606) * Consolidate Cache interface. * Updated Events for team_id from RM. * Update Manager for new Cache. * Improve FileCache. * Added remove for Windows users. --- PokeAlarm/Cache/Cache.py | 119 +++++++++++++++++----------------- PokeAlarm/Cache/FileCache.py | 52 ++++++++++----- PokeAlarm/Events/EggEvent.py | 2 +- PokeAlarm/Events/RaidEvent.py | 2 +- PokeAlarm/Manager.py | 77 ++++++++++------------ cache/.gitignore | 4 -- 6 files changed, 128 insertions(+), 128 deletions(-) delete mode 100644 cache/.gitignore diff --git a/PokeAlarm/Cache/Cache.py b/PokeAlarm/Cache/Cache.py index 6ed9f3e8a..6a50c09f4 100644 --- a/PokeAlarm/Cache/Cache.py +++ b/PokeAlarm/Cache/Cache.py @@ -3,7 +3,8 @@ from datetime import datetime # 3rd Party Imports # Local Imports -from ..Utils import get_image_url +from PokeAlarm import Unknown +from PokeAlarm.Utils import get_image_url log = logging.getLogger('Cache') @@ -15,70 +16,66 @@ class Cache(object): be lost between run times if save has not been implemented correctly. """ - _default_gym_info = { - "name": "unknown", - "description": "unknown", - "url": get_image_url('icons/gym_0.png') - } + default_image_url = get_image_url("regular/gyms/0.png"), def __init__(self): """ Initializes a new cache object for storing data between events. """ - self._pokemon_hist = {} - self._pokestop_hist = {} - self._gym_team = {} - self._gym_info = {} + self._mon_hist = {} + self._stop_hist = {} self._egg_hist = {} self._raid_hist = {} - - def get_pokemon_expiration(self, pkmn_id): - """ Get the datetime that the pokemon expires.""" - return self._pokemon_hist.get(pkmn_id) - - def update_pokemon_expiration(self, pkmn_id, expiration): - """ Updates the datetime that the pokemon expires. """ - self._pokemon_hist[pkmn_id] = expiration - - def get_pokestop_expiration(self, stop_id): - """ Returns the datetime that the pokemon expires. """ - return self._pokestop_hist.get(stop_id) - - def update_pokestop_expiration(self, stop_id, expiration): - """ Updates the datetime that the pokestop expires. """ - self._pokestop_hist[stop_id] = expiration - - def get_gym_team(self, gym_id): - """ Get the current team that owns the gym. """ - return self._gym_team.get(gym_id, '?') - - def update_gym_team(self, gym_id, team): - """ Update the current team of the gym. """ - self._gym_team[gym_id] = team - - def get_gym_info(self, gym_id): - """ Gets the information about the gym. """ - return self._gym_info.get(gym_id, self._default_gym_info) - - def update_gym_info(self, gym_id, name, desc, url): - """ Updates the information about the gym. """ - if name != 'unknown': # Don't update if the gym info is missing - self._gym_info[gym_id] = { - "name": name, "description": desc, "url": url} - - def get_egg_expiration(self, gym_id): - """ Returns the datetime that the egg expires. """ - return self._egg_hist.get(gym_id) - - def update_egg_expiration(self, gym_id, expiration): - """ Updates the datetime that the egg expires. """ - self._egg_hist[gym_id] = expiration - - def get_raid_expiration(self, gym_id): - """ Returns the datetime that the raid expires. """ - return self._raid_hist.get(gym_id) - - def update_raid_expiration(self, gym_id, expiration): - """ Updates the datetime that the raid expires. """ - self._raid_hist[gym_id] = expiration + self._gym_team = {} + self._gym_name = {} + self._gym_desc = {} + self._gym_image = {} + + def monster_expiration(self, mon_id, expiration=None): + """ Update and return the datetime that a monster expires.""" + if expiration is not None: + self._mon_hist[mon_id] = expiration + return self._mon_hist.get(mon_id) + + def stop_expiration(self, stop_id, expiration=None): + """ Update and return the datetime that a stop expires.""" + if expiration is not None: + self._stop_hist[stop_id] = expiration + return self._stop_hist.get(stop_id) + + def egg_expiration(self, egg_id, expiration=None): + """ Update and return the datetime that an egg expires.""" + if expiration is not None: + self._egg_hist[egg_id] = expiration + return self._egg_hist.get(egg_id) + + def raid_expiration(self, raid_id, expiration=None): + """ Update and return the datetime that a raid expires.""" + if expiration is not None: + self._raid_hist[raid_id] = expiration + return self._raid_hist.get(raid_id) + + def gym_team(self, gym_id, team_id=Unknown.TINY): + """ Update and return the team_id of a gym. """ + if Unknown.is_not(team_id): + self._gym_team[gym_id] = team_id + return self._gym_team.get(gym_id, Unknown.TINY) + + def gym_name(self, gym_id, gym_name=Unknown.REGULAR): + """ Update and return the gym_name for a gym. """ + if Unknown.is_not(gym_name): + self._gym_name[gym_id] = gym_name + return self._gym_name.get(gym_id, Unknown.REGULAR) + + def gym_desc(self, gym_id, gym_desc=Unknown.REGULAR): + """ Update and return the gym_desc for a gym. """ + if Unknown.is_not(gym_desc): + self._gym_desc[gym_id] = gym_desc + return self._gym_desc.get(gym_id, Unknown.REGULAR) + + def gym_image(self, gym_id, gym_image=Unknown.REGULAR): + """ Update and return the gym_image for a gym. """ + if Unknown.is_not(gym_image): + self._gym_image[gym_id] = gym_image + return self._gym_image.get(gym_id, get_image_url('icons/gym_0.png')) def clean_and_save(self): """ Cleans the cache and saves the contents if capable. """ @@ -92,7 +89,7 @@ def _save(self): def _clean_hist(self): """ Clean expired objects to free up memory. """ for hist in ( - self._pokemon_hist, self._pokestop_hist, self._egg_hist, + self._mon_hist, self._stop_hist, self._egg_hist, self._raid_hist): old = [] now = datetime.utcnow() diff --git a/PokeAlarm/Cache/FileCache.py b/PokeAlarm/Cache/FileCache.py index d914a8ea9..5b1c1ada4 100644 --- a/PokeAlarm/Cache/FileCache.py +++ b/PokeAlarm/Cache/FileCache.py @@ -21,6 +21,9 @@ def __init__(self, name): self._file = get_path(os.path.join("cache", "{}.cache".format(name))) log.debug("Checking for previous cache at {}".format(self._file)) + cache_folder = get_path("cache") + if not os.path.exists(cache_folder): + os.makedirs(cache_folder) if os.path.isfile(self._file): self._load() else: @@ -28,33 +31,46 @@ def __init__(self, name): pickle.dump({}, f, protocol=pickle.HIGHEST_PROTOCOL) def _load(self): - with portalocker.Lock(self._file, mode="rb") as f: - data = pickle.load(f) - self._pokemon_hist = data.get('pokemon_hist', {}) - self._pokestop_hist = data.get('pokestop_hist', {}) - self._gym_team = data.get('gym_team', {}) - self._gym_info = data.get('gym_info', {}) - self._egg_hist = data.get('egg_hist', {}) - self._raid_hist = data.get('raid_hist', {}) - log.debug("LOADED: \n {}".format(data)) + try: + with portalocker.Lock(self._file, mode="rb") as f: + data = pickle.load(f) + self._mon_hist = data.get('mon_hist', {}) + self._stop_hist = data.get('stop_hist', {}) + self._egg_hist = data.get('egg_hist', {}) + self._raid_hist = data.get('raid_hist', {}) + self._gym_team = data.get('gym_team', {}) + self._gym_name = data.get('gym_name', {}) + self._gym_desc = data.get('gym_desc', {}) + self._gym_image = data.get('gym_image', {}) + + log.debug("Cache loaded successfully.") + except Exception as e: + log.error("There was an error attempting to load the cache. The " + "old cache will be overwritten.") + log.error("{}: {}".format(type(e).__name__, e)) def _save(self): """ Export the data to a more permanent location. """ log.debug("Writing cache to file...") data = { - 'pokemon_hist': self._pokemon_hist, - 'pokestop_hist': self._pokestop_hist, - 'gym_team': self._gym_team, - 'gym_info': self._gym_info, + 'mon_hist': self._mon_hist, + 'stop_hist': self._stop_hist, 'egg_hist': self._egg_hist, - 'raid_hist': self._raid_hist + 'raid_hist': self._raid_hist, + 'gym_team': self._gym_team, + 'gym_name': self._gym_name, + 'gym_desc': self._gym_desc, + 'gym_image': self._gym_image } - log.debug(self._pokestop_hist) - log.debug("SAVED: {}".format(data)) try: - with portalocker.Lock(self._file, timeout=5, mode="wb+") as f: + # Write to temporary file and then rename + temp = self._file + ".new" + with portalocker.Lock(temp, timeout=5, mode="wb+") as f: pickle.dump(data, f, protocol=pickle.HIGHEST_PROTOCOL) + os.remove(self._file) # Required for Windows + os.rename(temp, self._file) + log.debug("Cache saved successfully.") except Exception as e: log.error("Encountered error while saving cache: " + "{}: {}".format(type(e).__name__, e)) - log.debug("Stack trace: \n {}".format(traceback.format_exc())) + log.error("Stack trace: \n {}".format(traceback.format_exc())) diff --git a/PokeAlarm/Events/EggEvent.py b/PokeAlarm/Events/EggEvent.py index 21e1949aa..0b0add1ff 100644 --- a/PokeAlarm/Events/EggEvent.py +++ b/PokeAlarm/Events/EggEvent.py @@ -47,7 +47,7 @@ def __init__(self, data): # Gym Team (this is only available from cache) self.current_team_id = check_for_none( - int, data.get('team'), Unknown.TINY) + int, data.get('team_id', data.get('team')), Unknown.TINY) self.name = self.gym_id self.geofence = Unknown.REGULAR diff --git a/PokeAlarm/Events/RaidEvent.py b/PokeAlarm/Events/RaidEvent.py index 42b9a9a27..e2961e528 100644 --- a/PokeAlarm/Events/RaidEvent.py +++ b/PokeAlarm/Events/RaidEvent.py @@ -73,7 +73,7 @@ def __init__(self, data): # Gym Team (this is only available from cache) self.current_team_id = check_for_none( - int, data.get('team'), Unknown.TINY) + int, data.get('team_id', data.get('team')), Unknown.TINY) self.name = self.gym_id self.geofence = Unknown.REGULAR diff --git a/PokeAlarm/Manager.py b/PokeAlarm/Manager.py index b56e5f9ec..04bf9ac62 100644 --- a/PokeAlarm/Manager.py +++ b/PokeAlarm/Manager.py @@ -21,6 +21,7 @@ from Geofence import load_geofence_file from Locale import Locale from LocationServices import location_service_factory +from PokeAlarm import Unknown from Utils import (get_earth_dist, get_path, require_and_remove_key, parse_boolean, contains_arg, get_cardinal_dir) from . import config @@ -542,13 +543,12 @@ def process_monster(self, mon): # Set the name for this event so we can log rejects better mon.name = self.__locale.get_pokemon_name(mon.monster_id) - # Skip if previously processed - if self.__cache.get_pokemon_expiration(mon.enc_id) is not None: + # Check if previously processed and update expiration + if self.__cache.monster_expiration(mon.enc_id) is not None: log.debug("{} monster was skipped because it was previously " "processed.".format(mon.name)) return - self.__cache.update_pokemon_expiration( - mon.enc_id, mon.disappear_time) + self.__cache.monster_expiration(mon.enc_id, mon.disappear_time) # Check the time remaining seconds_left = (mon.disappear_time @@ -614,12 +614,12 @@ def process_stop(self, stop): log.debug("Stop ignored: stop notifications are disabled.") return - # Skip if previously processed - if self.__cache.get_pokestop_expiration(stop.stop_id) is not None: + # Check if previously processed and update expiration + if self.__cache.stop_expiration(stop.stop_id) is not None: log.debug("Stop {} was skipped because it was previously " "processed.".format(stop.name)) return - self.__cache.update_pokestop_expiration(stop.stop_id, stop.expiration) + self.__cache.stop_expiration(stop.stop_id, stop.expiration) # Check the time remaining seconds_left = (stop.expiration - datetime.utcnow()).total_seconds() @@ -680,29 +680,25 @@ def process_gym(self, gym): """ Process a gym event and notify alarms if it passes. """ # Update Gym details (if they exist) - self.__cache.update_gym_info( - gym.gym_id, gym.gym_name, gym.gym_description, gym.gym_image) + gym.gym_name = self.__cache.gym_name(gym.gym_id, gym.gym_name) + gym.gym_description = self.__cache.gym_desc( + gym.gym_id, gym.gym_description) + gym.gym_image = self.__cache.gym_image(gym.gym_id, gym.gym_image) # Ignore changes to neutral if self.__ignore_neutral and gym.new_team_id == 0: log.debug("%s gym update skipped: new team was neutral") return - # Get the old team and update new team - gym.old_team_id = self.__cache.get_gym_team(gym.gym_id) - self.__cache.update_gym_team(gym.gym_id, gym.new_team_id) + # Update Team Information + gym.old_team_id = self.__cache.gym_team(gym.gym_id) + self.__cache.gym_team(gym.gym_id, gym.new_team_id) # Check if notifications are on if self.__gyms_enabled is False: log.debug("Gym ignored: gym notifications are disabled.") return - # Update the cache with the gyms info - info = self.__cache.get_gym_info(gym.gym_id) - gym.gym_name = info['name'] - gym.gym_description = info['description'] - gym.gym_image = info['url'] - # Doesn't look like anything to me if gym.new_team_id == gym.old_team_id: log.debug("%s gym update skipped: no change detected", gym.gym_id) @@ -738,7 +734,6 @@ def process_gym(self, gym): def _trigger_gym(self, gym, alarms): # Generate the DTS for the event dts = gym.generate_dts(self.__locale, self.__timezone, self.__units) - dts.update(self.__cache.get_gym_info(gym.gym_id)) # update gym info # Get reverse geocoding if self.__loc_service: self.__loc_service.add_optional_arguments( @@ -761,8 +756,14 @@ def process_egg(self, egg): """ Process a egg event and notify alarms if it passes. """ # Update Gym details (if they exist) - self.__cache.update_gym_info( - egg.gym_id, egg.gym_name, egg.gym_description, egg.gym_image) + egg.gym_name = self.__cache.gym_name(egg.gym_id, egg.gym_name) + egg.gym_description = self.__cache.gym_desc( + egg.gym_id, egg.gym_description) + egg.gym_image = self.__cache.gym_image(egg.gym_id, egg.gym_image) + + # Update Team if Unknown + if Unknown.is_(egg.current_team_id): + egg.current_team_id = self.__cache.gym_team(egg.gym_id) # Make sure that eggs are enabled if self.__eggs_enabled is False: @@ -770,11 +771,11 @@ def process_egg(self, egg): return # Skip if previously processed - if self.__cache.get_egg_expiration(egg.gym_id) is not None: + if self.__cache.egg_expiration(egg.gym_id) is not None: log.debug("Egg {} was skipped because it was previously " "processed.".format(egg.name)) return - self.__cache.update_egg_expiration(egg.gym_id, egg.hatch_time) + self.__cache.egg_expiration(egg.gym_id, egg.hatch_time) # Check the time remaining seconds_left = (egg.hatch_time - datetime.utcnow()).total_seconds() @@ -783,13 +784,6 @@ def process_egg(self, egg): "".format(egg.name, seconds_left)) return - # Assigned cached info - info = self.__cache.get_gym_info(egg.gym_id) - egg.current_team_id = self.__cache.get_gym_team(egg.gym_id) - egg.gym_name = info['name'] - egg.gym_description = info['description'] - egg.gym_image = info['url'] - # Calculate distance and direction if self.__location is not None: egg.distance = get_earth_dist( @@ -820,7 +814,6 @@ def process_egg(self, egg): def _trigger_egg(self, egg, alarms): # Generate the DTS for the event dts = egg.generate_dts(self.__locale, self.__timezone, self.__units) - dts.update(self.__cache.get_gym_info(egg.gym_id)) # update gym info # Get reverse geocoding if self.__loc_service: self.__loc_service.add_optional_arguments( @@ -843,8 +836,14 @@ def process_raid(self, raid): """ Process a raid event and notify alarms if it passes. """ # Update Gym details (if they exist) - self.__cache.update_gym_info( - raid.gym_id, raid.gym_name, raid.gym_description, raid.gym_image) + raid.gym_name = self.__cache.gym_name(raid.gym_id, raid.gym_name) + raid.gym_description = self.__cache.gym_desc( + raid.gym_id, raid.gym_description) + raid.gym_image = self.__cache.gym_image(raid.gym_id, raid.gym_image) + + # Update Team if Unknown + if Unknown.is_(raid.current_team_id): + raid.current_team_id = self.__cache.gym_team(raid.gym_id) # Make sure that raids are enabled if self.__raids_enabled is False: @@ -852,11 +851,11 @@ def process_raid(self, raid): return # Skip if previously processed - if self.__cache.get_raid_expiration(raid.gym_id) is not None: + if self.__cache.raid_expiration(raid.gym_id) is not None: log.debug("Raid {} was skipped because it was previously " "processed.".format(raid.name)) return - self.__cache.update_raid_expiration(raid.gym_id, raid.raid_end) + self.__cache.raid_expiration(raid.gym_id, raid.raid_end) # Check the time remaining seconds_left = (raid.raid_end - datetime.utcnow()).total_seconds() @@ -865,13 +864,6 @@ def process_raid(self, raid): "".format(raid.name, seconds_left)) return - # Assigned cached info - info = self.__cache.get_gym_info(raid.gym_id) - raid.current_team_id = self.__cache.get_gym_team(raid.gym_id) - raid.gym_name = info['name'] - raid.gym_description = info['description'] - raid.gym_image = info['url'] - # Calculate distance and direction if self.__location is not None: raid.distance = get_earth_dist( @@ -902,7 +894,6 @@ def process_raid(self, raid): def _trigger_raid(self, raid, alarms): # Generate the DTS for the event dts = raid.generate_dts(self.__locale, self.__timezone, self.__units) - dts.update(self.__cache.get_gym_info(raid.gym_id)) # update gym info # Get reverse geocoding if self.__loc_service: self.__loc_service.add_optional_arguments( diff --git a/cache/.gitignore b/cache/.gitignore deleted file mode 100644 index 5e7d2734c..000000000 --- a/cache/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Ignore everything in this directory -* -# Except this file -!.gitignore From 6f3466519584a694e671d58775ce76e57c8ede8d Mon Sep 17 00:00:00 2001 From: Billy Bryant <3013565+billyjbryant@users.noreply.github.com> Date: Sat, 17 Feb 2018 20:07:47 -0500 Subject: [PATCH 22/79] Data file cleanup (#609) --- data/base_stats.json | 198 +++++++++++++++++++++---------------------- data/move_info.json | 130 ++++++++++++++-------------- 2 files changed, 164 insertions(+), 164 deletions(-) diff --git a/data/base_stats.json b/data/base_stats.json index f901da1a2..bd2931290 100644 --- a/data/base_stats.json +++ b/data/base_stats.json @@ -1,5 +1,5 @@ { - "1": { + "001": { "attack": 118, "defense": 118, "stamina": 90, @@ -10,7 +10,7 @@ "weight": 6.9, "height": 0.71 }, - "2": { + "002": { "attack": 151, "defense": 151, "stamina": 120, @@ -21,7 +21,7 @@ "weight": 13, "height": 0.99 }, - "3": { + "003": { "attack": 198, "defense": 198, "stamina": 160, @@ -32,7 +32,7 @@ "weight": 100, "height": 2.01 }, - "4": { + "004": { "attack": 116, "defense": 96, "stamina": 78, @@ -42,7 +42,7 @@ "weight": 8.5, "height": 0.61 }, - "5": { + "005": { "attack": 158, "defense": 129, "stamina": 116, @@ -52,7 +52,7 @@ "weight": 19, "height": 1.09 }, - "6": { + "006": { "attack": 223, "defense": 176, "stamina": 156, @@ -63,7 +63,7 @@ "weight": 90.5, "height": 1.7 }, - "7": { + "007": { "attack": 94, "defense": 122, "stamina": 88, @@ -73,7 +73,7 @@ "weight": 9, "height": 0.51 }, - "8": { + "008": { "attack": 126, "defense": 155, "stamina": 118, @@ -83,7 +83,7 @@ "weight": 22.5, "height": 0.99 }, - "9": { + "009": { "attack": 171, "defense": 210, "stamina": 158, @@ -93,7 +93,7 @@ "weight": 85.5, "height": 1.6 }, - "10": { + "010": { "attack": 55, "defense": 62, "stamina": 90, @@ -103,7 +103,7 @@ "weight": 2.9, "height": 0.3 }, - "11": { + "011": { "attack": 45, "defense": 94, "stamina": 100, @@ -113,7 +113,7 @@ "weight": 9.9, "height": 0.71 }, - "12": { + "012": { "attack": 167, "defense": 151, "stamina": 120, @@ -124,7 +124,7 @@ "weight": 32, "height": 1.09 }, - "13": { + "013": { "attack": 63, "defense": 55, "stamina": 80, @@ -135,7 +135,7 @@ "weight": 3.2, "height": 0.3 }, - "14": { + "014": { "attack": 46, "defense": 86, "stamina": 90, @@ -146,7 +146,7 @@ "weight": 10, "height": 0.61 }, - "15": { + "015": { "attack": 169, "defense": 150, "stamina": 130, @@ -157,7 +157,7 @@ "weight": 29.5, "height": 0.99 }, - "16": { + "016": { "attack": 85, "defense": 76, "stamina": 80, @@ -168,7 +168,7 @@ "weight": 1.8, "height": 0.3 }, - "17": { + "017": { "attack": 117, "defense": 108, "stamina": 126, @@ -179,7 +179,7 @@ "weight": 30, "height": 1.09 }, - "18": { + "018": { "attack": 166, "defense": 157, "stamina": 166, @@ -190,7 +190,7 @@ "weight": 39.5, "height": 1.5 }, - "19": { + "019": { "attack": 103, "defense": 70, "stamina": 60, @@ -200,7 +200,7 @@ "weight": 3.5, "height": 0.3 }, - "20": { + "020": { "attack": 161, "defense": 144, "stamina": 110, @@ -210,7 +210,7 @@ "weight": 18.5, "height": 0.71 }, - "21": { + "021": { "attack": 112, "defense": 61, "stamina": 80, @@ -221,7 +221,7 @@ "weight": 2, "height": 0.3 }, - "22": { + "022": { "attack": 182, "defense": 135, "stamina": 130, @@ -232,7 +232,7 @@ "weight": 38, "height": 1.19 }, - "23": { + "023": { "attack": 110, "defense": 102, "stamina": 70, @@ -242,7 +242,7 @@ "weight": 6.9, "height": 2.01 }, - "24": { + "024": { "attack": 185, "defense": 158, "stamina": 120, @@ -252,7 +252,7 @@ "weight": 65, "height": 3.51 }, - "25": { + "025": { "attack": 112, "defense": 101, "stamina": 70, @@ -262,7 +262,7 @@ "weight": 6, "height": 0.41 }, - "26": { + "026": { "attack": 193, "defense": 165, "stamina": 120, @@ -272,7 +272,7 @@ "weight": 30, "height": 0.79 }, - "27": { + "027": { "attack": 126, "defense": 145, "stamina": 100, @@ -282,7 +282,7 @@ "weight": 12, "height": 0.61 }, - "28": { + "028": { "attack": 182, "defense": 202, "stamina": 150, @@ -292,7 +292,7 @@ "weight": 29.5, "height": 0.99 }, - "29": { + "029": { "attack": 86, "defense": 94, "stamina": 110, @@ -302,7 +302,7 @@ "weight": 7, "height": 0.41 }, - "30": { + "030": { "attack": 117, "defense": 126, "stamina": 140, @@ -312,7 +312,7 @@ "weight": 20, "height": 0.79 }, - "31": { + "031": { "attack": 180, "defense": 174, "stamina": 180, @@ -323,7 +323,7 @@ "weight": 60, "height": 1.3 }, - "32": { + "032": { "attack": 105, "defense": 76, "stamina": 92, @@ -333,7 +333,7 @@ "weight": 9, "height": 0.51 }, - "33": { + "033": { "attack": 137, "defense": 112, "stamina": 122, @@ -343,7 +343,7 @@ "weight": 19.5, "height": 0.89 }, - "34": { + "034": { "attack": 204, "defense": 157, "stamina": 162, @@ -354,7 +354,7 @@ "weight": 62, "height": 1.4 }, - "35": { + "035": { "attack": 107, "defense": 116, "stamina": 140, @@ -364,7 +364,7 @@ "weight": 7.5, "height": 0.61 }, - "36": { + "036": { "attack": 178, "defense": 171, "stamina": 190, @@ -374,7 +374,7 @@ "weight": 40, "height": 1.3 }, - "37": { + "037": { "attack": 96, "defense": 122, "stamina": 76, @@ -384,7 +384,7 @@ "weight": 9.9, "height": 0.61 }, - "38": { + "038": { "attack": 169, "defense": 204, "stamina": 146, @@ -394,7 +394,7 @@ "weight": 19.9, "height": 1.09 }, - "39": { + "039": { "attack": 80, "defense": 44, "stamina": 230, @@ -405,7 +405,7 @@ "weight": 5.5, "height": 0.51 }, - "40": { + "040": { "attack": 156, "defense": 93, "stamina": 280, @@ -416,7 +416,7 @@ "weight": 12, "height": 0.99 }, - "41": { + "041": { "attack": 83, "defense": 76, "stamina": 80, @@ -427,7 +427,7 @@ "weight": 7.5, "height": 0.79 }, - "42": { + "042": { "attack": 161, "defense": 153, "stamina": 150, @@ -438,7 +438,7 @@ "weight": 55, "height": 1.6 }, - "43": { + "043": { "attack": 131, "defense": 116, "stamina": 90, @@ -449,7 +449,7 @@ "weight": 5.4, "height": 0.51 }, - "44": { + "044": { "attack": 153, "defense": 139, "stamina": 120, @@ -460,7 +460,7 @@ "weight": 8.6, "height": 0.79 }, - "45": { + "045": { "attack": 202, "defense": 170, "stamina": 150, @@ -471,7 +471,7 @@ "weight": 18.6, "height": 1.19 }, - "46": { + "046": { "attack": 121, "defense": 99, "stamina": 70, @@ -482,7 +482,7 @@ "weight": 5.4, "height": 0.3 }, - "47": { + "047": { "attack": 165, "defense": 146, "stamina": 120, @@ -493,7 +493,7 @@ "weight": 29.5, "height": 0.99 }, - "48": { + "048": { "attack": 100, "defense": 102, "stamina": 120, @@ -504,7 +504,7 @@ "weight": 30, "height": 0.99 }, - "49": { + "049": { "attack": 179, "defense": 150, "stamina": 140, @@ -515,7 +515,7 @@ "weight": 12.5, "height": 1.5 }, - "50": { + "050": { "attack": 109, "defense": 88, "stamina": 20, @@ -525,7 +525,7 @@ "weight": 0.8, "height": 0.2 }, - "51": { + "051": { "attack": 205, "defense": 147, "stamina": 70, @@ -535,7 +535,7 @@ "weight": 33.3, "height": 0.71 }, - "52": { + "052": { "attack": 92, "defense": 81, "stamina": 80, @@ -545,7 +545,7 @@ "weight": 4.2, "height": 0.41 }, - "53": { + "053": { "attack": 150, "defense": 139, "stamina": 130, @@ -555,7 +555,7 @@ "weight": 32, "height": 0.99 }, - "54": { + "054": { "attack": 122, "defense": 96, "stamina": 100, @@ -565,7 +565,7 @@ "weight": 19.6, "height": 0.79 }, - "55": { + "055": { "attack": 191, "defense": 163, "stamina": 160, @@ -575,7 +575,7 @@ "weight": 76.6, "height": 1.7 }, - "56": { + "056": { "attack": 148, "defense": 87, "stamina": 80, @@ -585,7 +585,7 @@ "weight": 28, "height": 0.51 }, - "57": { + "057": { "attack": 207, "defense": 144, "stamina": 130, @@ -595,7 +595,7 @@ "weight": 32, "height": 0.99 }, - "58": { + "058": { "attack": 136, "defense": 96, "stamina": 110, @@ -605,7 +605,7 @@ "weight": 19, "height": 0.71 }, - "59": { + "059": { "attack": 227, "defense": 166, "stamina": 180, @@ -615,7 +615,7 @@ "weight": 155, "height": 1.91 }, - "60": { + "060": { "attack": 101, "defense": 82, "stamina": 80, @@ -625,7 +625,7 @@ "weight": 12.4, "height": 0.61 }, - "61": { + "061": { "attack": 130, "defense": 130, "stamina": 130, @@ -635,7 +635,7 @@ "weight": 20, "height": 0.99 }, - "62": { + "062": { "attack": 182, "defense": 187, "stamina": 180, @@ -646,7 +646,7 @@ "weight": 54, "height": 1.3 }, - "63": { + "063": { "attack": 195, "defense": 103, "stamina": 50, @@ -656,7 +656,7 @@ "weight": 19.5, "height": 0.89 }, - "64": { + "064": { "attack": 232, "defense": 138, "stamina": 80, @@ -666,7 +666,7 @@ "weight": 56.5, "height": 1.3 }, - "65": { + "065": { "attack": 271, "defense": 194, "stamina": 110, @@ -676,7 +676,7 @@ "weight": 48, "height": 1.5 }, - "66": { + "066": { "attack": 137, "defense": 88, "stamina": 140, @@ -686,7 +686,7 @@ "weight": 19.5, "height": 0.79 }, - "67": { + "067": { "attack": 177, "defense": 130, "stamina": 160, @@ -696,7 +696,7 @@ "weight": 70.5, "height": 1.5 }, - "68": { + "068": { "attack": 234, "defense": 162, "stamina": 180, @@ -706,7 +706,7 @@ "weight": 130, "height": 1.6 }, - "69": { + "069": { "attack": 139, "defense": 64, "stamina": 100, @@ -717,7 +717,7 @@ "weight": 4, "height": 0.71 }, - "70": { + "070": { "attack": 172, "defense": 95, "stamina": 130, @@ -728,7 +728,7 @@ "weight": 6.4, "height": 0.99 }, - "71": { + "071": { "attack": 207, "defense": 138, "stamina": 160, @@ -739,7 +739,7 @@ "weight": 15.5, "height": 1.7 }, - "72": { + "072": { "attack": 97, "defense": 182, "stamina": 80, @@ -750,7 +750,7 @@ "weight": 45.5, "height": 0.89 }, - "73": { + "073": { "attack": 166, "defense": 237, "stamina": 160, @@ -761,7 +761,7 @@ "weight": 55, "height": 1.6 }, - "74": { + "074": { "attack": 132, "defense": 163, "stamina": 80, @@ -772,7 +772,7 @@ "weight": 20, "height": 0.41 }, - "75": { + "075": { "attack": 164, "defense": 196, "stamina": 110, @@ -783,7 +783,7 @@ "weight": 105, "height": 0.99 }, - "76": { + "076": { "attack": 211, "defense": 229, "stamina": 160, @@ -794,7 +794,7 @@ "weight": 300, "height": 1.4 }, - "77": { + "077": { "attack": 170, "defense": 132, "stamina": 100, @@ -804,7 +804,7 @@ "weight": 30, "height": 0.99 }, - "78": { + "078": { "attack": 207, "defense": 167, "stamina": 130, @@ -814,7 +814,7 @@ "weight": 95, "height": 1.7 }, - "79": { + "079": { "attack": 109, "defense": 109, "stamina": 180, @@ -825,7 +825,7 @@ "weight": 36, "height": 1.19 }, - "80": { + "080": { "attack": 177, "defense": 194, "stamina": 190, @@ -836,7 +836,7 @@ "weight": 78.5, "height": 1.6 }, - "81": { + "081": { "attack": 165, "defense": 128, "stamina": 50, @@ -847,7 +847,7 @@ "weight": 6, "height": 0.3 }, - "82": { + "082": { "attack": 223, "defense": 182, "stamina": 100, @@ -858,7 +858,7 @@ "weight": 60, "height": 0.99 }, - "83": { + "083": { "attack": 167, "defense": 118, "stamina": 104, @@ -869,7 +869,7 @@ "weight": 15, "height": 0.79 }, - "84": { + "084": { "attack": 158, "defense": 88, "stamina": 70, @@ -880,7 +880,7 @@ "weight": 39.2, "height": 1.4 }, - "85": { + "085": { "attack": 223, "defense": 148, "stamina": 120, @@ -891,7 +891,7 @@ "weight": 85.2, "height": 1.8 }, - "86": { + "086": { "attack": 85, "defense": 128, "stamina": 130, @@ -901,7 +901,7 @@ "weight": 90, "height": 1.09 }, - "87": { + "087": { "attack": 139, "defense": 184, "stamina": 180, @@ -912,7 +912,7 @@ "weight": 120, "height": 1.7 }, - "88": { + "088": { "attack": 135, "defense": 90, "stamina": 160, @@ -922,7 +922,7 @@ "weight": 30, "height": 0.89 }, - "89": { + "089": { "attack": 190, "defense": 184, "stamina": 210, @@ -932,7 +932,7 @@ "weight": 30, "height": 1.19 }, - "90": { + "090": { "attack": 116, "defense": 168, "stamina": 60, @@ -942,7 +942,7 @@ "weight": 4, "height": 0.3 }, - "91": { + "091": { "attack": 186, "defense": 323, "stamina": 100, @@ -953,7 +953,7 @@ "weight": 132.5, "height": 1.5 }, - "92": { + "092": { "attack": 186, "defense": 70, "stamina": 60, @@ -964,7 +964,7 @@ "weight": 0.1, "height": 1.3 }, - "93": { + "093": { "attack": 223, "defense": 112, "stamina": 90, @@ -975,7 +975,7 @@ "weight": 0.1, "height": 1.6 }, - "94": { + "094": { "attack": 261, "defense": 156, "stamina": 120, @@ -986,7 +986,7 @@ "weight": 40.5, "height": 1.5 }, - "95": { + "095": { "attack": 85, "defense": 288, "stamina": 70, @@ -997,7 +997,7 @@ "weight": 210, "height": 8.79 }, - "96": { + "096": { "attack": 89, "defense": 158, "stamina": 120, @@ -1007,7 +1007,7 @@ "weight": 32.4, "height": 0.99 }, - "97": { + "097": { "attack": 144, "defense": 215, "stamina": 170, @@ -1017,7 +1017,7 @@ "weight": 75.6, "height": 1.6 }, - "98": { + "098": { "attack": 181, "defense": 156, "stamina": 60, @@ -1027,7 +1027,7 @@ "weight": 6.5, "height": 0.41 }, - "99": { + "099": { "attack": 240, "defense": 214, "stamina": 110, diff --git a/data/move_info.json b/data/move_info.json index ef4c3fe1b..5a2ee8d87 100644 --- a/data/move_info.json +++ b/data/move_info.json @@ -1,389 +1,389 @@ { - "13": { + "013": { "damage": 60, "dps": 20.69, "duration": 2900, "energy": 33 }, - "14": { + "014": { "damage": 150, "dps": 39.47, "duration": 3800, "energy": 100 }, - "16": { + "016": { "damage": 80, "dps": 26.67, "duration": 3000, "energy": 50 }, - "18": { + "018": { "damage": 50, "dps": 23.81, "duration": 2100, "energy": 33 }, - "20": { + "020": { "damage": 35, "dps": 18.42, "duration": 1900, "energy": 33 }, - "21": { + "021": { "damage": 60, "dps": 22.22, "duration": 2700, "energy": 50 }, - "22": { + "022": { "damage": 90, "dps": 40.91, "duration": 2200, "energy": 100 }, - "24": { + "024": { "damage": 70, "dps": 31.82, "duration": 2200, "energy": 50 }, - "26": { + "026": { "damage": 100, "dps": 21.28, "duration": 4700, "energy": 50 }, - "28": { + "028": { "damage": 50, "dps": 33.33, "duration": 1500, "energy": 50 }, - "30": { + "030": { "damage": 70, "dps": 21.88, "duration": 3200, "energy": 50 }, - "31": { + "031": { "damage": 120, "dps": 33.33, "duration": 3600, "energy": 100 }, - "32": { + "032": { "damage": 100, "dps": 43.48, "duration": 2300, "energy": 100 }, - "33": { + "033": { "damage": 50, "dps": 26.32, "duration": 1900, "energy": 33 }, - "34": { + "034": { "damage": 40, "dps": 21.05, "duration": 1900, "energy": 33 }, - "35": { + "035": { "damage": 65, "dps": 26.0, "duration": 2500, "energy": 33 }, - "36": { + "036": { "damage": 100, "dps": 37.04, "duration": 2700, "energy": 100 }, - "38": { + "038": { "damage": 60, "dps": 26.09, "duration": 2300, "energy": 33 }, - "39": { + "039": { "damage": 90, "dps": 27.27, "duration": 3300, "energy": 50 }, - "40": { + "040": { "damage": 130, "dps": 41.94, "duration": 3100, "energy": 100 }, - "42": { + "042": { "damage": 95, "dps": 31.67, "duration": 3000, "energy": 100 }, - "45": { + "045": { "damage": 55, "dps": 22.92, "duration": 2400, "energy": 33 }, - "46": { + "046": { "damage": 80, "dps": 28.57, "duration": 2800, "energy": 50 }, - "47": { + "047": { "damage": 110, "dps": 42.31, "duration": 2600, "energy": 100 }, - "48": { + "048": { "damage": 25, "dps": 9.62, "duration": 2600, "energy": 50 }, - "49": { + "049": { "damage": 90, "dps": 24.32, "duration": 3700, "energy": 50 }, - "50": { + "050": { "damage": 35, "dps": 20.59, "duration": 1700, "energy": 33 }, - "51": { + "051": { "damage": 50, "dps": 22.73, "duration": 2200, "energy": 33 }, - "53": { + "053": { "damage": 45, "dps": 23.68, "duration": 1900, "energy": 33 }, - "54": { + "054": { "damage": 60, "dps": 27.27, "duration": 2200, "energy": 50 }, - "56": { + "056": { "damage": 40, "dps": 21.05, "duration": 1900, "energy": 33 }, - "57": { + "057": { "damage": 45, "dps": 17.31, "duration": 2600, "energy": 33 }, - "58": { + "058": { "damage": 50, "dps": 26.32, "duration": 1900, "energy": 33 }, - "59": { + "059": { "damage": 55, "dps": 26.19, "duration": 2100, "energy": 33 }, - "60": { + "060": { "damage": 65, "dps": 24.07, "duration": 2700, "energy": 33 }, - "62": { + "062": { "damage": 70, "dps": 20.0, "duration": 3500, "energy": 33 }, - "63": { + "063": { "damage": 70, "dps": 21.88, "duration": 3200, "energy": 50 }, - "64": { + "064": { "damage": 80, "dps": 29.63, "duration": 2700, "energy": 50 }, - "65": { + "065": { "damage": 80, "dps": 27.59, "duration": 2900, "energy": 50 }, - "66": { + "066": { "damage": 50, "dps": 17.24, "duration": 2900, "energy": 33 }, - "67": { + "067": { "damage": 40, "dps": 23.53, "duration": 1700, "energy": 33 }, - "69": { + "069": { "damage": 50, "dps": 21.74, "duration": 2300, "energy": 33 }, - "70": { + "070": { "damage": 100, "dps": 33.33, "duration": 3000, "energy": 50 }, - "72": { + "072": { "damage": 70, "dps": 25.0, "duration": 2800, "energy": 33 }, - "74": { + "074": { "damage": 60, "dps": 31.58, "duration": 1900, "energy": 50 }, - "75": { + "075": { "damage": 25, "dps": 8.93, "duration": 2800, "energy": 50 }, - "77": { + "077": { "damage": 45, "dps": 25.0, "duration": 1800, "energy": 33 }, - "78": { + "078": { "damage": 100, "dps": 41.67, "duration": 2400, "energy": 100 }, - "79": { + "079": { "damage": 80, "dps": 32.0, "duration": 2500, "energy": 50 }, - "80": { + "080": { "damage": 45, "dps": 16.07, "duration": 2800, "energy": 33 }, - "82": { + "082": { "damage": 90, "dps": 25.0, "duration": 3600, "energy": 50 }, - "83": { + "083": { "damage": 50, "dps": 29.41, "duration": 1700, "energy": 33 }, - "84": { + "084": { "damage": 70, "dps": 17.95, "duration": 3900, "energy": 33 }, - "85": { + "085": { "damage": 60, "dps": 23.08, "duration": 2600, "energy": 50 }, - "86": { + "086": { "damage": 100, "dps": 28.57, "duration": 3500, "energy": 50 }, - "87": { + "087": { "damage": 130, "dps": 33.33, "duration": 3900, "energy": 100 }, - "88": { + "088": { "damage": 90, "dps": 31.03, "duration": 2900, "energy": 50 }, - "89": { + "089": { "damage": 40, "dps": 26.67, "duration": 1500, "energy": 33 }, - "90": { + "090": { "damage": 80, "dps": 34.78, "duration": 2300, "energy": 50 }, - "91": { + "091": { "damage": 110, "dps": 34.38, "duration": 3200, "energy": 100 }, - "92": { + "092": { "damage": 130, "dps": 41.94, "duration": 3100, "energy": 100 }, - "94": { + "094": { "damage": 40, "dps": 25.0, "duration": 1600, "energy": 33 }, - "95": { + "095": { "damage": 80, "dps": 22.86, "duration": 3500, "energy": 50 }, - "96": { + "096": { "damage": 55, "dps": 23.91, "duration": 2300, "energy": 33 }, - "99": { + "099": { "damage": 75, "dps": 25.86, "duration": 2900, From 6c7df071a2285d7944baba0f6a1f2cf0bffbf6a9 Mon Sep 17 00:00:00 2001 From: kvangent Date: Sat, 17 Feb 2018 18:10:16 -0800 Subject: [PATCH 23/79] Bugfix for filecache save on windows. --- PokeAlarm/Cache/FileCache.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/PokeAlarm/Cache/FileCache.py b/PokeAlarm/Cache/FileCache.py index 5b1c1ada4..b5e250c19 100644 --- a/PokeAlarm/Cache/FileCache.py +++ b/PokeAlarm/Cache/FileCache.py @@ -65,10 +65,12 @@ def _save(self): try: # Write to temporary file and then rename temp = self._file + ".new" - with portalocker.Lock(temp, timeout=5, mode="wb+") as f: - pickle.dump(data, f, protocol=pickle.HIGHEST_PROTOCOL) - os.remove(self._file) # Required for Windows - os.rename(temp, self._file) + with portalocker.Lock(self._file, timeout=5, mode="wb+"): + with portalocker.Lock(temp, timeout=5, mode="wb+") as f: + pickle.dump(data, f, protocol=pickle.HIGHEST_PROTOCOL) + if os.path.exists(self._file): + os.remove(self._file) # Required for Windows + os.rename(temp, self._file) log.debug("Cache saved successfully.") except Exception as e: log.error("Encountered error while saving cache: " From f2200656bd7f7cca4468b40194e1b74f559af6da Mon Sep 17 00:00:00 2001 From: Billy Bryant <3013565+billyjbryant@users.noreply.github.com> Date: Sun, 18 Feb 2018 20:54:18 -0500 Subject: [PATCH 24/79] Move Types DTS (#610) --- PokeAlarm/Events/MonEvent.py | 39 ++++--- PokeAlarm/Events/RaidEvent.py | 18 +++- PokeAlarm/Filters/MonFilter.py | 5 +- PokeAlarm/Filters/RaidFilter.py | 1 + PokeAlarm/Utils.py | 13 +++ data/move_info.json | 186 ++++++++++++++++++++++++++++++++ 6 files changed, 241 insertions(+), 21 deletions(-) diff --git a/PokeAlarm/Events/MonEvent.py b/PokeAlarm/Events/MonEvent.py index cd2f1d7f2..52a8f233c 100644 --- a/PokeAlarm/Events/MonEvent.py +++ b/PokeAlarm/Events/MonEvent.py @@ -5,7 +5,7 @@ from PokeAlarm import Unknown from PokeAlarm.Utilities import MonUtils from PokeAlarm.Utils import ( - get_gmaps_link, get_move_damage, get_move_dps, + get_gmaps_link, get_move_type, get_move_damage, get_move_dps, get_move_duration, get_move_energy, get_pokemon_size, get_applemaps_link, get_time_as_str, get_seconds_remaining, get_base_types, get_dist_as_str, get_weather_emoji, @@ -66,19 +66,22 @@ def __init__(self, data): self.form_id = check_for_none(int, data.get('form'), 0) # Quick Move - self.quick_move_id = check_for_none( + self.quick_id = check_for_none( int, data.get('move_1'), Unknown.TINY) - self.quick_damage = get_move_damage(self.quick_move_id) - self.quick_dps = get_move_dps(self.quick_move_id) - self.quick_duration = get_move_duration(self.quick_move_id) - self.quick_energy = get_move_energy(self.quick_move_id) + self.quick_type = get_move_type(self.quick_id) + self.quick_damage = get_move_damage(self.quick_id) + self.quick_dps = get_move_dps(self.quick_id) + self.quick_duration = get_move_duration(self.quick_id) + self.quick_energy = get_move_energy(self.quick_id) + # Charge Move - self.charge_move_id = check_for_none( + self.charge_id = check_for_none( int, data.get('move_2'), Unknown.TINY) - self.charge_damage = get_move_damage(self.charge_move_id) - self.charge_dps = get_move_dps(self.charge_move_id) - self.charge_duration = get_move_duration(self.quick_move_id) - self.charge_energy = get_move_energy(self.charge_move_id) + self.charge_type = get_move_type(self.charge_id) + self.charge_damage = get_move_damage(self.charge_id) + self.charge_dps = get_move_dps(self.charge_id) + self.charge_duration = get_move_duration(self.charge_id) + self.charge_energy = get_move_energy(self.charge_id) # Cosmetic self.gender = MonUtils.get_gender_sym( @@ -196,16 +199,22 @@ def generate_dts(self, locale, timezone, units): 'form_id_3': "{:03d}".format(self.form_id), # Quick Move - 'quick_move': locale.get_move_name(self.quick_move_id), - 'quick_id': self.quick_move_id, + 'quick_move': locale.get_move_name(self.quick_id), + 'quick_id': self.quick_id, + 'quick_type_id': self.quick_type, + 'quick_type': locale.get_type_name(self.quick_type), + 'quick_type_emoji': get_type_emoji(self.quick_type), 'quick_damage': self.quick_damage, 'quick_dps': self.quick_dps, 'quick_duration': self.quick_duration, 'quick_energy': self.quick_energy, # Charge Move - 'charge_move': locale.get_move_name(self.charge_move_id), - 'charge_id': self.charge_move_id, + 'charge_move': locale.get_move_name(self.charge_id), + 'charge_id': self.charge_id, + 'charge_type_id': self.charge_type, + 'charge_type': locale.get_type_name(self.charge_type), + 'charge_type_emoji': get_type_emoji(self.charge_type), 'charge_damage': self.charge_damage, 'charge_dps': self.charge_dps, 'charge_duration': self.charge_duration, diff --git a/PokeAlarm/Events/RaidEvent.py b/PokeAlarm/Events/RaidEvent.py index e2961e528..112b62c97 100644 --- a/PokeAlarm/Events/RaidEvent.py +++ b/PokeAlarm/Events/RaidEvent.py @@ -5,7 +5,7 @@ from PokeAlarm import Unknown from . import BaseEvent from PokeAlarm.Utils import get_gmaps_link, get_applemaps_link, \ - get_time_as_str, get_move_damage, get_move_dps, \ + get_time_as_str, get_move_type, get_move_damage, get_move_dps, \ get_move_duration, get_move_energy, get_seconds_remaining, \ get_dist_as_str, get_pokemon_cp_range, is_weather_boosted, \ get_base_types, get_weather_emoji, get_type_emoji @@ -50,17 +50,21 @@ def __init__(self, data): self.boss_level = 25 # Quick Move - self.quick_id = check_for_none(int, data.get('move_1'), Unknown.TINY) + self.quick_id = check_for_none( + int, data.get('move_1'), Unknown.TINY) + self.quick_type = get_move_type(self.quick_id) self.quick_damage = get_move_damage(self.quick_id) self.quick_dps = get_move_dps(self.quick_id) self.quick_duration = get_move_duration(self.quick_id) self.quick_energy = get_move_energy(self.quick_id) # Charge Move - self.charge_id = check_for_none(int, data.get('move_2'), Unknown.TINY) + self.charge_id = check_for_none( + int, data.get('move_2'), Unknown.TINY) + self.charge_type = get_move_type(self.charge_id) self.charge_damage = get_move_damage(self.charge_id) self.charge_dps = get_move_dps(self.charge_id) - self.charge_duration = get_move_duration(self.quick_id) + self.charge_duration = get_move_duration(self.charge_id) self.charge_energy = get_move_energy(self.charge_id) # Gym Details (currently only sent from Monocle) @@ -154,6 +158,9 @@ def generate_dts(self, locale, timezone, units): # Quick Move 'quick_move': locale.get_move_name(self.quick_id), 'quick_id': self.quick_id, + 'quick_type_id': self.quick_type, + 'quick_type': locale.get_type_name(self.quick_type), + 'quick_type_emoji': get_type_emoji(self.quick_type), 'quick_damage': self.quick_damage, 'quick_dps': self.quick_dps, 'quick_duration': self.quick_duration, @@ -162,6 +169,9 @@ def generate_dts(self, locale, timezone, units): # Charge Move 'charge_move': locale.get_move_name(self.charge_id), 'charge_id': self.charge_id, + 'charge_type_id': self.charge_type, + 'charge_type': locale.get_type_name(self.charge_type), + 'charge_type_emoji': get_type_emoji(self.charge_type), 'charge_damage': self.charge_damage, 'charge_dps': self.charge_dps, 'charge_duration': self.charge_duration, diff --git a/PokeAlarm/Filters/MonFilter.py b/PokeAlarm/Filters/MonFilter.py index a515cd3a6..20f9520af 100644 --- a/PokeAlarm/Filters/MonFilter.py +++ b/PokeAlarm/Filters/MonFilter.py @@ -96,12 +96,13 @@ def __init__(self, name, data): # Quick Move self.quick_moves = self.evaluate_attribute( # f.q_ms contains m.q_m - event_attribute='quick_move_id', eval_func=operator.contains, + event_attribute='quick_id', eval_func=operator.contains, limit=BaseFilter.parse_as_set( MonUtils.get_move_id, 'quick_moves', data)) + # Charge Move self.charge_moves = self.evaluate_attribute( # f.c_ms contains m.c_m - event_attribute='charge_move_id', eval_func=operator.contains, + event_attribute='charge_id', eval_func=operator.contains, limit=BaseFilter.parse_as_set( MonUtils.get_move_id, 'charge_moves', data)) diff --git a/PokeAlarm/Filters/RaidFilter.py b/PokeAlarm/Filters/RaidFilter.py index a07ee4d4f..89edb80db 100644 --- a/PokeAlarm/Filters/RaidFilter.py +++ b/PokeAlarm/Filters/RaidFilter.py @@ -60,6 +60,7 @@ def __init__(self, name, data): event_attribute='quick_id', eval_func=operator.contains, limit=BaseFilter.parse_as_set( MonUtils.get_move_id, 'quick_moves', data)) + # Charge Move self.charge_moves = self.evaluate_attribute( # f.c_ms contains r.c_m event_attribute='charge_id', eval_func=operator.contains, diff --git a/PokeAlarm/Utils.py b/PokeAlarm/Utils.py index 91d9a2922..4d924e56c 100644 --- a/PokeAlarm/Utils.py +++ b/PokeAlarm/Utils.py @@ -11,6 +11,7 @@ # Local Imports from PokeAlarm import not_so_secret_url from PokeAlarm import config +from PokeAlarm import Unknown log = logging.getLogger('Utils') @@ -128,6 +129,18 @@ def get_team_id(team_name): return get_team_id.ids.get(name) +# Returns the types of a move when requesting +def get_move_type(move_id): + if not hasattr(get_move_type, 'info'): + get_move_type.info = {} + file_ = get_path('data/move_info.json') + with open(file_, 'r') as f: + j = json.loads(f.read()) + for id_ in j: + get_move_type.info[int(id_)] = j[id_]['type'] + return get_move_type.info.get(move_id, Unknown.SMALL) + + # Returns the damage of a move when requesting def get_move_damage(move_id): if not hasattr(get_move_damage, 'info'): diff --git a/data/move_info.json b/data/move_info.json index 5a2ee8d87..946602180 100644 --- a/data/move_info.json +++ b/data/move_info.json @@ -1,1115 +1,1301 @@ { "013": { + "type": 1, "damage": 60, "dps": 20.69, "duration": 2900, "energy": 33 }, "014": { + "type": 1, "damage": 150, "dps": 39.47, "duration": 3800, "energy": 100 }, "016": { + "type": 18, "damage": 80, "dps": 26.67, "duration": 3000, "energy": 50 }, "018": { + "type": 4, "damage": 50, "dps": 23.81, "duration": 2100, "energy": 33 }, "020": { + "type": 1, "damage": 35, "dps": 18.42, "duration": 1900, "energy": 33 }, "021": { + "type": 10, "damage": 60, "dps": 22.22, "duration": 2700, "energy": 50 }, "022": { + "type": 7, "damage": 90, "dps": 40.91, "duration": 2200, "energy": 100 }, "024": { + "type": 10, "damage": 70, "dps": 31.82, "duration": 2200, "energy": 50 }, "026": { + "type": 5, "damage": 100, "dps": 21.28, "duration": 4700, "energy": 50 }, "028": { + "type": 2, "damage": 50, "dps": 33.33, "duration": 1500, "energy": 50 }, "030": { + "type": 14, "damage": 70, "dps": 21.88, "duration": 3200, "energy": 50 }, "031": { + "type": 5, "damage": 120, "dps": 33.33, "duration": 3600, "energy": 100 }, "032": { + "type": 6, "damage": 100, "dps": 43.48, "duration": 2300, "energy": 100 }, "033": { + "type": 15, "damage": 50, "dps": 26.32, "duration": 1900, "energy": 33 }, "034": { + "type": 14, "damage": 40, "dps": 21.05, "duration": 1900, "energy": 33 }, "035": { + "type": 13, "damage": 65, "dps": 26.0, "duration": 2500, "energy": 33 }, "036": { + "type": 9, "damage": 100, "dps": 37.04, "duration": 2700, "energy": 100 }, "038": { + "type": 3, "damage": 60, "dps": 26.09, "duration": 2300, "energy": 33 }, "039": { + "type": 15, "damage": 90, "dps": 27.27, "duration": 3300, "energy": 50 }, "040": { + "type": 15, "damage": 130, "dps": 41.94, "duration": 3100, "energy": 100 }, "042": { + "type": 10, "damage": 95, "dps": 31.67, "duration": 3000, "energy": 100 }, "045": { + "type": 3, "damage": 55, "dps": 22.92, "duration": 2400, "energy": 33 }, "046": { + "type": 5, "damage": 80, "dps": 28.57, "duration": 2800, "energy": 50 }, "047": { + "type": 12, "damage": 110, "dps": 42.31, "duration": 2600, "energy": 100 }, "048": { + "type": 12, "damage": 25, "dps": 9.62, "duration": 2600, "energy": 50 }, "049": { + "type": 7, "damage": 90, "dps": 24.32, "duration": 3700, "energy": 50 }, "050": { + "type": 4, "damage": 35, "dps": 20.59, "duration": 1700, "energy": 33 }, "051": { + "type": 18, "damage": 50, "dps": 22.73, "duration": 2200, "energy": 33 }, "053": { + "type": 11, "damage": 45, "dps": 23.68, "duration": 1900, "energy": 33 }, "054": { + "type": 2, "damage": 60, "dps": 27.27, "duration": 2200, "energy": 50 }, "056": { + "type": 2, "damage": 40, "dps": 21.05, "duration": 1900, "energy": 33 }, "057": { + "type": 11, "damage": 45, "dps": 17.31, "duration": 2600, "energy": 33 }, "058": { + "type": 11, "damage": 50, "dps": 26.32, "duration": 1900, "energy": 33 }, "059": { + "type": 12, "damage": 55, "dps": 26.19, "duration": 2100, "energy": 33 }, "060": { + "type": 14, "damage": 65, "dps": 24.07, "duration": 2700, "energy": 33 }, "062": { + "type": 6, "damage": 70, "dps": 20.0, "duration": 3500, "energy": 33 }, "063": { + "type": 6, "damage": 70, "dps": 21.88, "duration": 3200, "energy": 50 }, "064": { + "type": 6, "damage": 80, "dps": 29.63, "duration": 2700, "energy": 50 }, "065": { + "type": 6, "damage": 80, "dps": 27.59, "duration": 2900, "energy": 50 }, "066": { + "type": 8, "damage": 50, "dps": 17.24, "duration": 2900, "energy": 33 }, "067": { + "type": 8, "damage": 40, "dps": 23.53, "duration": 1700, "energy": 33 }, "069": { + "type": 8, "damage": 50, "dps": 21.74, "duration": 2300, "energy": 33 }, "070": { + "type": 8, "damage": 100, "dps": 33.33, "duration": 3000, "energy": 50 }, "072": { + "type": 9, "damage": 70, "dps": 25.0, "duration": 2800, "energy": 33 }, "074": { + "type": 9, "damage": 60, "dps": 31.58, "duration": 1900, "energy": 50 }, "075": { + "type": 13, "damage": 25, "dps": 8.93, "duration": 2800, "energy": 50 }, "077": { + "type": 13, "damage": 45, "dps": 25.0, "duration": 1800, "energy": 33 }, "078": { + "type": 13, "damage": 100, "dps": 41.67, "duration": 2400, "energy": 100 }, "079": { + "type": 13, "damage": 80, "dps": 32.0, "duration": 2500, "energy": 50 }, "080": { + "type": 16, "damage": 45, "dps": 16.07, "duration": 2800, "energy": 33 }, "082": { + "type": 16, "damage": 90, "dps": 25.0, "duration": 3600, "energy": 50 }, "083": { + "type": 16, "damage": 50, "dps": 29.41, "duration": 1700, "energy": 33 }, "084": { + "type": 17, "damage": 70, "dps": 17.95, "duration": 3900, "energy": 33 }, "085": { + "type": 17, "damage": 60, "dps": 23.08, "duration": 2600, "energy": 50 }, "086": { + "type": 17, "damage": 100, "dps": 28.57, "duration": 3500, "energy": 50 }, "087": { + "type": 17, "damage": 130, "dps": 33.33, "duration": 3900, "energy": 100 }, "088": { + "type": 17, "damage": 90, "dps": 31.03, "duration": 2900, "energy": 50 }, "089": { + "type": 4, "damage": 40, "dps": 26.67, "duration": 1500, "energy": 33 }, "090": { + "type": 4, "damage": 80, "dps": 34.78, "duration": 2300, "energy": 50 }, "091": { + "type": 4, "damage": 110, "dps": 34.38, "duration": 3200, "energy": 100 }, "092": { + "type": 4, "damage": 130, "dps": 41.94, "duration": 3100, "energy": 100 }, "094": { + "type": 5, "damage": 40, "dps": 25.0, "duration": 1600, "energy": 33 }, "095": { + "type": 5, "damage": 80, "dps": 22.86, "duration": 3500, "energy": 50 }, "096": { + "type": 5, "damage": 55, "dps": 23.91, "duration": 2300, "energy": 33 }, "099": { + "type": 7, "damage": 75, "dps": 25.86, "duration": 2900, "energy": 50 }, "100": { + "type": 7, "damage": 45, "dps": 28.13, "duration": 1600, "energy": 33 }, "101": { + "type": 10, "damage": 70, "dps": 18.42, "duration": 3800, "energy": 33 }, "102": { + "type": 10, "damage": 70, "dps": 26.92, "duration": 2600, "energy": 50 }, "103": { + "type": 10, "damage": 140, "dps": 33.33, "duration": 4200, "energy": 100 }, "104": { + "type": 11, "damage": 60, "dps": 26.09, "duration": 2300, "energy": 50 }, "105": { + "type": 11, "damage": 70, "dps": 21.88, "duration": 3200, "energy": 50 }, "106": { + "type": 11, "damage": 80, "dps": 21.62, "duration": 3700, "energy": 50 }, "107": { + "type": 11, "damage": 130, "dps": 39.39, "duration": 3300, "energy": 100 }, "108": { + "type": 14, "damage": 100, "dps": 35.71, "duration": 2800, "energy": 100 }, "109": { + "type": 14, "damage": 100, "dps": 22.73, "duration": 4400, "energy": 50 }, "111": { + "type": 15, "damage": 60, "dps": 18.18, "duration": 3300, "energy": 33 }, "114": { + "type": 12, "damage": 50, "dps": 12.82, "duration": 3900, "energy": 100 }, "115": { + "type": 10, "damage": 55, "dps": 25.0, "duration": 2200, "energy": 33 }, "116": { + "type": 12, "damage": 180, "dps": 36.73, "duration": 4900, "energy": 100 }, "117": { + "type": 12, "damage": 70, "dps": 29.17, "duration": 2400, "energy": 33 }, "118": { + "type": 12, "damage": 90, "dps": 34.62, "duration": 2600, "energy": 50 }, "121": { + "type": 3, "damage": 60, "dps": 22.22, "duration": 2700, "energy": 50 }, "122": { + "type": 3, "damage": 110, "dps": 40.74, "duration": 2700, "energy": 100 }, "123": { + "type": 2, "damage": 40, "dps": 25.0, "duration": 1600, "energy": 33 }, "125": { + "type": 1, "damage": 60, "dps": 21.43, "duration": 2800, "energy": 50 }, "126": { + "type": 1, "damage": 40, "dps": 21.62, "duration": 1850, "energy": 33 }, "127": { + "type": 1, "damage": 55, "dps": 32.35, "duration": 1700, "energy": 50 }, "129": { + "type": 1, "damage": 80, "dps": 32.0, "duration": 2500, "energy": 50 }, "131": { + "type": 1, "damage": 50, "dps": 26.32, "duration": 1900, "energy": 33 }, "132": { + "type": 1, "damage": 50, "dps": 26.32, "duration": 1900, "energy": 33 }, "133": { + "type": 1, "damage": 35, "dps": 15.91, "duration": 2200, "energy": 33 }, "134": { + "type": 11, "damage": 50, "dps": 10.64, "duration": 4700, "energy": 100 }, "135": { + "type": 11, "damage": 90, "dps": 20.0, "duration": 4500, "energy": 100 }, "136": { + "type": 1, "damage": 25, "dps": 8.62, "duration": 2900, "energy": 33 }, "137": { + "type": 1, "damage": 25, "dps": 8.62, "duration": 2900, "energy": 33 }, "200": { + "type": 7, "damage": 3, "dps": 7.5, "duration": 400, "energy": 6 }, "201": { + "type": 7, "damage": 5, "dps": 10.0, "duration": 500, "energy": 6 }, "202": { + "type": 18, "damage": 6, "dps": 12.0, "duration": 500, "energy": 4 }, "203": { + "type": 18, "damage": 7, "dps": 10.0, "duration": 700, "energy": 8 }, "204": { + "type": 16, "damage": 6, "dps": 12.0, "duration": 500, "energy": 4 }, "205": { + "type": 13, "damage": 5, "dps": 8.33, "duration": 600, "energy": 8 }, "206": { + "type": 13, "damage": 6, "dps": 8.57, "duration": 700, "energy": 9 }, "207": { + "type": 2, "damage": 6, "dps": 10.0, "duration": 600, "energy": 6 }, "208": { + "type": 2, "damage": 8, "dps": 10.0, "duration": 800, "energy": 10 }, "209": { + "type": 10, "damage": 10, "dps": 10.0, "duration": 1000, "energy": 10 }, "210": { + "type": 3, "damage": 8, "dps": 10.0, "duration": 800, "energy": 9 }, "211": { + "type": 3, "damage": 10, "dps": 10.0, "duration": 1000, "energy": 10 }, "212": { + "type": 8, "damage": 5, "dps": 10.0, "duration": 500, "energy": 6 }, "213": { + "type": 8, "damage": 9, "dps": 12.86, "duration": 700, "energy": 6 }, "214": { + "type": 12, "damage": 7, "dps": 11.67, "duration": 600, "energy": 6 }, "215": { + "type": 12, "damage": 13, "dps": 13.0, "duration": 1000, "energy": 7 }, "216": { + "type": 5, "damage": 5, "dps": 8.33, "duration": 600, "energy": 7 }, "217": { + "type": 15, "damage": 12, "dps": 10.0, "duration": 1200, "energy": 12 }, "218": { + "type": 15, "damage": 10, "dps": 11.11, "duration": 900, "energy": 8 }, "219": { + "type": 1, "damage": 8, "dps": 10.0, "duration": 800, "energy": 10 }, "220": { + "type": 1, "damage": 6, "dps": 12.0, "duration": 500, "energy": 4 }, "221": { + "type": 1, "damage": 5, "dps": 10.0, "duration": 500, "energy": 5 }, "222": { + "type": 1, "damage": 7, "dps": 11.67, "duration": 600, "energy": 6 }, "223": { + "type": 1, "damage": 5, "dps": 10.0, "duration": 500, "energy": 5 }, "224": { + "type": 4, "damage": 10, "dps": 12.5, "duration": 800, "energy": 7 }, "225": { + "type": 4, "damage": 9, "dps": 11.25, "duration": 800, "energy": 8 }, "226": { + "type": 14, "damage": 5, "dps": 8.33, "duration": 600, "energy": 8 }, "227": { + "type": 6, "damage": 12, "dps": 13.33, "duration": 900, "energy": 7 }, "228": { + "type": 9, "damage": 8, "dps": 11.43, "duration": 700, "energy": 7 }, "229": { + "type": 9, "damage": 9, "dps": 10.0, "duration": 900, "energy": 10 }, "230": { + "type": 11, "damage": 5, "dps": 10.0, "duration": 500, "energy": 5 }, "231": { + "type": 11, "damage": 0, "dps": 0.0, "duration": 1730, "energy": 0 }, "233": { + "type": 5, "damage": 15, "dps": 10.71, "duration": 1400, "energy": 12 }, "234": { + "type": 14, "damage": 12, "dps": 10.91, "duration": 1100, "energy": 10 }, "235": { + "type": 14, "damage": 20, "dps": 12.5, "duration": 1600, "energy": 15 }, "236": { + "type": 4, "damage": 5, "dps": 8.33, "duration": 600, "energy": 7 }, "237": { + "type": 11, "damage": 12, "dps": 10.0, "duration": 1200, "energy": 14 }, "238": { + "type": 18, "damage": 10, "dps": 11.11, "duration": 900, "energy": 9 }, "239": { + "type": 9, "damage": 11, "dps": 13.75, "duration": 800, "energy": 6 }, "240": { + "type": 10, "damage": 11, "dps": 12.22, "duration": 900, "energy": 8 }, "241": { + "type": 2, "damage": 15, "dps": 11.54, "duration": 1300, "energy": 10 }, "242": { + "type": 1, "damage": 0, "dps": 0, "duration": 2230, "energy": 0 }, "243": { + "type": 2, "damage": 12, "dps": 13.33, "duration": 900, "energy": 8 }, "244": { + "type": 15, "damage": 6, "dps": 6.0, "duration": 1000, "energy": 15 }, "245": { + "type": 2, "damage": 100, "dps": 43.48, "duration": 2300, "energy": 100 }, "246": { + "type": 2, "damage": 90, "dps": 33.33, "duration": 2700, "energy": 50 }, "247": { + "type": 2, "damage": 140, "dps": 40.0, "duration": 3500, "energy": 100 }, "248": { + "type": 15, "damage": 80, "dps": 22.54, "duration": 3550, "energy": 50 }, "249": { + "type": 13, "damage": 8, "dps": 7.27, "duration": 1100, "energy": 15 }, "250": { + "type": 13, "damage": 20, "dps": 8.7, "duration": 2300, "energy": 25 }, "251": { + "type": 13, "damage": 90, "dps": 34.62, "duration": 2600, "energy": 50 }, "252": { + "type": 13, "damage": 140, "dps": 37.84, "duration": 3700, "energy": 100 }, "253": { + "type": 16, "damage": 15, "dps": 13.64, "duration": 1100, "energy": 9 }, "254": { + "type": 15, "damage": 90, "dps": 33.33, "duration": 2700, "energy": 50 }, "255": { + "type": 3, "damage": 14, "dps": 11.67, "duration": 1200, "energy": 10 }, "256": { + "type": 3, "damage": 90, "dps": 45.0, "duration": 2000, "energy": 100 }, "257": { + "type": 3, "damage": 70, "dps": 35.0, "duration": 2000, "energy": 50 }, "258": { + "type": 5, "damage": 80, "dps": 20.0, "duration": 4000, "energy": 50 }, "259": { + "type": 6, "damage": 50, "dps": 23.81, "duration": 2100, "energy": 33 }, "260": { + "type": 7, "damage": 10, "dps": 9.09, "duration": 1100, "energy": 14 }, "261": { + "type": 7, "damage": 15, "dps": 10.0, "duration": 1500, "energy": 15 }, "262": { + "type": 7, "damage": 70, "dps": 18.92, "duration": 3700, "energy": 33 }, "263": { + "type": 8, "damage": 8, "dps": 7.27, "duration": 1100, "energy": 14 }, "264": { + "type": 8, "damage": 10, "dps": 8.33, "duration": 1200, "energy": 15 }, "265": { + "type": 8, "damage": 60, "dps": 23.08, "duration": 2600, "energy": 50 }, "266": { + "type": 9, "damage": 15, "dps": 13.64, "duration": 1100, "energy": 7 }, "267": { + "type": 9, "damage": 80, "dps": 24.24, "duration": 3300, "energy": 50 }, "268": { + "type": 9, "damage": 70, "dps": 33.33, "duration": 2100, "energy": 50 }, "269": { + "type": 10, "damage": 14, "dps": 12.73, "duration": 1100, "energy": 10 }, "270": { + "type": 10, "damage": 160, "dps": 40.0, "duration": 4000, "energy": 100 }, "271": { + "type": 12, "damage": 8, "dps": 7.27, "duration": 1100, "energy": 14 }, "272": { + "type": 12, "damage": 90, "dps": 34.62, "duration": 2600, "energy": 50 }, "273": { + "type": 12, "damage": 90, "dps": 23.08, "duration": 3900, "energy": 50 }, "274": { + "type": 14, "damage": 12, "dps": 10.91, "duration": 1100, "energy": 12 }, "275": { + "type": 14, "damage": 120, "dps": 44.44, "duration": 2700, "energy": 100 }, "276": { + "type": 14, "damage": 60, "dps": 23.08, "duration": 2600, "energy": 50 }, "277": { + "type": 16, "damage": 110, "dps": 28.21, "duration": 3900, "energy": 50 }, "278": { + "type": 18, "damage": 12, "dps": 10.91, "duration": 1100, "energy": 12 }, "279": { + "type": 18, "damage": 70, "dps": 21.88, "duration": 3200, "energy": 33 }, "280": { + "type": 18, "damage": 70, "dps": 35.0, "duration": 2000, "energy": 50 }, "281": { + "type": 1, "damage": 15, "dps": 10.0, "duration": 1500, "energy": 15 }, "282": { + "type": 1, "damage": 8, "dps": 6.7, "duration": 1200, "energy": 10 }, "283": { + "type": 11, "damage": 16, "dps": 13.33, "duration": 1200, "energy": 8 }, "284": { + "type": 11, "damage": 65, "dps": 29.5, "duration": 1700, "energy": 50 }, "285": { + "type": 16, "damage": 150, "dps": 36.6, "duration": 3600, "energy": 100 }, "286": { + "type": 9, "damage": 80, "dps": 36.4, "duration": 1700, "energy": 50 }, "287": { + "type": 1, "damage": 0, "dps": 0, "duration": 1700, "energy": 15 }, "288": { + "type": 14, "damage": 70, "dps": 15.6, "duration": 4000, "energy": 50 }, "289": { + "type": 11, "damage": 130, "dps": 59.1, "duration": 1700, "energy": 100 }, "290": { + "type": 5, "damage": 130, "dps": 59.1, "duration": 1700, "energy": 100 }, "291": { + "type": 1, "damage": 5, "dps": 3.8, "duration": 1300, From 2d6dbde431931394da65b65901d0f93ff944ffed Mon Sep 17 00:00:00 2001 From: kvangent Date: Sun, 18 Feb 2018 17:55:33 -0800 Subject: [PATCH 25/79] Fix bug with filecache when running multiple instances. --- .gitignore | 2 +- PokeAlarm/Cache/FileCache.py | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index e87d91f4f..dc41b5b73 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,7 @@ _build # pa runtime files *.pyc -cache/*.cache +cache/* # OS files .DS_Store diff --git a/PokeAlarm/Cache/FileCache.py b/PokeAlarm/Cache/FileCache.py index b5e250c19..34501a0a8 100644 --- a/PokeAlarm/Cache/FileCache.py +++ b/PokeAlarm/Cache/FileCache.py @@ -27,8 +27,7 @@ def __init__(self, name): if os.path.isfile(self._file): self._load() else: - with portalocker.Lock(self._file, mode="wb+") as f: - pickle.dump({}, f, protocol=pickle.HIGHEST_PROTOCOL) + self._save() def _load(self): try: @@ -65,7 +64,7 @@ def _save(self): try: # Write to temporary file and then rename temp = self._file + ".new" - with portalocker.Lock(self._file, timeout=5, mode="wb+"): + with portalocker.Lock(self._file + ".lock", timeout=5, mode="wb+"): with portalocker.Lock(temp, timeout=5, mode="wb+") as f: pickle.dump(data, f, protocol=pickle.HIGHEST_PROTOCOL) if os.path.exists(self._file): From 007b997857471d756a0aa779ef1f6bcb88760d61 Mon Sep 17 00:00:00 2001 From: kvangent Date: Sun, 18 Feb 2018 18:50:53 -0800 Subject: [PATCH 26/79] Really fix bug with FileCache which running multiple instances. --- PokeAlarm/Cache/FileCache.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PokeAlarm/Cache/FileCache.py b/PokeAlarm/Cache/FileCache.py index 34501a0a8..95abd5d48 100644 --- a/PokeAlarm/Cache/FileCache.py +++ b/PokeAlarm/Cache/FileCache.py @@ -67,9 +67,9 @@ def _save(self): with portalocker.Lock(self._file + ".lock", timeout=5, mode="wb+"): with portalocker.Lock(temp, timeout=5, mode="wb+") as f: pickle.dump(data, f, protocol=pickle.HIGHEST_PROTOCOL) - if os.path.exists(self._file): - os.remove(self._file) # Required for Windows - os.rename(temp, self._file) + if os.path.exists(self._file): + os.remove(self._file) # Required for Windows + os.rename(temp, self._file) log.debug("Cache saved successfully.") except Exception as e: log.error("Encountered error while saving cache: " From 4ddfde69b42854151586966729ee34207cbedb8e Mon Sep 17 00:00:00 2001 From: thunder123456 Date: Mon, 19 Feb 2018 00:34:51 -0600 Subject: [PATCH 27/79] Fix rules Fix rules credit to ShuckleHQ, added support for weather rules and fix gmaps error --- PokeAlarm/Load.py | 2 ++ start_pokealarm.py | 11 ++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/PokeAlarm/Load.py b/PokeAlarm/Load.py index e0f67d13a..a04471b1a 100644 --- a/PokeAlarm/Load.py +++ b/PokeAlarm/Load.py @@ -47,6 +47,8 @@ def parse_rules_file(manager, filename): load_rules_section(manager.add_egg_rule, rules.pop('eggs', {})) log.debug("Parsing 'raids' section.") load_rules_section(manager.add_raid_rule, rules.pop('raids', {})) + log.debug("Parsing 'weather' section.") + load_rules_section(manager.add_weather_rule, rules.pop('weather', {})) for key in rules: raise ValueError("Unknown Event type '{}'. Rules must be defined " diff --git a/start_pokealarm.py b/start_pokealarm.py index 09031e8f5..688772319 100644 --- a/start_pokealarm.py +++ b/start_pokealarm.py @@ -140,7 +140,7 @@ def parse_settings(root_path): action='append', default=[], help='Names of Manager processes to start.') parser.add_argument( - '-k', '--key', type=str, action='append', default=[], + '-k', '--key', type=str, action='append', default=[None], help='Specify a Google API Key to use.') parser.add_argument( '-f', '--filters', type=parse_unicode, action='append', @@ -201,9 +201,10 @@ def parse_settings(root_path): config['DEBUG'] = args.debug # Check to make sure that the same number of arguments are included - for arg in [args.filters, args.alarms, args.geofences, - args.location, args.locale, args.units, args.cache_type, - args.timelimit, args.max_attempts, args.timezone]: + for arg in [args.key, args.filters, args.alarms, args.rules, + args.geofences, args.location, args.locale, args.units, + args.cache_type, args.timelimit, args.max_attempts, + args.timezone]: if len(arg) > 1: # Remove defaults from the list arg.pop(0) size = len(arg) @@ -293,4 +294,4 @@ def exit_gracefully(): if __name__ == '__main__': log.info("PokeAlarm is getting ready...") - start_server() + start_server() \ No newline at end of file From eb1eebb687bda32e525a54902538c9aafb4ddeee Mon Sep 17 00:00:00 2001 From: Marcus Ponting Date: Mon, 19 Feb 2018 09:48:41 +0000 Subject: [PATCH 28/79] set up rules for weather alerts and set gmaps key default to None --- PokeAlarm/Load.py | 2 ++ start_pokealarm.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/PokeAlarm/Load.py b/PokeAlarm/Load.py index e0f67d13a..a04471b1a 100644 --- a/PokeAlarm/Load.py +++ b/PokeAlarm/Load.py @@ -47,6 +47,8 @@ def parse_rules_file(manager, filename): load_rules_section(manager.add_egg_rule, rules.pop('eggs', {})) log.debug("Parsing 'raids' section.") load_rules_section(manager.add_raid_rule, rules.pop('raids', {})) + log.debug("Parsing 'weather' section.") + load_rules_section(manager.add_weather_rule, rules.pop('weather', {})) for key in rules: raise ValueError("Unknown Event type '{}'. Rules must be defined " diff --git a/start_pokealarm.py b/start_pokealarm.py index 09031e8f5..6fbe3c348 100644 --- a/start_pokealarm.py +++ b/start_pokealarm.py @@ -140,7 +140,7 @@ def parse_settings(root_path): action='append', default=[], help='Names of Manager processes to start.') parser.add_argument( - '-k', '--key', type=str, action='append', default=[], + '-k', '--key', type=str, action='append', default=[None], help='Specify a Google API Key to use.') parser.add_argument( '-f', '--filters', type=parse_unicode, action='append', From 4210039b97ee82e8bb0e65b1620dc9dc7524ac2b Mon Sep 17 00:00:00 2001 From: Marcus Ponting Date: Mon, 19 Feb 2018 12:56:36 +0000 Subject: [PATCH 29/79] fix multi gmaps bugs in PR11 --- start_pokealarm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start_pokealarm.py b/start_pokealarm.py index 3ac06ef59..09bc5cac1 100644 --- a/start_pokealarm.py +++ b/start_pokealarm.py @@ -201,7 +201,7 @@ def parse_settings(root_path): config['DEBUG'] = args.debug # Check to make sure that the same number of arguments are included - for arg in [args.key, args.filters, args.alarms, args.rules, + for arg in [args.filters, args.alarms, args.rules, args.geofences, args.location, args.locale, args.units, args.cache_type, args.timelimit, args.max_attempts, args.timezone]: From 817f77f64d4fccf02a1ebd12b46919eef4cac65a Mon Sep 17 00:00:00 2001 From: Marcus Ponting Date: Mon, 19 Feb 2018 13:47:52 +0000 Subject: [PATCH 30/79] Do not set key default to None --- start_pokealarm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start_pokealarm.py b/start_pokealarm.py index 09bc5cac1..15b27de82 100644 --- a/start_pokealarm.py +++ b/start_pokealarm.py @@ -140,7 +140,7 @@ def parse_settings(root_path): action='append', default=[], help='Names of Manager processes to start.') parser.add_argument( - '-k', '--key', type=str, action='append', default=[None], + '-k', '--key', type=str, action='append', default=[], help='Specify a Google API Key to use.') parser.add_argument( '-f', '--filters', type=parse_unicode, action='append', From 0ee29b614d50c3cf7ee78a919674b7c247b4ee26 Mon Sep 17 00:00:00 2001 From: Billy Bryant <3013565+billyjbryant@users.noreply.github.com> Date: Wed, 21 Feb 2018 21:56:34 -0500 Subject: [PATCH 31/79] Adding "gym_name_excludes" restriction to Gym, Egg, Raid filters (#611) --- PokeAlarm/Filters/EggFilter.py | 5 +++++ PokeAlarm/Filters/GymFilter.py | 5 +++++ PokeAlarm/Filters/RaidFilter.py | 5 +++++ PokeAlarm/Utilities/GymUtils.py | 9 +++++++++ tests/filters/test_egg_filter.py | 15 +++++++++++++++ tests/filters/test_gym_filter.py | 15 +++++++++++++++ tests/filters/test_raid_filter.py | 15 +++++++++++++++ 7 files changed, 69 insertions(+) diff --git a/PokeAlarm/Filters/EggFilter.py b/PokeAlarm/Filters/EggFilter.py index a8b732e8d..6f99f3369 100644 --- a/PokeAlarm/Filters/EggFilter.py +++ b/PokeAlarm/Filters/EggFilter.py @@ -45,6 +45,11 @@ def __init__(self, name, data): event_attribute='gym_name', eval_func=GymUtils.match_regex_dict, limit=BaseFilter.parse_as_set( GymUtils.create_regex, 'gym_name_contains', data)) + self.gym_name_excludes = self.evaluate_attribute( # f.gn no-match e.gn + event_attribute='gym_name', + eval_func=GymUtils.not_match_regex_dict, + limit=BaseFilter.parse_as_set( + GymUtils.create_regex, 'gym_name_excludes', data)) # Team Info self.old_team = self.evaluate_attribute( # f.ctis contains m.cti diff --git a/PokeAlarm/Filters/GymFilter.py b/PokeAlarm/Filters/GymFilter.py index 3826b5ef4..e95dee8b8 100644 --- a/PokeAlarm/Filters/GymFilter.py +++ b/PokeAlarm/Filters/GymFilter.py @@ -36,6 +36,11 @@ def __init__(self, name, data): event_attribute='gym_name', eval_func=GymUtils.match_regex_dict, limit=BaseFilter.parse_as_set( GymUtils.create_regex, 'gym_name_contains', data)) + self.gym_name_excludes = self.evaluate_attribute( # f.gn no-match e.gn + event_attribute='gym_name', + eval_func=GymUtils.not_match_regex_dict, + limit=BaseFilter.parse_as_set( + GymUtils.create_regex, 'gym_name_excludes', data)) # Slots Available self.min_slots = self.evaluate_attribute( diff --git a/PokeAlarm/Filters/RaidFilter.py b/PokeAlarm/Filters/RaidFilter.py index 89edb80db..4d3170d69 100644 --- a/PokeAlarm/Filters/RaidFilter.py +++ b/PokeAlarm/Filters/RaidFilter.py @@ -72,6 +72,11 @@ def __init__(self, name, data): event_attribute='gym_name', eval_func=GymUtils.match_regex_dict, limit=BaseFilter.parse_as_set( GymUtils.create_regex, 'gym_name_contains', data)) + self.gym_name_excludes = self.evaluate_attribute( # f.gn no-match e.gn + event_attribute='gym_name', + eval_func=GymUtils.not_match_regex_dict, + limit=BaseFilter.parse_as_set( + GymUtils.create_regex, 'gym_name_excludes', data)) # Team Info self.old_team = self.evaluate_attribute( # f.ctis contains m.cti diff --git a/PokeAlarm/Utilities/GymUtils.py b/PokeAlarm/Utilities/GymUtils.py index a564c5e5b..475a8d1db 100644 --- a/PokeAlarm/Utilities/GymUtils.py +++ b/PokeAlarm/Utilities/GymUtils.py @@ -43,3 +43,12 @@ def match_regex_dict(reg_exs, name): if reg_ex.search(name): return True return False + + +# Returns true if the string does not match any given RE objects +def not_match_regex_dict(reg_exs, name): + name = unicode(name) + for reg_ex in reg_exs: + if reg_ex.search(name): + return False + return True diff --git a/tests/filters/test_egg_filter.py b/tests/filters/test_egg_filter.py index 17672e096..26cfea97d 100755 --- a/tests/filters/test_egg_filter.py +++ b/tests/filters/test_egg_filter.py @@ -58,6 +58,21 @@ def test_gym_names(self): for e in [fail1, fail2, fail3]: self.assertFalse(egg_filter.check_event(e)) + def test_gym_name_excludes(self): + # Create the filters + settings = {"gym_name_excludes": ["fail"]} + egg_filter = Filters.EggFilter('filter1', settings) + + # Generate events that should pass + for r in ["pass1", "2pass", "3pass3"]: + event = Events.EggEvent(generate_egg({"name": r})) + self.assertTrue(egg_filter.check_event(event)) + + # Generate events that should fail + for r in ["fail1", "failpass", "passfail"]: + event = Events.EggEvent(generate_egg({"name": r})) + self.assertFalse(egg_filter.check_event(event)) + def test_current_team(self): # Create the filters settings = {"current_teams": [1, "2", "Instinct"]} diff --git a/tests/filters/test_gym_filter.py b/tests/filters/test_gym_filter.py index 1ba974a1e..b88f22961 100644 --- a/tests/filters/test_gym_filter.py +++ b/tests/filters/test_gym_filter.py @@ -33,6 +33,21 @@ def test_gym_names(self): for e in [fail1, fail2, fail3]: self.assertFalse(gym_filter.check_event(e)) + def test_gym_name_excludes(self): + # Create the filters + settings = {"gym_name_excludes": ["fail"]} + gym_filter = Filters.GymFilter('filter1', settings) + + # Generate events that should pass + for r in ["pass1", "2pass", "3pass3"]: + event = Events.GymEvent(generate_gym({"name": r})) + self.assertTrue(gym_filter.check_event(event)) + + # Generate events that should fail + for r in ["fail1", "failpass", "passfail"]: + event = Events.GymEvent(generate_gym({"name": r})) + self.assertFalse(gym_filter.check_event(event)) + def test_gym_guards(self): # Create the filters settings = {"min_slots": 2, "max_slots": 4} diff --git a/tests/filters/test_raid_filter.py b/tests/filters/test_raid_filter.py index c7fadec03..986e8432e 100755 --- a/tests/filters/test_raid_filter.py +++ b/tests/filters/test_raid_filter.py @@ -122,6 +122,21 @@ def test_gym_names(self): for e in [fail1, fail2, fail3]: self.assertFalse(raid_filter.check_event(e)) + def test_gym_name_excludes(self): + # Create the filters + settings = {"gym_name_excludes": ["fail"]} + raid_filter = Filters.RaidFilter('filter1', settings) + + # Generate events that should pass + for r in ["pass1", "2pass", "3pass3"]: + event = Events.RaidEvent(generate_raid({"name": r})) + self.assertTrue(raid_filter.check_event(event)) + + # Generate events that should fail + for r in ["fail1", "failpass", "passfail"]: + event = Events.RaidEvent(generate_raid({"name": r})) + self.assertFalse(raid_filter.check_event(event)) + def test_current_team(self): # Create the filters settings = {"current_teams": [1, "2", "Instinct"]} From 911c92c4d5fceb115542ba700d3b47d90e42cc86 Mon Sep 17 00:00:00 2001 From: Billy Bryant <3013565+billyjbryant@users.noreply.github.com> Date: Sun, 25 Feb 2018 00:13:30 -0500 Subject: [PATCH 32/79] Add Costume support * Costume DTS * Adding Costume DTS to MonEvent and Costume + Form to RaidEvent * Adding Costume Filter * Removed Filters by Name for Form & Costume * Adding Costume DTS to MonEvent and Costume + Form to RaidEvent * Adding Costume Filter * Removed Filters by Name for Form & Costume --- PokeAlarm/Events/MonEvent.py | 20 +++++++++++++++++--- PokeAlarm/Events/RaidEvent.py | 22 ++++++++++++++++++++++ PokeAlarm/Filters/MonFilter.py | 7 +++++++ PokeAlarm/Locale.py | 16 ++++++++++++++++ locales/de.json | 20 ++++++++++++++++++++ locales/en.json | 20 ++++++++++++++++++++ locales/es.json | 20 ++++++++++++++++++++ locales/fr.json | 20 ++++++++++++++++++++ locales/it.json | 20 ++++++++++++++++++++ locales/ko.json | 20 ++++++++++++++++++++ locales/pt.json | 20 ++++++++++++++++++++ tests/filters/test_monster_filter.py | 15 +++++++++++++++ 12 files changed, 217 insertions(+), 3 deletions(-) diff --git a/PokeAlarm/Events/MonEvent.py b/PokeAlarm/Events/MonEvent.py index 52a8f233c..6586fb7e8 100644 --- a/PokeAlarm/Events/MonEvent.py +++ b/PokeAlarm/Events/MonEvent.py @@ -50,6 +50,7 @@ def __init__(self, data): self.mon_lvl = check_for_none( int, data.get('pokemon_level'), Unknown.TINY) self.cp = check_for_none(int, data.get('cp'), Unknown.TINY) + # IVs self.atk_iv = check_for_none( int, data.get('individual_attack'), Unknown.TINY) @@ -62,8 +63,6 @@ def __init__(self, data): 100 * (self.atk_iv + self.def_iv + self.sta_iv) / float(45) else: self.iv = Unknown.SMALL - # Form - self.form_id = check_for_none(int, data.get('form'), 0) # Quick Move self.quick_id = check_for_none( @@ -86,7 +85,6 @@ def __init__(self, data): # Cosmetic self.gender = MonUtils.get_gender_sym( check_for_none(int, data.get('gender'), Unknown.TINY)) - self.height = check_for_none(float, data.get('height'), Unknown.SMALL) self.weight = check_for_none(float, data.get('weight'), Unknown.SMALL) if Unknown.is_not(self.height, self.weight): @@ -96,6 +94,12 @@ def __init__(self, data): self.size_id = Unknown.SMALL self.types = get_base_types(self.monster_id) + # Form + self.form_id = check_for_none(int, data.get('form'), 0) + + # Costume + self.costume_id = check_for_none(int, data.get('costume'), 0) + # Correct this later self.name = self.monster_id self.geofence = Unknown.REGULAR @@ -104,7 +108,11 @@ def __init__(self, data): def generate_dts(self, locale, timezone, units): """ Return a dict with all the DTS for this event. """ time = get_time_as_str(self.disappear_time, timezone) + form_name = locale.get_form_name(self.monster_id, self.form_id) + costume_name = locale.get_costume_name( + self.monster_id, self.costume_id) + weather_name = locale.get_weather_name(self.weather_id) boosted_weather_name = locale.get_weather_name(self.boosted_weather_id) @@ -198,6 +206,12 @@ def generate_dts(self, locale, timezone, units): 'form_id': self.form_id, 'form_id_3': "{:03d}".format(self.form_id), + # Costume + 'costume': costume_name, + 'costume_or_empty': Unknown.or_empty(costume_name), + 'costume_id': self.costume_id, + 'costume_id_3': "{:03d}".format(self.costume_id), + # Quick Move 'quick_move': locale.get_move_name(self.quick_id), 'quick_id': self.quick_id, diff --git a/PokeAlarm/Events/RaidEvent.py b/PokeAlarm/Events/RaidEvent.py index 112b62c97..1a300f534 100644 --- a/PokeAlarm/Events/RaidEvent.py +++ b/PokeAlarm/Events/RaidEvent.py @@ -40,6 +40,12 @@ def __init__(self, data): self.types = get_base_types(self.mon_id) self.boss_level = 20 + # Form + self.form_id = check_for_none(int, data.get('form'), 0) + + # Costume + self.costume_id = check_for_none(int, data.get('costume'), 0) + # Weather Info self.weather_id = check_for_none( int, data.get('weather'), Unknown.TINY) @@ -88,6 +94,10 @@ def generate_dts(self, locale, timezone, units): raid_end_time = get_time_as_str(self.raid_end, timezone) dts = self.custom_dts.copy() + form_name = locale.get_form_name(self.monster_id, self.form_id) + costume_name = locale.get_costume_name( + self.monster_id, self.costume_id) + boosted_weather_name = locale.get_weather_name(self.boosted_weather_id) weather_name = locale.get_weather_name(self.weather_id) @@ -120,6 +130,18 @@ def generate_dts(self, locale, timezone, units): get_type_emoji(self.types[1])) if Unknown.is_not(type2) else get_type_emoji(self.types[0])), + # Form + 'form': form_name, + 'form_or_empty': Unknown.or_empty(form_name), + 'form_id': self.form_id, + 'form_id_3': "{:03d}".format(self.form_id), + + # Costume + 'costume': costume_name, + 'costume_or_empty': Unknown.or_empty(costume_name), + 'costume_id': self.costume_id, + 'costume_id_3': "{:03d}".format(self.costume_id), + # Location 'lat': self.lat, 'lng': self.lng, diff --git a/PokeAlarm/Filters/MonFilter.py b/PokeAlarm/Filters/MonFilter.py index 20f9520af..8fd685afb 100644 --- a/PokeAlarm/Filters/MonFilter.py +++ b/PokeAlarm/Filters/MonFilter.py @@ -93,6 +93,10 @@ def __init__(self, name, data): self.forms = self.evaluate_attribute( # f.forms in m.form_id event_attribute='form_id', eval_func=operator.contains, limit=BaseFilter.parse_as_set(int, 'form_ids', data)) + # Costume TODO: names + self.costumes = self.evaluate_attribute( # f.costumes in m.costume_id + event_attribute='costume_id', eval_func=operator.contains, + limit=BaseFilter.parse_as_set(int, 'costume_ids', data)) # Quick Move self.quick_moves = self.evaluate_attribute( # f.q_ms contains m.q_m @@ -194,6 +198,9 @@ def to_dict(self): # Form if self.forms is not None: settings['forms'] = self.forms + # Costume + if self.forms is not None: + settings['costumes'] = self.costumes # Quick Move if self.quick_moves is not None: diff --git a/PokeAlarm/Locale.py b/PokeAlarm/Locale.py index 73e18bccb..01cc5a96f 100644 --- a/PokeAlarm/Locale.py +++ b/PokeAlarm/Locale.py @@ -65,6 +65,16 @@ def __init__(self, language): for id_, val in default["types"].iteritems(): self.__type_names[int(id_)] = types.get(id_, val) + # Pokemon ID -> { Costume ID -> Costume Name) + self.__costume_names = {} + all_costumes = info.get("costumes", {}) + for pkmn_id, costumes in default["costumes"].iteritems(): + self.__costume_names[int(pkmn_id)] = {} + pkmn_costumes = all_costumes.get(pkmn_id, {}) + for costume_id, costume_name in costumes.iteritems(): + self.__costume_names[int(pkmn_id)][int( + costume_id)] = pkmn_costumes.get(costume_id, costume_name) + # Pokemon ID -> { Form ID -> Form Name) self.__form_names = {} all_forms = info.get("forms", {}) @@ -74,6 +84,7 @@ def __init__(self, language): for form_id, form_name in forms.iteritems(): self.__form_names[int(pkmn_id)][int(form_id)] = pkmn_forms.get( form_id, form_name) + log.debug("Loaded '{}' locale successfully!".format(language)) self.__misc = info.get('misc', {}) @@ -110,5 +121,10 @@ def get_type_name(self, type_id): def get_form_name(self, pokemon_id, form_id): return self.__form_names.get(pokemon_id, {}).get(form_id, 'unknown') + # Returns the name of the costume for the given Pokemon ID and Costume ID + def get_costume_name(self, pokemon_id, costume_id): + return self.__costume_names.get( + pokemon_id, {}).get(costume_id, 'unknown') + def get_boosted_text(self): return self.__misc.get('boosted', '') diff --git a/locales/de.json b/locales/de.json index 405a2ab95..adbb9e357 100644 --- a/locales/de.json +++ b/locales/de.json @@ -12,6 +12,26 @@ "4": "gro\u00DF", "5": "riesig" }, + "costumes": { + "25": { + "1": "Festlicher Hut", + "2": "Partyhut", + "3": "Ash Cap", + "4": "Hexenhut" + }, + "26": { + "1": "Festlicher Hut", + "2": "Partyhut", + "3": "Ash Cap", + "4": "Hexenhut" + }, + "172": { + "1": "Festlicher Hut", + "2": "Partyhut", + "3": "Ash Cap", + "4": "Hexenhut" + } + }, "types": { "1": "Normal", "2": "Kampf", diff --git a/locales/en.json b/locales/en.json index 95b5f8368..3ce8f89a7 100644 --- a/locales/en.json +++ b/locales/en.json @@ -72,6 +72,26 @@ "4": "large", "5": "big" }, + "costumes": { + "25": { + "1": "Festive Hat", + "2": "Party Hat", + "3": "Ash Hat", + "4": "Witch Hat" + }, + "26": { + "1": "Festive Hat", + "2": "Party Hat", + "3": "Ash Hat", + "4": "Witch Hat" + }, + "172": { + "1": "Festive Hat", + "2": "Party Hat", + "3": "Ash Hat", + "4": "Witch Hat" + } + }, "types": { "1": "Normal", "2": "Fighting", diff --git a/locales/es.json b/locales/es.json index 86d7b583a..2dba30143 100644 --- a/locales/es.json +++ b/locales/es.json @@ -12,6 +12,26 @@ "4": "grande", "5": "enorme" }, + "costumes": { + "25": { + "1": "Gorra festiva", + "2": "Gorra de Fiesta", + "3": "Gorra de Ash", + "4": "Sombrero de Bruja" + }, + "26": { + "1": "Gorra festiva", + "2": "Gorra de Fiesta", + "3": "Gorra de Ash", + "4": "Sombrero de Bruja" + }, + "172": { + "1": "Gorra festiva", + "2": "Gorra de Fiesta", + "3": "Gorra de Ash", + "4": "Sombrero de Bruja" + } + }, "types": { "1": "Normal", "2": "Lucha", diff --git a/locales/fr.json b/locales/fr.json index 1f5c1b9d9..4c9ce3185 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -12,6 +12,26 @@ "4": "grand", "5": "\u00E9norme" }, + "costumes": { + "25": { + "1": "Chapeau de Vacances", + "2": "Chapeau de F\u00EAte", + "3": "Chapeau de Ash", + "4": "Chapeau de Sorci\u00E8re" + }, + "26": { + "1": "Chapeau de Vacances", + "2": "Chapeau de F\u00EAte", + "3": "Chapeau de Ash", + "4": "Chapeau de Sorci\u00E8re" + }, + "172": { + "1": "Chapeau de Vacances", + "2": "Chapeau de F\u00EAte", + "3": "Chapeau de Ash", + "4": "Chapeau de Sorci\u00E8re" + } + }, "types": { "1": "Normal", "2": "Combattre", diff --git a/locales/it.json b/locales/it.json index 0dc2ddd43..9a6234c2b 100644 --- a/locales/it.json +++ b/locales/it.json @@ -12,6 +12,26 @@ "4": "grande", "5": "enorme" }, + "costumes": { + "25": { + "1": "Cappello Festiva", + "2": "Cappello da Festa", + "3": "Cappello di Ash", + "4": "Cappello da Strega" + }, + "26": { + "1": "Cappello Festiva", + "2": "Cappello da Festa", + "3": "Cappello di Ash", + "4": "Cappello da Strega" + }, + "172": { + "1": "Cappello Festiva", + "2": "Cappello da Festa", + "3": "Cappello di Ash", + "4": "Cappello da Strega" + } + }, "types": { "1": "Normale", "2": "Combattimento", diff --git a/locales/ko.json b/locales/ko.json index 5008dadae..24ff8fe56 100644 --- a/locales/ko.json +++ b/locales/ko.json @@ -12,6 +12,26 @@ "4": "\ud070", "5": "\uac70\ub300\ud55c" }, + "costumes": { + "25": { + "1": "\ucd95\uc81c \ubaa8\uc790", + "2": "\ud30c\ud2f0 \ubaa8\uc790", + "3": "Ash \ubaa8\uc790", + "4": "\ub9c8\ub140 \ubaa8\uc790" + }, + "26": { + "1": "\ucd95\uc81c \ubaa8\uc790", + "2": "\ud30c\ud2f0 \ubaa8\uc790", + "3": "Ash \ubaa8\uc790", + "4": "\ub9c8\ub140 \ubaa8\uc790" + }, + "172": { + "1": "\ucd95\uc81c \ubaa8\uc790", + "2": "\ud30c\ud2f0 \ubaa8\uc790", + "3": "Ash \ubaa8\uc790", + "4": "\ub9c8\ub140 \ubaa8\uc790" + } + }, "types": { "1": "\ubcf4\ud1b5", "2": "\ud30c\uc774\ud305", diff --git a/locales/pt.json b/locales/pt.json index 40956e754..91fec97b4 100644 --- a/locales/pt.json +++ b/locales/pt.json @@ -12,6 +12,26 @@ "4": "grande", "5": "enorme" }, + "costumes": { + "25": { + "1": "Chap\u00E9u Festiva", + "2": "Chap\u00E9u de Festa", + "3": "Chap\u00E9u de Ash", + "4": "Chap\u00E9u da Bruxa" + }, + "26": { + "1": "Chap\u00E9u Festiva", + "2": "Chap\u00E9u de Festa", + "3": "Chap\u00E9u de Ash", + "4": "Chap\u00E9u da Bruxa" + }, + "172": { + "1": "Chap\u00E9u Festiva", + "2": "Chap\u00E9u de Festa", + "3": "Chap\u00E9u de Ash", + "4": "Chap\u00E9u da Bruxa" + } + }, "types": { "1": "Normal", "2": "Lutar", diff --git a/tests/filters/test_monster_filter.py b/tests/filters/test_monster_filter.py index 1b13886ab..b21ffde67 100644 --- a/tests/filters/test_monster_filter.py +++ b/tests/filters/test_monster_filter.py @@ -201,6 +201,21 @@ def test_form(self): self.assertFalse(mon_filter.check_event(create_event({'form': 2}))) self.assertFalse(mon_filter.check_event(create_event({'form': 999}))) + def test_costume(self): + # Create filter that forces settings + settings = {"costume_ids": [1, 2]} + mon_filter = Filters.MonFilter('costume_filter', settings) + + # Test events that should pass + for c in [1, 2]: + event = Events.MonEvent(generate_monster({"costume": c})) + self.assertTrue(mon_filter.check_event(event)) + + # Test events that should fail + for c in [3, 4]: + event = Events.MonEvent(generate_monster({"costume": c})) + self.assertFalse(mon_filter.check_event(event)) + def test_moves(self): quick_settings = {"quick_moves": ["Vine Whip", "Tackle"]} quick_mon_filter = Filters.MonFilter('quick_move_filter', From 90fba5469a17e6b6d6d5f24a3fec6536cffeef60 Mon Sep 17 00:00:00 2001 From: evilmoses Date: Mon, 26 Feb 2018 16:04:37 +0000 Subject: [PATCH 33/79] Add Gym Sponsor and Parks DTS. (#603) * filter on sponsor and park * Rework sponsr filter to test for true/false * typo * goddammit dude, remove your test shit * filter on sponsor and park * Rework sponsr filter to test for true/false * typo * goddammit dude, remove your test shit * Fixed a few things with the is_sponsor tests, also changed gym_sponsor to gym_sponsor_id * Fixing code styling issues * undo all changes to webhook_test * remove gym_ from new fields * Dropped gym_ from DTS fields --- PokeAlarm/Events/EggEvent.py | 8 +++++++ PokeAlarm/Events/RaidEvent.py | 8 +++++++ PokeAlarm/Filters/EggFilter.py | 26 +++++++++++++++++++-- PokeAlarm/Filters/RaidFilter.py | 26 +++++++++++++++++++-- tests/filters/test_egg_filter.py | 39 +++++++++++++++++++++++++++++-- tests/filters/test_raid_filter.py | 38 +++++++++++++++++++++++++++++- 6 files changed, 138 insertions(+), 7 deletions(-) diff --git a/PokeAlarm/Events/EggEvent.py b/PokeAlarm/Events/EggEvent.py index 0b0add1ff..fa0b59a61 100644 --- a/PokeAlarm/Events/EggEvent.py +++ b/PokeAlarm/Events/EggEvent.py @@ -44,6 +44,11 @@ def __init__(self, data): str, data.get('description'), Unknown.REGULAR).strip() self.gym_image = check_for_none( str, data.get('url'), Unknown.REGULAR) + self.sponsor_id = check_for_none( + int, data.get('sponsor'), Unknown.TINY) + self.is_sponsor = True if self.sponsor_id > 0 else False + self.park = check_for_none( + str, data.get('park'), Unknown.REGULAR) # Gym Team (this is only available from cache) self.current_team_id = check_for_none( @@ -95,6 +100,9 @@ def generate_dts(self, locale, timezone, units): 'gym_name': self.gym_name, 'gym_description': self.gym_description, 'gym_image': self.gym_image, + 'sponsor_id': self.sponsor_id, + 'is_sponsor': self.is_sponsor, + 'park': self.park, 'team_id': self.current_team_id, 'team_name': locale.get_team_name(self.current_team_id), 'team_leader': locale.get_leader_name(self.current_team_id) diff --git a/PokeAlarm/Events/RaidEvent.py b/PokeAlarm/Events/RaidEvent.py index 1a300f534..fa34929b9 100644 --- a/PokeAlarm/Events/RaidEvent.py +++ b/PokeAlarm/Events/RaidEvent.py @@ -80,6 +80,11 @@ def __init__(self, data): str, data.get('description'), Unknown.REGULAR).strip() self.gym_image = check_for_none( str, data.get('url'), Unknown.REGULAR) + self.sponsor_id = check_for_none( + int, data.get('sponsor'), Unknown.TINY) + self.is_sponsor = True if self.sponsor_id > 0 else False + self.park = check_for_none( + str, data.get('park'), Unknown.REGULAR) # Gym Team (this is only available from cache) self.current_team_id = check_for_none( @@ -208,6 +213,9 @@ def generate_dts(self, locale, timezone, units): 'gym_name': self.gym_name, 'gym_description': self.gym_description, 'gym_image': self.gym_image, + 'sponsor_id': self.sponsor_id, + 'is_sponsor': self.is_sponsor, + 'park': self.park, 'team_id': self.current_team_id, 'team_name': locale.get_team_name(self.current_team_id), 'team_leader': locale.get_leader_name(self.current_team_id) diff --git a/PokeAlarm/Filters/EggFilter.py b/PokeAlarm/Filters/EggFilter.py index 6f99f3369..58cb1d772 100644 --- a/PokeAlarm/Filters/EggFilter.py +++ b/PokeAlarm/Filters/EggFilter.py @@ -51,6 +51,17 @@ def __init__(self, name, data): limit=BaseFilter.parse_as_set( GymUtils.create_regex, 'gym_name_excludes', data)) + # Gym sponsor + self.is_sponsor = self.evaluate_attribute( # f.gym_is_sponsor True + event_attribute='is_sponsor', eval_func=operator.eq, + limit=BaseFilter.parse_as_type(bool, 'is_sponsor', data)) + + # Gym park + self.park_contains = self.evaluate_attribute( # f.gp matches e.gp + event_attribute='park', eval_func=GymUtils.match_regex_dict, + limit=BaseFilter.parse_as_set( + GymUtils.create_regex, 'park_contains', data)) + # Team Info self.old_team = self.evaluate_attribute( # f.ctis contains m.cti event_attribute='current_team_id', eval_func=operator.contains, @@ -91,7 +102,18 @@ def to_dict(self): # Gym Name if self.gym_name_contains is not None: - settings['gym_name_matches'] = self.gym_name_contains + settings['gym_name_contains'] = self.gym_name_contains + + if self.gym_name_excludes is not None: + settings['gym_name_excludes'] = self.gym_name_excludes + + # Gym Sponsor + if self.is_sponsor is not None: + settings['is_sponsor'] = self.is_sponsor + + # Gym Park + if self.park_contains is not None: + settings['park_contains'] = self.park_contains # Geofences if self.geofences is not None: @@ -99,6 +121,6 @@ def to_dict(self): # Missing Info if self.is_missing_info is not None: - settings['missing_info'] = self.is_missing_info + settings['is_missing_info'] = self.is_missing_info return settings diff --git a/PokeAlarm/Filters/RaidFilter.py b/PokeAlarm/Filters/RaidFilter.py index 4d3170d69..6178d293a 100644 --- a/PokeAlarm/Filters/RaidFilter.py +++ b/PokeAlarm/Filters/RaidFilter.py @@ -78,6 +78,17 @@ def __init__(self, name, data): limit=BaseFilter.parse_as_set( GymUtils.create_regex, 'gym_name_excludes', data)) + # Gym sponsor + self.is_sponsor = self.evaluate_attribute( # f.gym_is_sponsor True + event_attribute='is_sponsor', eval_func=operator.eq, + limit=BaseFilter.parse_as_type(bool, 'is_sponsor', data)) + + # Gym park + self.park_contains = self.evaluate_attribute( # f.gp matches e.gp + event_attribute='park', eval_func=GymUtils.match_regex_dict, + limit=BaseFilter.parse_as_set( + GymUtils.create_regex, 'park_contains', data)) + # Team Info self.old_team = self.evaluate_attribute( # f.ctis contains m.cti event_attribute='current_team_id', eval_func=operator.contains, @@ -130,7 +141,18 @@ def to_dict(self): # Gym Name if self.gym_name_contains is not None: - settings['gym_name_matches'] = self.gym_name_contains + settings['gym_name_contains'] = self.gym_name_contains + + if self.gym_name_excludes is not None: + settings['gym_name_excludes'] = self.gym_name_excludes + + # Gym Sponsor + if self.gym_is_sponsor is not None: + settings['gym_is_sponsor'] = self.gym_is_sponsor + + # Gym Park + if self.park_contains is not None: + settings['park_contains'] = self.park_contains # Geofences if self.geofences is not None: @@ -138,6 +160,6 @@ def to_dict(self): # Missing Info if self.is_missing_info is not None: - settings['missing_info'] = self.is_missing_info + settings['is_missing_info'] = self.is_missing_info return settings diff --git a/tests/filters/test_egg_filter.py b/tests/filters/test_egg_filter.py index 26cfea97d..51991d8a6 100755 --- a/tests/filters/test_egg_filter.py +++ b/tests/filters/test_egg_filter.py @@ -39,7 +39,6 @@ def test_gym_names(self): settings = {"gym_name_contains": ["pass"]} egg_filter = Filters.EggFilter('filter1', settings) - # Generate events that should pass # Generate events that should pass pass1 = Events.EggEvent(generate_egg({"name": "pass1"})) pass2 = Events.EggEvent(generate_egg({"name": "2pass"})) @@ -73,6 +72,21 @@ def test_gym_name_excludes(self): event = Events.EggEvent(generate_egg({"name": r})) self.assertFalse(egg_filter.check_event(event)) + def test_park(self): + # Create the filters + settings = {"park_contains": ["pass"]} + egg_filter = Filters.EggFilter('filter1', settings) + + # Test events that should pass + for n in ["pass1", "2pass", "3pass3"]: + event = Events.EggEvent(generate_egg({"park": n})) + self.assertTrue(egg_filter.check_event(event)) + + # Test events that should fail + for n in ["fail1", "failpas", "pasfail"]: + event = Events.EggEvent(generate_egg({"park": n})) + self.assertFalse(egg_filter.check_event(event)) + def test_current_team(self): # Create the filters settings = {"current_teams": [1, "2", "Instinct"]} @@ -93,6 +107,25 @@ def test_current_team(self): for e in [fail1]: self.assertFalse(egg_filter.check_event(e)) + def test_is_sponsor(self): + # Create the filters + settings = {"is_sponsor": False} + egg_filter = Filters.EggFilter('filter1', settings) + + # Generate events that should pass + pass1 = Events.EggEvent(generate_egg({"sponsor": 0})) + + # Test passing events + for e in [pass1]: + self.assertTrue(egg_filter.check_event(e)) + + # Generate events that should fail + fail1 = Events.EggEvent(generate_egg({"sponsor": 4})) + + # Test failing events + for e in [fail1]: + self.assertFalse(egg_filter.check_event(e)) + def test_missing_info1(self): # Create the filters settings = {"max_dist": "inf", "is_missing_info": True} @@ -189,7 +222,9 @@ def generate_egg(values): "end": 1499246052, "level": 5, "latitude": 37.7876146, - "longitude": -122.390624 + "longitude": -122.390624, + "sponsor": None, + "park": None } egg.update(values) return egg diff --git a/tests/filters/test_raid_filter.py b/tests/filters/test_raid_filter.py index 986e8432e..1b1945255 100755 --- a/tests/filters/test_raid_filter.py +++ b/tests/filters/test_raid_filter.py @@ -137,6 +137,21 @@ def test_gym_name_excludes(self): event = Events.RaidEvent(generate_raid({"name": r})) self.assertFalse(raid_filter.check_event(event)) + def test_park(self): + # Create the filters + settings = {"park_contains": ["pass"]} + raid_filter = Filters.RaidFilter('filter1', settings) + + # Test events that should pass + for n in ["pass1", "2pass", "3pass3"]: + event = Events.RaidEvent(generate_raid({"park": n})) + self.assertTrue(raid_filter.check_event(event)) + + # Test events that should fail + for n in ["fail1", "failpas", "pasfail"]: + event = Events.RaidEvent(generate_raid({"park": n})) + self.assertFalse(raid_filter.check_event(event)) + def test_current_team(self): # Create the filters settings = {"current_teams": [1, "2", "Instinct"]} @@ -157,6 +172,25 @@ def test_current_team(self): for e in [fail1]: self.assertFalse(raid_filter.check_event(e)) + def test_is_sponsor(self): + # Create the filters + settings = {"is_sponsor": False} + raid_filter = Filters.RaidFilter('filter1', settings) + + # Generate events that should pass + pass1 = Events.EggEvent(generate_raid({"sponsor": 0})) + + # Test passing events + for e in [pass1]: + self.assertTrue(raid_filter.check_event(e)) + + # Generate events that should fail + fail1 = Events.EggEvent(generate_raid({"sponsor": 4})) + + # Test failing events + for e in [fail1]: + self.assertFalse(raid_filter.check_event(e)) + def test_missing_info1(self): # Create the filters settings = {"max_dist": "inf", "is_missing_info": True} @@ -266,7 +300,9 @@ def generate_raid(values): "end": 1499246052, "level": 5, "latitude": 37.7876146, - "longitude": -122.390624 + "longitude": -122.390624, + "sponsor": None, + "park": None } raid.update(values) return raid From 2fc362015928ff1a9c86fef82cce94d59345dd6a Mon Sep 17 00:00:00 2001 From: kvangent Date: Mon, 26 Feb 2018 08:08:06 -0800 Subject: [PATCH 34/79] GMaps Improvements (#612) --- PokeAlarm/LocationServices/GMaps.py | 278 +++++++++++++++++++++++ PokeAlarm/LocationServices/GoogleMaps.py | 205 ----------------- PokeAlarm/LocationServices/__init__.py | 10 +- PokeAlarm/Manager.py | 227 +++++++++--------- PokeAlarm/Utilities/GenUtils.py | 21 ++ config/config.ini.example | 101 +++++--- requirements.txt | 4 +- start_pokealarm.py | 63 ++++- 8 files changed, 539 insertions(+), 370 deletions(-) create mode 100644 PokeAlarm/LocationServices/GMaps.py delete mode 100644 PokeAlarm/LocationServices/GoogleMaps.py diff --git a/PokeAlarm/LocationServices/GMaps.py b/PokeAlarm/LocationServices/GMaps.py new file mode 100644 index 000000000..3559a4fee --- /dev/null +++ b/PokeAlarm/LocationServices/GMaps.py @@ -0,0 +1,278 @@ +# Standard Library Imports +import collections +import datetime +import logging +import time +import json +import traceback +# 3rd Party Imports +import requests +from requests.packages.urllib3.util.retry import Retry +from gevent.lock import Semaphore +# Local Imports +from PokeAlarm import Unknown +from PokeAlarm.Utilities.GenUtils import synchronize_with + +log = logging.getLogger('Gmaps') + + +class GMaps(object): + + # Available travel modes for Distance Matrix calls + TRAVEL_MODES = frozenset(['walking', 'biking', 'driving', 'transit']) + + # Maximum number of requests per second + _queries_per_second = 50 + # How often to warn about going over query limit + _query_warning_window = datetime.timedelta(minutes=5) + + def __init__(self, api_key): + self._key = api_key + self._lock = Semaphore + + # Create a session to handle connections + self._session = self._create_session() + + # Sliding window for rate limiting + self._window = collections.deque(maxlen=self._queries_per_second) + self._time_limit = time.time() + + # Memoization dicts + self._geocode_hist = {} + self._reverse_geocode_hist = {} + self._dm_hist = {key: dict() for key in self.TRAVEL_MODES} + + # TODO: Move into utilities + @staticmethod + def _create_session(retry_count=3, pool_size=3, backoff=.25): + """ Create a session to use connection pooling. """ + + # Create a session for connection pooling and + session = requests.Session() + + # Reattempt connection on these statuses + status_forcelist = [500, 502, 503, 504] + + # Define a Retry object to handle failures + retry_policy = Retry( + total=retry_count, + backoff_factor=backoff, + status_forcelist=status_forcelist + ) + + # Define an Adapter, to limit pool and implement retry policy + adapter = requests.adapters.HTTPAdapter( + max_retries=retry_policy, + pool_connections=pool_size, + pool_maxsize=pool_size + ) + + # Apply Adapter for all HTTPS (no HTTP for you!) + session.mount('https://', adapter) + + return session + + def _make_request(self, service, params=None): + """ Make a request to the GMAPs API. """ + # Rate Limit - All APIs use the same quota + if len(self._window) == self._queries_per_second: + # Calculate elapsed time since start of window + elapsed_time = time.time() - self._window[0] + if elapsed_time > 1: + # Sleep off the difference + time.sleep(1 - elapsed_time) + + # Create the correct url + url = u'https://maps.googleapis.com/maps/api/{}/json'.format(service) + + # Add in the API key + if params is None: + params = {} + params['key'] = self._key + + # Use the session to send the request + log.debug(u'{} request sending.'.format(service)) + self._window.append(time.time()) + request = self._session.get(url, params=params, timeout=3) + + if not request.ok: + log.debug(u'Response body: {}'.format( + json.dumps(request.json(), indent=4, sort_keys=True))) + # Raise HTTPError + request.raise_for_status() + + log.debug(u'{} request completed successfully with response {}.' + u''.format(service, request.status_code)) + body = request.json() + if body['status'] == "OK" or body['status'] == "ZERO_RESULTS": + return body + elif body['status'] == "OVER_QUERY_LIMIT": + self._time_limit = time.time() + datetime.timedelta(minutes=10) + raise UserWarning(u'API Limit reached.') + else: + raise ValueError(u'Unexpected response status:\n {}'.format(body)) + + @synchronize_with() + def geocode(self, address, language='en'): + # type: (str, str) -> tuple + """ Returns 'lat,lng' associated with the name of the place. """ + # Check for memoized results + address = address.lower() + if address in self._geocode_hist: + return self._geocode_hist[address] + # Set default in case something happens + latlng = None + try: + # Set parameters and make the request + params = {'address': address, 'language': language} + response = self._make_request('geocode', params) + # Extract the results and format into a dict + response = response.get('results', []) + response = response[0] if len(response) > 0 else {} + response = response.get('geometry', {}) + response = response.get('location', {}) + if 'lat' in response and 'lng' in response: + latlng = float(response['lat']), float(response['lng']) + + # Memoize the results + self._geocode_hist[address] = latlng + except requests.exceptions.HTTPError as e: + log.error(u"Geocode failed with " + u"HTTPError: {}".format(e.message)) + except requests.exceptions.Timeout as e: + log.error(u"Geocode failed with " + u"connection issues: {}".format(e.message)) + except UserWarning: + log.error(u"Geocode failed because of exceeded quota.") + except Exception as e: + log.error(u"Geocode failed because " + u"unexpected error has occurred: " + u"{} - {}".format(type(e).__name__, e.message)) + log.error(u"Stack trace: \n {}".format(traceback.format_exc())) + # Send back tuple + return latlng + + _reverse_geocode_defaults = { + 'street_num': Unknown.SMALL, + 'street': Unknown.REGULAR, + 'address': Unknown.REGULAR, + 'address_eu': Unknown.REGULAR, + 'postal': Unknown.REGULAR, + 'neighborhood': Unknown.REGULAR, + 'sublocality': Unknown.REGULAR, + 'city': Unknown.REGULAR, + 'county': Unknown.REGULAR, + 'state': Unknown.REGULAR, + 'country': Unknown.REGULAR + } + + @synchronize_with() + def reverse_geocode(self, latlng, language='en'): + # type: (tuple) -> dict + """ Returns the reverse geocode DTS associated with 'lat,lng'. """ + latlng = u'{:.5f},{:.5f}'.format(latlng[0], latlng[1]) + # Check for memoized results + if latlng in self._reverse_geocode_hist: + return self._reverse_geocode_hist[latlng] + # Get defaults in case something happens + dts = self._reverse_geocode_defaults.copy() + try: + # Set parameters and make the request + params = {'latlng': latlng, 'language': language} + response = self._make_request('geocode', params) + # Extract the results and format into a dict + response = response.get('results', []) + response = response[0] if len(response) > 0 else {} + details = {} + for item in response.get('address_components'): + for category in item['types']: + details[category] = item['short_name'] + + # Note: for addresses on unnamed roads, EMPTY is preferred for + # 'street_num' and 'street' to avoid DTS looking weird + dts['street_num'] = details.get('street_number', Unknown.EMPTY) + dts['street'] = details.get('route', Unknown.EMPTY) + dts['address'] = u"{} {}".format(dts['street_num'], dts['street']) + dts['address_eu'] = u"{} {}".format( + dts['street'], dts['street_num']) # Europeans are backwards + dts['postal'] = details.get('postal_code', Unknown.REGULAR) + dts['neighborhood'] = details.get('neighborhood', Unknown.REGULAR) + dts['sublocality'] = details.get('sublocality', Unknown.REGULAR) + dts['city'] = details.get( + 'locality', details.get('postal_town', Unknown.REGULAR)) + dts['county'] = details.get( + 'administrative_area_level_2', Unknown.REGULAR) + dts['state'] = details.get( + 'administrative_area_level_1', Unknown.REGULAR) + dts['country'] = details.get('country', Unknown.REGULAR) + + # Memoize the results + self._reverse_geocode_hist[latlng] = dts + except requests.exceptions.HTTPError as e: + log.error(u"Reverse Geocode failed with " + u"HTTPError: {}".format(e.message)) + except requests.exceptions.Timeout as e: + log.error(u"Reverse Geocode failed with " + u"connection issues: {}".format(e.message)) + except UserWarning: + log.error(u"Reverse Geocode failed because of exceeded quota.") + except Exception as e: + log.error(u"Reverse Geocode failed because " + u"unexpected error has occurred: " + u"{} - {}".format(type(e).__name__, e.message)) + log.error(u"Stack trace: \n {}".format(traceback.format_exc())) + # Send back dts + return dts + + @synchronize_with() + def distance_matrix(self, mode, origin, dest, lang, units): + # Check for valid mode + if mode not in self.TRAVEL_MODES: + raise ValueError(u"DM doesn't support mode '{}'.".format(mode)) + # Estimate to about ~1 meter of accuracy + origin = u'{:.5f},{:.5f}'.format(origin[0], origin[1]) + dest = u'{:.5f},{:.5f}'.format(dest[0], dest[1]) + + # Check for memoized results + key = origin + u':' + dest + if key in self._dm_hist: + return self._dm_hist[key] + + # Set defaults in case something happens + dist_key = '{}_distance'.format(mode) + dur_key = '{}_duration'.format(mode) + dts = {dist_key: Unknown.REGULAR, dur_key: Unknown.REGULAR} + try: + # Set parameters and make the request + params = { + 'mode': mode, 'origins': origin, 'destinations': dest, + 'language': lang, 'units': units + } + + # Extract the results and format into a dict + response = self._make_request('distancematrix', params) + response = response.get('rows', []) + response = response[0] if len(response) > 0 else {} + response = response.get('elements', []) + response = response[0] if len(response) > 0 else {} + + # Set the DTS + dts[dist_key] = response.get( + 'distance', {}).get('text', Unknown.REGULAR) + dts[dur_key] = response.get( + 'duration', {}).get('text', Unknown.REGULAR) + except requests.exceptions.HTTPError as e: + log.error(u"Distance Matrix failed with " + u"HTTPError: {}".format(e.message)) + except requests.exceptions.Timeout as e: + log.error(u"Distance Matrix failed with " + u"connection issues: {}".format(e.message)) + except UserWarning: + log.error(u"Distance Matrix failed because of exceeded quota.") + except Exception as e: + log.error(u"Distance Matrix failed because " + u"unexpected error has occurred: " + u"{} - {}".format(type(e).__name__, e.message)) + log.error(u"Stack trace: \n {}".format(traceback.format_exc())) + # Send back DTS + return dts diff --git a/PokeAlarm/LocationServices/GoogleMaps.py b/PokeAlarm/LocationServices/GoogleMaps.py deleted file mode 100644 index 8efc5eacf..000000000 --- a/PokeAlarm/LocationServices/GoogleMaps.py +++ /dev/null @@ -1,205 +0,0 @@ -# Standard Library Imports -import logging -import traceback -# 3rd Party Imports -import googlemaps -# Local Imports - -log = logging.getLogger('LocService') - - -# Class to handle Location Services -class GoogleMaps(object): - - # Initialize the APIs - def __init__(self, api_key, locale, units): - self.__client = googlemaps.Client( - key=api_key, timeout=3, retry_timeout=5) - - self.__locale = locale # Language to use for Geocoding results - self.__units = units # imperial or metric - - # For Reverse Location API - self.__reverse_location = False - self.__reverse_location_history = {} - # Walking Dist/Time - self.__walk_data = False - self.__walk_data_history = {} - # Bike Dist/Time - self.__biking_data = False - self.__bike_data_history = {} - # Drive Dist/Time - self.__driving_data = False - self.__driving_data_history = {} - - # Add any API-dependant DTS as required - def add_optional_arguments(self, origin, dest, data): - if self.__reverse_location: - data.update(**self.__get_reverse_location(dest)) - if self.__walk_data: - data.update(**self.__get_walking_data(origin, dest)) - if self.__biking_data: - data.update(**self.__get_biking_data(origin, dest)) - if self.__driving_data: - data.update(**self.__get_driving_data(origin, dest)) - - # Returns an array in the format [ Lat, Lng ], or exit if an error occurs. - def get_location_from_name(self, location_name): - try: - result = self.__client.geocode( - location_name, language=self.__locale) - # Get the first (most likely) result - loc = result[0]['geometry']['location'] - latitude, longitude = loc.get("lat"), loc.get("lng") - log.debug("Coordinates found for name '{}': {:f},{:f}".format( - location_name, latitude, longitude)) - return [latitude, longitude] - except Exception as e: - log.error("Encountered error attempting to receive location " - + "from name{}: {})".format(type(e).__name__, e)) - log.debug("Stack trace: \n {}".format(traceback.format_exc())) - return None - - # Enable the Reverse Location call in optional arguments - def enable_reverse_location(self): - if not self.__reverse_location: - self.__reverse_location = True - log.info("Reverse Location DTS detected - API has been enabled!") - - # Returns details about a location from coordinates in format [Lat, Lng] - def __get_reverse_location(self, location): - # Memoize the results to ~1 meter of precision - key = "{:.5f},{:.5f}".format(location[0], location[1]) - if key in self.__reverse_location_history: - return self.__reverse_location_history[key] - - details = { # Set some defaults in case something goes wrong - 'street_num': '???', 'street': 'unknown', 'address': 'unknown', - 'postal': 'unknown', 'neighborhood': 'unknown', - 'sublocality': 'unknown', 'city': 'unknown', 'county': 'unknown', - 'state': 'unknown', 'country': 'country' - } - try: - result = self.__client.reverse_geocode( - location, language=self.__locale)[0] - loc = {} - for item in result['address_components']: - for category in item['types']: - loc[category] = item['short_name'] - - # Note: for addresses in squares and on unnamed roads, it is - # correct with blank numbers/streetnames so we leave this as blank - # instead of unknown/??? to avoid DTS looking weird - details['street_num'] = loc.get('street_number', '') - details['street'] = loc.get('route', '') - details['address'] = "{} {}".format( - details['street_num'], details['street']) - details['address_eu'] = "{} {}".format( - details['street'], details['street_num']) # EU use Street 123 - details['postal'] = loc.get('postal_code', 'unknown') - details['neighborhood'] = loc.get('neighborhood', "unknown") - details['sublocality'] = loc.get('sublocality', "unknown") - details['city'] = loc.get( - 'locality', loc.get('postal_town', 'unknown')) - details['county'] = loc.get( - 'administrative_area_level_2', 'unknown') - details['state'] = loc.get( - 'administrative_area_level_1', 'unknown') - details['country'] = loc.get('country', 'unknown') - self.__reverse_location_history[key] = details # memoize - except Exception as e: - log.error("Encountered error while getting reverse " - + "location data ({}: {})".format(type(e).__name__, e)) - log.debug("Stack trace: \n {}".format(traceback.format_exc())) - # Return results, even if unable to complete - return details - - # Enable the Walking Distance Matrix call in optional arguments - def enable_walking_data(self): - if not self.__walk_data: - self.__walk_data = True - log.info("Walking Data DTS detected - API has been enabled!") - - # Returns set with walking dist and duration via Google Distance Matrix API - def __get_walking_data(self, origin, dest): - origin = "{:.5f},{:.5f}".format(origin[0], origin[1]) - dest = "{:.5f},{:.5f}".format(dest[0], dest[1]) - key = origin + "to" + dest - if key in self.__walk_data_history: - return self.__walk_data_history[key] - data = {'walk_dist': "unknown", 'walk_time': "unknown"} - try: - result = self.__client.distance_matrix( - origin, dest, mode='walking', - units=self.__units, language=self.__locale) - result = result.get('rows')[0].get('elements')[0] - data['walk_dist'] = result.get( - 'distance').get('text').encode('utf-8') - data['walk_time'] = result.get( - 'duration').get('text').encode('utf-8') - self.__walk_data_history[key] = data - except Exception as e: - log.error("Encountered error while getting walking data " - + " ({}: {})".format(type(e).__name__, e)) - log.debug("Stack trace: \n {}".format(traceback.format_exc())) - return data - - # Enable the Biking Distance Matrix call in optional arguments - def enable_biking_data(self): - if not self.__biking_data: - self.__biking_data = True - log.info("Biking Data DTS detected - API has been enabled!") - - # Returns set with biking dist and duration via Google Distance Matrix API - def __get_biking_data(self, origin, dest): - origin = "{:.5f},{:.5f}".format(origin[0], origin[1]) - dest = "{:.5f},{:.5f}".format(dest[0], dest[1]) - key = origin + "to" + dest - if key in self.__bike_data_history: - return self.__bike_data_history[key] - data = {'bike_dist': "unknown", 'bike_time': "unknown"} - try: - result = self.__client.distance_matrix( - origin, dest, mode='bicycling', - units=self.__units, language=self.__locale) - result = result.get('rows')[0].get('elements')[0] - data['bike_dist'] = result.get( - 'distance').get('text').encode('utf-8') - data['bike_time'] = result.get( - 'duration').get('text').encode('utf-8') - self.__bike_data_history[key] = data - except Exception as e: - log.error("Encountered error while getting biking data " - + "({}: {})".format(type(e).__name__, e)) - log.debug("Stack trace: \n {}".format(traceback.format_exc())) - return data - - # Enable the Biking Distance Matrix call in optional arguments - def enable_driving_data(self): - if not self.__driving_data: - self.__driving_data = True - log.info("Driving Data DTS detected - API has been enabled!") - - # Returns set with walking dist and duration via Google Distance Matrix API - def __get_driving_data(self, origin, dest): - origin = "{:.5f},{:.5f}".format(origin[0], origin[1]) - dest = "{:.5f},{:.5f}".format(dest[0], dest[1]) - key = origin + "to" + dest - if key in self.__driving_data_history: - return self.__driving_data_history[key] - data = {'drive_dist': "unknown", 'drive_time': "unknown"} - try: - result = self.__client.distance_matrix( - origin, dest, mode='driving', - units=self.__units, language=self.__locale) - result = result.get('rows')[0].get('elements')[0] - data['drive_dist'] = result.get( - 'distance').get('text').encode('utf-8') - data['drive_time'] = result.get( - 'duration').get('text').encode('utf-8') - self.__driving_data_history[key] = data - except Exception as e: - log.error("Encountered error while getting driving data " - + "({}: {})".format(type(e).__name__, e)) - log.debug("Stack trace: \n {}".format(traceback.format_exc())) - return data diff --git a/PokeAlarm/LocationServices/__init__.py b/PokeAlarm/LocationServices/__init__.py index be9cb95b7..a90205623 100644 --- a/PokeAlarm/LocationServices/__init__.py +++ b/PokeAlarm/LocationServices/__init__.py @@ -1,9 +1 @@ -from GoogleMaps import GoogleMaps - - -def location_service_factory(kind, api_key, locale, units): - if kind == "GoogleMaps": - return GoogleMaps(api_key, locale, units) - else: - raise ValueError( - "%s is not a valid location service!".format(kind)) +from GMaps import GMaps # noqa: F401 diff --git a/PokeAlarm/Manager.py b/PokeAlarm/Manager.py index 04bf9ac62..d7b8dc0e6 100644 --- a/PokeAlarm/Manager.py +++ b/PokeAlarm/Manager.py @@ -20,10 +20,10 @@ from Cache import cache_factory from Geofence import load_geofence_file from Locale import Locale -from LocationServices import location_service_factory +from LocationServices import GMaps from PokeAlarm import Unknown from Utils import (get_earth_dist, get_path, require_and_remove_key, - parse_boolean, contains_arg, get_cardinal_dir) + parse_boolean, get_cardinal_dir) from . import config Rule = namedtuple('Rule', ['filter_names', 'alarm_names']) @@ -41,16 +41,15 @@ def __init__(self, name, google_key, locale, units, timezone, time_limit, self.__debug = debug # Get the Google Maps API - self.__google_key = None - self.__loc_service = None + self._google_key = None + self._gmaps_service = None if str(google_key).lower() != 'none': - self.__google_key = google_key - self.__loc_service = location_service_factory( - "GoogleMaps", google_key, locale, units) - else: - log.warning("NO GOOGLE API KEY SET - Reverse Location and" - + " Distance Matrix DTS will NOT be detected.") + self._google_key = google_key + self._gmaps_service = GMaps(google_key) + self._gmaps_reverse_geocode = False + self._gmaps_distance_matrix = set() + self._language = locale self.__locale = Locale(locale) # Setup the language-specific stuff self.__units = units # type of unit used for distances self.__timezone = timezone # timezone for time calculations @@ -84,7 +83,7 @@ def __init__(self, name, google_key, locale, units, timezone, time_limit, if str(geofence_file).lower() != 'none': self.geofences = load_geofence_file(get_path(geofence_file)) # Create the alarms to send notifications out with - self.__alarms = [] + self.__alarms = {} self.load_alarms_file(get_path(alarm_file), int(max_attempts)) # Initialize Rules @@ -129,7 +128,42 @@ def join(self): # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CONTROL API ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ GMAPS API ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + def enable_gmaps_reverse_geocoding(self): + """Enable GMaps Reverse Geocoding DTS for triggered Events. """ + if not self._gmaps_service: + raise ValueError("Unable to enable Google Maps Reverse Geocoding." + "No GMaps API key has been set.") + self._gmaps_reverse_geocode = True + + def disable_gmaps_reverse_geocoding(self): + """Disable GMaps Reverse Geocoding DTS for triggered Events. """ + self._gmaps_reverse_geocode = False + + def enable_gmaps_distance_matrix(self, mode): + """Enable 'mode' Distance Matrix DTS for triggered Events. """ + if not self.__location: + raise ValueError("Unable to enable Google Maps Reverse Geocoding." + "No Manager location has been set.") + elif not self._gmaps_service: + raise ValueError("Unable to enable Google Maps Reverse Geocoding." + "No GMaps API key has been provided.") + elif mode not in GMaps.TRAVEL_MODES: + raise ValueError("Unable to enable distance matrix mode: " + "{} is not a valid mode.".format(mode)) + self._gmaps_distance_matrix.add(mode) + + def disable_gmaps_dm_walking(self, mode): + """Disable 'mode' Distance Matrix DTS for triggered Events. """ + if mode not in GMaps.TRAVEL_MODES: + raise ValueError("Unable to disable distance matrix mode: " + "Invalid mode specified.") + self._gmaps_distance_matrix.discard(mode) + + # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RULES API ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Add new Monster Rule def add_monster_rule(self, name, filters, alarms): @@ -337,9 +371,8 @@ def load_alarms_file(self, file_path, max_attempts): for name, alarm in alarm_settings.iteritems(): if parse_boolean(require_and_remove_key( 'active', alarm, "Alarm objects in file.")) is True: - self.set_optional_args(str(alarm)) self.__alarms[name] = Alarms.alarm_factory( - alarm, max_attempts, self.__google_key) + alarm, max_attempts, self._google_key) else: log.debug("Alarm not activated: {}".format(alarm['type']) + " because value not set to \"True\"") @@ -365,72 +398,6 @@ def load_alarms_file(self, file_path, max_attempts): log.debug("Stack trace: \n {}".format(traceback.format_exc())) sys.exit(1) - # Check for optional arguments and enable APIs as needed - def set_optional_args(self, line): - # Reverse Location - args = {'street', 'street_num', 'address', 'address_eu', - 'postal', 'neighborhood', 'sublocality', 'city', 'county', - 'state', 'country'} - if contains_arg(line, args): - if self.__loc_service is None: - log.critical("Reverse location DTS were detected but " - + "no API key was provided!") - log.critical("Please either remove the DTS, add an API key, " - + "or disable the alarm and try again.") - sys.exit(1) - self.__loc_service.enable_reverse_location() - - # Walking Dist Matrix - args = {'walk_dist', 'walk_time'} - if contains_arg(line, args): - if self.__location is None: - log.critical("Walking Distance Matrix DTS were detected but " - + " no location was set!") - log.critical("Please either remove the DTS, set a location, " - + "or disable the alarm and try again.") - sys.exit(1) - if self.__loc_service is None: - log.critical("Walking Distance Matrix DTS were detected " - + "but no API key was provided!") - log.critical("Please either remove the DTS, add an API key, " - + "or disable the alarm and try again.") - sys.exit(1) - self.__loc_service.enable_walking_data() - - # Biking Dist Matrix - args = {'bike_dist', 'bike_time'} - if contains_arg(line, args): - if self.__location is None: - log.critical("Biking Distance Matrix DTS were detected but " - + " no location was set!") - log.critical("Please either remove the DTS, set a location, " - + " or disable the alarm and try again.") - sys.exit(1) - if self.__loc_service is None: - log.critical("Biking Distance Matrix DTS were detected " - + " but no API key was provided!") - log.critical("Please either remove the DTS, add an API key, " - + " or disable the alarm and try again.") - sys.exit(1) - self.__loc_service.enable_biking_data() - - # Driving Dist Matrix - args = {'drive_dist', 'drive_time'} - if contains_arg(line, args): - if self.__location is None: - log.critical("Driving Distance Matrix DTS were detected but " - + "no location was set!") - log.critical("Please either remove the DTS, set a location, " - + "or disable the alarm and try again.") - sys.exit(1) - if self.__loc_service is None: - log.critical("Driving Distance Matrix DTS were detected but " - + "no API key was provided!") - log.critical("Please either remove the DTS, add an API key, " - + " or disable the alarm and try again.") - sys.exit(1) - self.__loc_service.enable_driving_data() - # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HANDLE EVENTS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -515,20 +482,19 @@ def set_location(self, location): if res: # If location is in a Lat,Lng coordinate self.__location = [float(res.group(1)), float(res.group(2))] else: - if self.__loc_service is None: # Check if key was provided - log.error("Unable to find location coordinates by name - " - + "no Google API key was provided.") - return None - self.__location = self.__loc_service.get_location_from_name( - location) - - if self.__location is None: - log.error("Unable to set location - " - + "Please check your settings and try again.") - sys.exit(1) - else: + # Check if key was provided + if self._gmaps_service is None: + raise ValueError("Unable to find location coordinates by name" + " - no Google API key was provided.") + # Attempt to geocode location + location = self._gmaps_service.geocode(location) + if location is None: + raise ValueError("Unable to geocode coordinates from {}. " + "Location will not be set.".format(location)) + + self.__location = location log.info("Location successfully set to '{},{}'.".format( - self.__location[0], self.__location[1])) + location[0], location[1])) # Process new Monster data and decide if a notification needs to be sent def process_monster(self, mon): @@ -561,7 +527,7 @@ def process_monster(self, mon): # Calculate distance and direction if self.__location is not None: mon.distance = get_earth_dist( - [mon.lat, mon.lng], self.__location) + [mon.lat, mon.lng], self.__location, self.__units) mon.direction = get_cardinal_dir( [mon.lat, mon.lng], self.__location) @@ -588,10 +554,15 @@ def process_monster(self, mon): def _trigger_mon(self, mon, alarms): # Generate the DTS for the event dts = mon.generate_dts(self.__locale, self.__timezone, self.__units) - # Get reverse geocoding - if self.__loc_service: - self.__loc_service.add_optional_arguments( - self.__location, [mon.lat, mon.lng], dts) + + # Get GMaps Triggers + if self._gmaps_reverse_geocode: + dts.update(self._gmaps_service.reverse_geocode( + (mon.lat, mon.lng), self._language)) + for mode in self._gmaps_distance_matrix: + dts.update(self._gmaps_service.distance_matrix( + mode, (mon.lat, mon.lng), self.__location, + self._language, self.__units)) threads = [] # Spawn notifications in threads so they can work in background @@ -631,7 +602,7 @@ def process_stop(self, stop): # Calculate distance and direction if self.__location is not None: stop.distance = get_earth_dist( - [stop.lat, stop.lng], self.__location) + [stop.lat, stop.lng], self.__location, self.__units) stop.direction = get_cardinal_dir( [stop.lat, stop.lng], self.__location) @@ -658,10 +629,15 @@ def process_stop(self, stop): def _trigger_stop(self, stop, alarms): # Generate the DTS for the event dts = stop.generate_dts(self.__locale, self.__timezone, self.__units) - # Get reverse geocoding - if self.__loc_service: - self.__loc_service.add_optional_arguments( - self.__location, [stop.lat, stop.lng], dts) + + # Get GMaps Triggers + if self._gmaps_reverse_geocode: + dts.update(self._gmaps_service.reverse_geocode( + (stop.lat, stop.lng), self._language)) + for mode in self._gmaps_distance_matrix: + dts.update(self._gmaps_service.distance_matrix( + mode, (stop.lat, stop.lng), self.__location, + self._language, self.__units)) threads = [] # Spawn notifications in threads so they can work in background @@ -707,7 +683,7 @@ def process_gym(self, gym): # Calculate distance and direction if self.__location is not None: gym.distance = get_earth_dist( - [gym.lat, gym.lng], self.__location) + [gym.lat, gym.lng], self.__location, self.__units) gym.direction = get_cardinal_dir( [gym.lat, gym.lng], self.__location) @@ -734,10 +710,15 @@ def process_gym(self, gym): def _trigger_gym(self, gym, alarms): # Generate the DTS for the event dts = gym.generate_dts(self.__locale, self.__timezone, self.__units) - # Get reverse geocoding - if self.__loc_service: - self.__loc_service.add_optional_arguments( - self.__location, [gym.lat, gym.lng], dts) + + # Get GMaps Triggers + if self._gmaps_reverse_geocode: + dts.update(self._gmaps_service.reverse_geocode( + (gym.lat, gym.lng), self._language)) + for mode in self._gmaps_distance_matrix: + dts.update(self._gmaps_service.distance_matrix( + mode, (gym.lat, gym.lng), self.__location, + self._language, self.__units)) threads = [] # Spawn notifications in threads so they can work in background @@ -787,7 +768,7 @@ def process_egg(self, egg): # Calculate distance and direction if self.__location is not None: egg.distance = get_earth_dist( - [egg.lat, egg.lng], self.__location) + [egg.lat, egg.lng], self.__location, self.__units) egg.direction = get_cardinal_dir( [egg.lat, egg.lng], self.__location) @@ -814,10 +795,15 @@ def process_egg(self, egg): def _trigger_egg(self, egg, alarms): # Generate the DTS for the event dts = egg.generate_dts(self.__locale, self.__timezone, self.__units) - # Get reverse geocoding - if self.__loc_service: - self.__loc_service.add_optional_arguments( - self.__location, [egg.lat, egg.lng], dts) + + # Get GMaps Triggers + if self._gmaps_reverse_geocode: + dts.update(self._gmaps_service.reverse_geocode( + (egg.lat, egg.lng), self._language)) + for mode in self._gmaps_distance_matrix: + dts.update(self._gmaps_service.distance_matrix( + mode, (egg.lat, egg.lng), self.__location, + self._language, self.__units)) threads = [] # Spawn notifications in threads so they can work in background @@ -867,7 +853,7 @@ def process_raid(self, raid): # Calculate distance and direction if self.__location is not None: raid.distance = get_earth_dist( - [raid.lat, raid.lng], self.__location) + [raid.lat, raid.lng], self.__location, self.__units) raid.direction = get_cardinal_dir( [raid.lat, raid.lng], self.__location) @@ -894,10 +880,15 @@ def process_raid(self, raid): def _trigger_raid(self, raid, alarms): # Generate the DTS for the event dts = raid.generate_dts(self.__locale, self.__timezone, self.__units) - # Get reverse geocoding - if self.__loc_service: - self.__loc_service.add_optional_arguments( - self.__location, [raid.lat, raid.lng], dts) + + # Get GMaps Triggers + if self._gmaps_reverse_geocode: + dts.update(self._gmaps_service.reverse_geocode( + (raid.lat, raid.lng), self._language)) + for mode in self._gmaps_distance_matrix: + dts.update(self._gmaps_service.distance_matrix( + mode, (raid.lat, raid.lng), self.__location, + self._language, self.__units)) threads = [] # Spawn notifications in threads so they can work in background diff --git a/PokeAlarm/Utilities/GenUtils.py b/PokeAlarm/Utilities/GenUtils.py index 77f6e628c..fabf5a381 100644 --- a/PokeAlarm/Utilities/GenUtils.py +++ b/PokeAlarm/Utilities/GenUtils.py @@ -1,5 +1,6 @@ # Standard Library Imports # 3rd Party Imports +from gevent.lock import Semaphore # Local Imports @@ -13,3 +14,23 @@ def parse_bool(value): except Exception: pass # Skip below raise ValueError('Not a valid boolean') + + +def synchronize_with(lock=None): + """ Synchronization decorator. """ + + if lock is None: + lock = Semaphore() + + def synchronize(func): + + def locked_func(*args, **kwargs): + lock.acquire(timeout=60) + try: + return func(*args, **kwargs) + finally: + lock.release() + + return locked_func + + return synchronize diff --git a/config/config.ini.example b/config/config.ini.example index e33870d58..bcf4a95d3 100644 --- a/config/config.ini.example +++ b/config/config.ini.example @@ -1,27 +1,76 @@ -# Copy this file to config.ini and modify to suit your needs +# DO NOT USE NOTEPAD OR TEXTEDIT TO EDIT FILES! +# USE AN EDITOR SUCH AS NOTPAD++, ATOM, NANO OR VI(M) +# You can create a copy of this config and edit it to suit your needs. # Uncomment a line (remove the #) when you want to change its default value. -# Multiple arguments can be listed as [arg1, arg2, ... ] -# Number of arguments must match manager_count or be a single arguement (single arguements will apply to all Managers) -# To exclude an argument for a specific manager, use 'None' - -# Server Settings -#debug # Enables debugging mode -#host: # Address to listen on (default 127.0.0.1) -#port: # Port to listen on (default: 4000) -#concurrency: 200 # Maximum concurrent connections for the webserver(default: 200) -#manager_count: 1 # Number of Managers to run. (default: 1) - -# Manager-Specific Settings -#manager_name: manager_0 # Name of the Manager in the logs. Default(manager_0). -#key: # Google Maps API Key to use -#filters: # File containing filter settings (default: filters.json) -#alarms: # File containing alarm settings (default: alarms.json) -#rules: # File containing rules settings (default: None) -#geofence: # File containing geofence(s) used to filter (default: None) -#location: # Location for the manager. 'Name' or 'lat lng' (default: None) -#locale: # Language to be used to translate names (default: en) -#cache_type: # Specify the type of cache to use. Options: ['mem', 'file'] (Default: 'mem') -#unit: # Units used to measure distance. Either 'imperial' or 'metric' (default: imperial) -#timelimit: # Minimum number of seconds remaining to send a notification (default: 0) -#max_attempts: # Maximum number of attempts an alarm makes to send a notification. (default: 3) -#timezone: # Timezone used for notifications Ex: 'America/Los_Angeles' or '[America/Los_Angeles, America/New_York]' \ No newline at end of file +# By default, PA will use `config/config.ini` to load settings. +# You can override the config file selection with `--config-file` or `-cf`. + + +######################## +# Webserver Settings +######################## + +#host: 127.0.0.1 # Interface to listen on (default='127.0.0.1') +#port: 4000 # Port to listen on (default='4000') +#concurrency: 200 # Maximum concurrent connections to webserver (default=200) +#manager_count: 1 # Number of Managers to run (default=1) +#debug # Enable debug logging (default='False) + + +######################### +# Manager Settings +######################### +# All of the settings below this line are manager-specific. +# If a single setting is supplied, it will apply to all Managers. +# Example: `locale: en` will set all Managers to english +# If an array of settings is supplied, they will be apply to Managers in order. +# Example: `locale: [ en, fr, en ]` sets a different language for 3 Managers. +# `None` can be used to exempt a Manager from an optional setting + +#manager_name: # Name of Manager, used for logging (default='manager#') + + +# File Settings +##################### +# File settings define location of files with settings for a Manager. +# Relative paths are presumed from install folder, root paths are absolute. + +#filters: filters.json # Filters for the Manager (default='filters.json') +#alarms: alarms.json # Alarms for the Manager (default='alarms.json') +#rules: rules.json # Rules for the Manager (default=None) +#geofence: geofence.txt # Geofences to be used in Filters (default=None) + + +# Location Specific +##################### +#location: # Location, as address or coordinates (default=None) +#locale: en # Language used for DTS translations (default='en') + # Options: ['de', 'en', 'es', 'fr', 'it', 'ko', 'pt', 'zh_hk' ] +#unit: imperial # Units used to measurements.(default='imperial') + # Options: ['imperial', 'metric' ] +#timezone: America/Los_Angeles # Timezones used for notifications. Default uses system time (default=None) + # Options: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + + +# GMaps Settings +################ +#gmaps-key: # Google Maps API Key (default=None) +#gmaps-rev-geocode: yes # Enable Reverse Geocoded DTS. (default='no') + # Note: This requires the Reverse Geocoding API to be enabled on your GMAPs key. +#gmaps-dm-walk: yes # Enable Walking DM DTS. (default='no') + # Note: This requires the Distance Matrix API to be enabled on your GMAPs key. +#gmaps-dm-bike: yes # Enable Bicycling DM DTS. (default='no') + # Note: This requires the Distance Matrix API to be enabled on your GMAPs key. +#gmaps-dm-drive: yes # Enable Driving DM DTS. (default='no') + # Note: This requires the Distance Matrix API to be enabled on your GMAPs key. +#gmaps-dm-transit: yes # Enable Transit DM DTS. (default='no') + # Note: This requires the Distance Matrix API to be enabled on your GMAPs key. + + +# Miscellaneous +################ +#cache_type: file # Type of cache used to share information between webhooks. (default='mem') + # Options: ['mem', 'file'] +#timelimit: 0 # Minimum seconds remaining on an Event to trigger notification (default=0) +# Note - `max_attempts` is being deprecated and may be replaced by alarm-level settings +#max_attempts: 3 # Maximum number of attempts an alarm makes to send a notification. (default=3) diff --git a/requirements.txt b/requirements.txt index 1787e355d..de7f1b23f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ configargparse==0.12.0 flask==0.12.2 gevent==1.2.2 -googlemaps==2.5.1 pytz==2017.3 -portalocker==1.1.0 \ No newline at end of file +portalocker==1.1.0 +requests==2.18.4 \ No newline at end of file diff --git a/start_pokealarm.py b/start_pokealarm.py index deedf94fe..fd628892c 100644 --- a/start_pokealarm.py +++ b/start_pokealarm.py @@ -26,7 +26,7 @@ from PokeAlarm import config from PokeAlarm.Cache import cache_options from PokeAlarm.Manager import Manager -from PokeAlarm.Utils import get_path, parse_unicode +from PokeAlarm.Utils import get_path, parse_unicode, parse_boolean from PokeAlarm.Load import parse_rules_file # Reinforce UTF-8 as default @@ -121,6 +121,8 @@ def parse_settings(root_path): parser = configargparse.ArgParser(default_config_files=config_files) parser.add_argument( '-cf', '--config', is_config_file=True, help='Configuration file') + + # Webserver Settings: parser.add_argument( '-d', '--debug', help='Debug Mode', action='store_true', default=False) parser.add_argument( @@ -132,6 +134,8 @@ def parse_settings(root_path): parser.add_argument( '-C', '--concurrency', type=int, help='Maximum concurrent connections for the webserver.', default=200) + + # Manager Settings parser.add_argument( '-m', '--manager_count', type=int, default=1, help='Number of Manager processes to start.') @@ -139,9 +143,7 @@ def parse_settings(root_path): '-M', '--manager_name', type=parse_unicode, action='append', default=[], help='Names of Manager processes to start.') - parser.add_argument( - '-k', '--key', type=parse_unicode, action='append', default=[None], - help='Specify a Google API Key to use.') + # Files parser.add_argument( '-f', '--filters', type=parse_unicode, action='append', default=['filters.json'], @@ -158,6 +160,8 @@ def parse_settings(root_path): '-gf', '--geofences', type=parse_unicode, action='append', default=[None], help='Alarms configuration file. default: None') + + # Location Specific parser.add_argument( '-l', '--location', type=parse_unicode, action='append', default=[None], help='Location, can be an address or coordinates') @@ -171,6 +175,31 @@ def parse_settings(root_path): action='append', choices=['metric', 'imperial'], help='Specify either metric or imperial units to use for distance " ' '+ "measurements. ') + parser.add_argument( + '-tz', '--timezone', type=str, action='append', default=[None], + help='Timezone used for notifications. Ex: "America/Los_Angeles"') + + # GMaps + parser.add_argument( + '-k', '--gmaps-key', type=parse_unicode, action='append', + default=[None], help='Specify a Google API Key to use.') + parser.add_argument( + '--gmaps-rev-geocode', type=parse_boolean, action='append', + default=[None], help='Enable Walking Distance Matrix DTS.') + parser.add_argument( + '--gmaps-dm-walk', type=parse_boolean, action='append', + default=[None], help='Enable Walking Distance Matrix DTS.') + parser.add_argument( + '--gmaps-dm-bike', type=parse_boolean, action='append', + default=[None], help='Enable Bicycling Distance Matrix DTS.') + parser.add_argument( + '--gmaps-dm-drive', type=parse_boolean, action='append', + default=[None], help='Enable Driving Distance Matrix DTS.') + parser.add_argument( + '--gmaps-dm-transit', type=parse_boolean, action='append', + default=[None], help='Enable Transit Distance Matrix DTS.') + + # Misc parser.add_argument( '-ct', '--cache_type', type=parse_unicode, action='append', default=['mem'], choices=cache_options, @@ -182,9 +211,6 @@ def parse_settings(root_path): parser.add_argument( '-ma', '--max_attempts', type=int, default=[3], action='append', help='Maximum attempts an alarm makes to send a notification.') - parser.add_argument( - '-tz', '--timezone', type=str, action='append', default=[None], - help='Timezone used for notifications. Ex: "America/Los_Angeles"') args = parser.parse_args() @@ -201,10 +227,12 @@ def parse_settings(root_path): config['DEBUG'] = args.debug # Check to make sure that the same number of arguments are included - for arg in [args.key, args.filters, args.alarms, args.rules, + for arg in [args.gmaps_key, args.filters, args.alarms, args.rules, args.geofences, args.location, args.locale, args.units, args.cache_type, args.timelimit, args.max_attempts, - args.timezone]: + args.timezone, args.gmaps_rev_geocode, args.gmaps_dm_walk, + args.gmaps_dm_bike, args.gmaps_dm_drive, + args.gmaps_dm_transit]: if len(arg) > 1: # Remove defaults from the list arg.pop(0) size = len(arg) @@ -241,7 +269,7 @@ def parse_settings(root_path): m = Manager( name=args.manager_name[m_ct], google_key=get_from_list( - args.key, m_ct, args.key[0]), + args.gmaps_key, m_ct, args.gmaps_key[0]), locale=get_from_list(args.locale, m_ct, args.locale[0]), units=get_from_list(args.units, m_ct, args.units[0]), timezone=get_from_list(args.timezone, m_ct, args.timezone[0]), @@ -259,6 +287,21 @@ def parse_settings(root_path): debug=config['DEBUG'] ) parse_rules_file(m, get_from_list(args.rules, m_ct, args.rules[0])) + + # Set up GMaps stuff + if get_from_list( + args.gmaps_rev_geocode, m_ct, args.gmaps_rev_geocode[0]): + m.enable_gmaps_reverse_geocoding() + if get_from_list(args.gmaps_dm_walk, m_ct, args.gmaps_dm_walk[0]): + m.enable_gmaps_distance_matrix('walking') + if get_from_list(args.gmaps_dm_bike, m_ct, args.gmaps_dm_bike[0]): + m.enable_gmaps_distance_matrix('biking') + if get_from_list(args.gmaps_dm_drive, m_ct, args.gmaps_dm_drive[0]): + m.enable_gmaps_distance_matrix('driving') + if get_from_list( + args.gmaps_dm_transit, m_ct, args.gmaps_dm_transit[0]): + m.enable_gmaps_distance_matrix('transit') + if m.get_name() not in managers: # Add the manager to the map managers[m.get_name()] = m From e1b0f652175eaff3f91d94650146a3c250dfa05c Mon Sep 17 00:00:00 2001 From: LegitDongo <9087537+LegitDongo@users.noreply.github.com> Date: Mon, 26 Feb 2018 10:15:25 -0600 Subject: [PATCH 35/79] Add "web_preview" option to Telegram (#620) --- PokeAlarm/Alarms/Telegram/TelegramAlarm.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/PokeAlarm/Alarms/Telegram/TelegramAlarm.py b/PokeAlarm/Alarms/Telegram/TelegramAlarm.py index 25333aa8a..1c2d3fb60 100644 --- a/PokeAlarm/Alarms/Telegram/TelegramAlarm.py +++ b/PokeAlarm/Alarms/Telegram/TelegramAlarm.py @@ -28,7 +28,8 @@ class TelegramAlarm(Alarm): Alert = namedtuple( "Alert", ['bot_token', 'chat_id', 'sticker', 'sticker_url', 'sticker_notify', 'message', 'message_notify', 'venue', - 'venue_notify', 'map', 'map_notify', 'max_attempts']) + 'venue_notify', 'map', 'map_notify', 'max_attempts', + 'web_preview']) _defaults = { # No touchy!!! Edit alarms.json! 'monsters': { @@ -93,6 +94,8 @@ def __init__(self, settings): settings, 'map_notify', utils.parse_bool, False), 'max_attempts': self.pop_type( settings, 'max_attempts', int, 3), + 'web_preview': self.pop_type( + settings, 'web_preview', utils.parse_bool, False) } # Alert Settings @@ -152,7 +155,10 @@ def create_alert_settings(self, kind, settings, alert_defaults): settings, 'map_notify', utils.parse_bool, default['map_notify']), max_attempts=Alarm.pop_type( - settings, 'max_attempts', int, default['max_attempts']) + settings, 'max_attempts', int, default['max_attempts']), + web_preview=Alarm.pop_type( + settings, 'web_preview', utils.parse_bool, + default['web_preview']) ) # Reject leftover parameters @@ -190,7 +196,8 @@ def generic_alert(self, alert, dts): return # Don't send message or map # Send Message - self.send_message(bot_token, chat_id, replace(message, dts)) + self.send_message(bot_token, chat_id, replace(message, dts), + web_preview=alert.web_preview) # Send Map if alert.map: @@ -231,14 +238,14 @@ def send_sticker(self, token, chat_id, sticker_url, max_attempts) def send_message(self, token, chat_id, message, - max_attempts=3, notify=True): + max_attempts=3, notify=True, web_preview=False): args = { 'url': "https://api.telegram.org/bot{}/sendMessage".format(token), 'payload': { 'chat_id': chat_id, 'text': message, 'parse_mode': 'Markdown', - 'disable_web_page_preview': True, + 'disable_web_page_preview': not web_preview, 'disable_notification': not notify } } From 5134d28da683576cffa10090e72a5299eafbcfea Mon Sep 17 00:00:00 2001 From: Billy Bryant <3013565+billyjbryant@users.noreply.github.com> Date: Mon, 26 Feb 2018 13:00:07 -0500 Subject: [PATCH 36/79] Fixed is_sponsor filter bug for Raids --- PokeAlarm/Filters/RaidFilter.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PokeAlarm/Filters/RaidFilter.py b/PokeAlarm/Filters/RaidFilter.py index 6178d293a..997750fdd 100644 --- a/PokeAlarm/Filters/RaidFilter.py +++ b/PokeAlarm/Filters/RaidFilter.py @@ -79,7 +79,7 @@ def __init__(self, name, data): GymUtils.create_regex, 'gym_name_excludes', data)) # Gym sponsor - self.is_sponsor = self.evaluate_attribute( # f.gym_is_sponsor True + self.is_sponsor = self.evaluate_attribute( # f.is_sponsor True event_attribute='is_sponsor', eval_func=operator.eq, limit=BaseFilter.parse_as_type(bool, 'is_sponsor', data)) @@ -147,8 +147,8 @@ def to_dict(self): settings['gym_name_excludes'] = self.gym_name_excludes # Gym Sponsor - if self.gym_is_sponsor is not None: - settings['gym_is_sponsor'] = self.gym_is_sponsor + if self.is_sponsor is not None: + settings['is_sponsor'] = self.is_sponsor # Gym Park if self.park_contains is not None: From 1950ee00ad86136d1c99774dc75557cc8c10a0a1 Mon Sep 17 00:00:00 2001 From: kvangent Date: Mon, 26 Feb 2018 13:48:16 -0800 Subject: [PATCH 37/79] Fixed incorrect attribute refference in raids. --- PokeAlarm/Events/RaidEvent.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PokeAlarm/Events/RaidEvent.py b/PokeAlarm/Events/RaidEvent.py index fa34929b9..1615dd56a 100644 --- a/PokeAlarm/Events/RaidEvent.py +++ b/PokeAlarm/Events/RaidEvent.py @@ -99,9 +99,9 @@ def generate_dts(self, locale, timezone, units): raid_end_time = get_time_as_str(self.raid_end, timezone) dts = self.custom_dts.copy() - form_name = locale.get_form_name(self.monster_id, self.form_id) + form_name = locale.get_form_name(self.mon_id, self.form_id) costume_name = locale.get_costume_name( - self.monster_id, self.costume_id) + self.mon_id, self.costume_id) boosted_weather_name = locale.get_weather_name(self.boosted_weather_id) weather_name = locale.get_weather_name(self.weather_id) From c55ca19cea14afd1ec3d1dac8f47e46dd5eae898 Mon Sep 17 00:00:00 2001 From: kvangent Date: Mon, 26 Feb 2018 14:22:13 -0800 Subject: [PATCH 38/79] Added ignore for unlured stops. --- PokeAlarm/Events/StopEvent.py | 7 +++++-- PokeAlarm/Manager.py | 5 +++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/PokeAlarm/Events/StopEvent.py b/PokeAlarm/Events/StopEvent.py index 3fd37cc8e..7ae63e95b 100644 --- a/PokeAlarm/Events/StopEvent.py +++ b/PokeAlarm/Events/StopEvent.py @@ -19,8 +19,11 @@ def __init__(self, data): self.stop_id = data['pokestop_id'] # Time left - self.expiration = datetime.utcfromtimestamp(data['lure_expiration']) - self.time_left = get_seconds_remaining(self.expiration) + self.expiration = data['lure_expiration'] + self.time_left = None + if self.expiration is not None: + self.expiration = datetime.utcfromtimestamp(self.expiration) + self.time_left = get_seconds_remaining(self.expiration) # Location self.lat = float(data['latitude']) diff --git a/PokeAlarm/Manager.py b/PokeAlarm/Manager.py index d7b8dc0e6..8bf5f194e 100644 --- a/PokeAlarm/Manager.py +++ b/PokeAlarm/Manager.py @@ -585,6 +585,11 @@ def process_stop(self, stop): log.debug("Stop ignored: stop notifications are disabled.") return + # Check for lured + if stop.expiration is None: + log.debug("Stop ignored: stop was not lured") + return + # Check if previously processed and update expiration if self.__cache.stop_expiration(stop.stop_id) is not None: log.debug("Stop {} was skipped because it was previously " From cd7a0d651954d01b0a937b04a8c546444c2e6dd4 Mon Sep 17 00:00:00 2001 From: rlodev67 <35378526+rlodev67@users.noreply.github.com> Date: Tue, 27 Feb 2018 01:17:38 +0100 Subject: [PATCH 39/79] Adding catch prob and movese rating DTS(#615) --- PokeAlarm/Events/MonEvent.py | 31 +++++++++++++++++++++++++++++++ docs/dts/monster-dts.md | 5 +++++ 2 files changed, 36 insertions(+) diff --git a/PokeAlarm/Events/MonEvent.py b/PokeAlarm/Events/MonEvent.py index 6586fb7e8..f19bfb1b1 100644 --- a/PokeAlarm/Events/MonEvent.py +++ b/PokeAlarm/Events/MonEvent.py @@ -82,6 +82,20 @@ def __init__(self, data): self.charge_duration = get_move_duration(self.charge_id) self.charge_energy = get_move_energy(self.charge_id) + # Catch Probs + self.base_catch = check_for_none( + float, data.get('base_catch'), Unknown.TINY) + self.great_catch = check_for_none( + float, data.get('great_catch'), Unknown.TINY) + self.ultra_catch = check_for_none( + float, data.get('ultra_catch'), Unknown.TINY) + + # Attack Rating + self.atk_grade = check_for_none( + str, data.get('atk_grade'), Unknown.TINY) + self.def_grade = check_for_none( + str, data.get('def_grade'), Unknown.TINY) + # Cosmetic self.gender = MonUtils.get_gender_sym( check_for_none(int, data.get('gender'), Unknown.TINY)) @@ -240,6 +254,23 @@ def generate_dts(self, locale, timezone, units): 'weight': self.weight, 'size': locale.get_size_name(self.size_id), + # Attack rating + 'atk_grade': ( + Unknown.or_empty(self.atk_grade, Unknown.TINY)), + 'def_grade': ( + Unknown.or_empty(self.def_grade, Unknown.TINY)), + + # Catch Prob + 'base_catch': ( + "{:.1f}".format(self.base_catch * 100) + if Unknown.is_not(self.base_catch) else Unknown.SMALL), + 'great_catch': ( + "{:.1f}".format(self.great_catch * 100) + if Unknown.is_not(self.great_catch) else Unknown.SMALL), + 'ultra_catch': ( + "{:.1f}".format(self.ultra_catch * 100) + if Unknown.is_not(self.ultra_catch) else Unknown.SMALL), + # Misc 'big_karp': ( 'big' if self.monster_id == 129 and Unknown.is_not(self.weight) diff --git a/docs/dts/monster-dts.md b/docs/dts/monster-dts.md index 441ce90fa..40c905432 100644 --- a/docs/dts/monster-dts.md +++ b/docs/dts/monster-dts.md @@ -64,5 +64,10 @@ This page assumes: | height | Height of the monster. | | weight | Weight of the monster. | | size | Estimated size of the monster. | +| atk_grade | Rating attack of the monster. | +| def_grade | Rating defense of the monster. | +| base_catch | Probability to catch the monster with a pokeball. | +| great_catch | Probability to catch the monster with a greatball. | +| ultra_catch | Probability to catch the monster with an ultraball. | | big_karp | Return `big` if Magikarp weight is >=13.13. | | tiny_rat | Return `tiny` if Rattata weight is <=2.41. | From bac0e4392305ee09933c712335b9b9f58b9a3216 Mon Sep 17 00:00:00 2001 From: LegitDongo <9087537+LegitDongo@users.noreply.github.com> Date: Mon, 26 Feb 2018 21:59:12 -0600 Subject: [PATCH 40/79] Cleaned up locales Zero-padding for all number keys Alphabetical order for all top-level keys --- locales/de.json | 483 ++++++----- locales/en.json | 2034 ++++++++++++++++++++++---------------------- locales/es.json | 1940 +++++++++++++++++++++--------------------- locales/fr.json | 1940 +++++++++++++++++++++--------------------- locales/it.json | 483 ++++++----- locales/ko.json | 466 +++++----- locales/pt.json | 2008 +++++++++++++++++++++---------------------- locales/zh_hk.json | 1912 ++++++++++++++++++++--------------------- 8 files changed, 5632 insertions(+), 5634 deletions(-) diff --git a/locales/de.json b/locales/de.json index adbb9e357..e245c2f69 100644 --- a/locales/de.json +++ b/locales/de.json @@ -1,58 +1,99 @@ { - "leaders": { - "0": "Professor Willow", - "1": "Blanche", - "2": "Candela", - "3": "Spark" - }, - "sizes": { - "1": "winzig", - "2": "klein", - "3": "\u00dcblich", - "4": "gro\u00DF", - "5": "riesig" - }, "costumes": { - "25": { - "1": "Festlicher Hut", - "2": "Partyhut", - "3": "Ash Cap", - "4": "Hexenhut" - }, - "26": { - "1": "Festlicher Hut", - "2": "Partyhut", - "3": "Ash Cap", - "4": "Hexenhut" - }, + "025": { + "001": "Festlicher Hut", + "002": "Partyhut", + "003": "Ash Cap", + "004": "Hexenhut" + }, + "026": { + "001": "Festlicher Hut", + "002": "Partyhut", + "003": "Ash Cap", + "004": "Hexenhut" + }, "172": { - "1": "Festlicher Hut", - "2": "Partyhut", - "3": "Ash Cap", - "4": "Hexenhut" + "001": "Festlicher Hut", + "002": "Partyhut", + "003": "Ash Cap", + "004": "Hexenhut" } - }, - "types": { - "1": "Normal", - "2": "Kampf", - "3": "Flug", - "4": "Gift", - "5": "Boden", - "6": "Stein", - "7": "K\u00E4fer", - "8": "Geist", - "9": "Stahl", - "10": "Feuer", - "11": "Wasser", - "12": "Pflanze", - "13": "Elektro", - "14": "Psycho", - "15": "Eis", - "16": "Drache", - "17": "Fee", - "18": "Unlicht" - }, + }, + "leaders": { + "000": "Professor Willow", + "001": "Blanche", + "002": "Candela", + "003": "Spark" + }, + "misc": { + "boosted": "verst\u00e4rktes" + }, "moves": { + "013": "Wickel", + "014": "Hyperstrahl", + "016": "Finsteraura", + "018": "Schlammbad", + "020": "Klammer", + "021": "Flammenrad", + "022": "Vielender", + "024": "Flammenwurf", + "026": "Schaufler", + "028": "Kreuzhieb", + "030": "Psystrahl", + "031": "Erdbeben", + "032": "Steinkante", + "033": "Eishieb", + "034": "Herzstempel", + "035": "Ladungssto\u00df", + "036": "Lichtkanone", + "038": "Bohrschnabel", + "039": "Eisstrahl", + "040": "Blizzard", + "042": "Hitzewelle", + "045": "Aero-Ass", + "046": "Schlagbohrer", + "047": "Bl\u00fctenwirbel", + "048": "Megasauger", + "049": "K\u00e4fergebrumm", + "050": "Giftzahn", + "051": "Nachthieb", + "053": "Blubbstrahl", + "054": "\u00dcberroller", + "056": "Fu\u00dftritt", + "057": "Wasserd\u00fcse", + "058": "Nassschweif", + "059": "Samenbomben", + "060": "Psychoschock", + "062": "Antik-Kraft", + "063": "Felsgrab", + "064": "Steinhagel", + "065": "Juwelenkraft", + "066": "Schattensto\u00df", + "067": "Finsterfaust", + "069": "Unheilb\u00f6en", + "070": "Spukball", + "072": "Magnetbombe", + "074": "Eisensch\u00e4del", + "075": "Parabolladung", + "077": "Donnerschlag", + "078": "Donner", + "079": "Donnerblitz", + "080": "Windhose", + "082": "Drachenpuls", + "083": "Drachenklaue", + "084": "S\u00e4uselstimme", + "085": "Diebeskuss", + "086": "Zauberschein", + "087": "Mondgewalt", + "088": "Knuddler", + "089": "Giftstreich", + "090": "Matschbombe", + "091": "Schlammwoge", + "092": "M\u00fclltreffer", + "094": "Knochenkeule", + "095": "Dampfwalze", + "096": "Schlammbombe", + "099": "Ampelleuchte", "100": "Kreuzschere", "101": "Nitroladung", "102": "Funkenflug", @@ -76,7 +117,6 @@ "126": "Hornattacke", "127": "Stampfer", "129": "Hyperzahn", - "13": "Wickel", "131": "Bodyslam", "132": "Erholung", "133": "Verzweifler", @@ -84,10 +124,6 @@ "135": "Hydropumpe (Turtok)", "136": "Wickel (Gr\u00fcn)", "137": "Wickel (Lila)", - "14": "Hyperstrahl", - "16": "Finsteraura", - "18": "Schlammbad", - "20": "Klammer", "200": "Zornklinge", "201": "K\u00e4ferbiss", "202": "Biss", @@ -98,7 +134,6 @@ "207": "Fu\u00dfkick", "208": "Karateschlag", "209": "Glut", - "21": "Flammenrad", "210": "Fl\u00fcgelschlag", "211": "Schnabel", "212": "Schlecker", @@ -109,7 +144,6 @@ "217": "Eissplitter", "218": "Eisesodem", "219": "Ruckzuckhieb", - "22": "Vielender", "220": "Kratzer", "221": "Tackle", "222": "Pfund", @@ -129,7 +163,6 @@ "237": "Blubber", "238": "Finte", "239": "Stahlfl\u00fcgel", - "24": "Flammenwurf", "240": "Feuerzahn", "241": "Zertr\u00fcmmerer", "242": "Wandler", @@ -150,7 +183,6 @@ "257": "Himmelsfeger", "258": "Sandgrab", "259": "Felswurf", - "26": "Schaufler", "260": "Plage", "261": "K\u00e4fertrutz", "262": "Silberhauch", @@ -171,79 +203,119 @@ "277": "Wutanfall", "278": "Standpauke", "279": "Knirscher", - "28": "Kreuzhieb", "280": "Schmarotzer", "281": "Kraftreserve", - "30": "Psystrahl", - "31": "Erdbeben", - "32": "Steinkante", - "33": "Eishieb", - "34": "Herzstempel", - "35": "Ladungssto\u00df", - "36": "Lichtkanone", - "38": "Bohrschnabel", - "39": "Eisstrahl", - "40": "Blizzard", - "42": "Hitzewelle", - "45": "Aero-Ass", - "46": "Schlagbohrer", - "47": "Bl\u00fctenwirbel", - "48": "Megasauger", - "49": "K\u00e4fergebrumm", - "50": "Giftzahn", - "51": "Nachthieb", - "53": "Blubbstrahl", - "54": "\u00dcberroller", - "56": "Fu\u00dftritt", - "57": "Wasserd\u00fcse", - "58": "Nassschweif", - "59": "Samenbomben", - "60": "Psychoschock", - "62": "Antik-Kraft", - "63": "Felsgrab", - "64": "Steinhagel", - "65": "Juwelenkraft", - "66": "Schattensto\u00df", - "67": "Finsterfaust", - "69": "Unheilb\u00f6en", - "70": "Spukball", - "72": "Magnetbombe", - "74": "Eisensch\u00e4del", - "75": "Parabolladung", - "77": "Donnerschlag", - "78": "Donner", - "79": "Donnerblitz", - "80": "Windhose", - "82": "Drachenpuls", - "83": "Drachenklaue", - "84": "S\u00e4uselstimme", - "85": "Diebeskuss", - "86": "Zauberschein", - "87": "Mondgewalt", - "88": "Knuddler", - "89": "Giftstreich", - "90": "Matschbombe", - "91": "Schlammwoge", - "92": "M\u00fclltreffer", - "94": "Knochenkeule", - "95": "Dampfwalze", - "96": "Schlammbombe", - "99": "Ampelleuchte", - "281": "Kraftreserve", - "282": "Bodycheck", - "283": "Kaskade", - "284": "Surfer", - "285": "Draco Meteor", - "286": "Kismetwunsch", - "287": "G\u0344hner", - "288": "Psyschub", - "289": "Ursprungswoge", - "290": "Abgrundsklinge", + "282": "Bodycheck", + "283": "Kaskade", + "284": "Surfer", + "285": "Draco Meteor", + "286": "Kismetwunsch", + "287": "G\u0344hner", + "288": "Psyschub", + "289": "Ursprungswoge", + "290": "Abgrundsklinge", "291": "Geschenk" }, "pokemon": { - "1": "Bisasam", - "10": "Raupy", + "001": "Bisasam", + "002": "Bisaknosp", + "003": "Bisaflor", + "004": "Glumanda", + "005": "Glutexo", + "006": "Glurak", + "007": "Schiggy", + "008": "Schillok", + "009": "Turtok", + "010": "Raupy", + "011": "Safcon", + "012": "Smettbo", + "013": "Hornliu", + "014": "Kokuna", + "015": "Bibor", + "016": "Taubsi", + "017": "Tauboga", + "018": "Tauboss", + "019": "Rattfratz", + "020": "Rattikarl", + "021": "Habitak", + "022": "Ibitak", + "023": "Rettan", + "024": "Arbok", + "025": "Pikachu", + "026": "Raichu", + "027": "Sandan", + "028": "Sandamer", + "029": "Nidoran\u2640", + "030": "Nidorina", + "031": "Nidoqueen", + "032": "Nidoran\u2642", + "033": "Nidorino", + "034": "Nidoking", + "035": "Piepi", + "036": "Pixi", + "037": "Vulpix", + "038": "Vulnona", + "039": "Pummeluff", + "040": "Knuddeluff", + "041": "Zubat", + "042": "Golbat", + "043": "Myrapla", + "044": "Duflor", + "045": "Giflor", + "046": "Paras", + "047": "Parasek", + "048": "Bluzuk", + "049": "Omot", + "050": "Digda", + "051": "Digdri", + "052": "Mauzi", + "053": "Snobilikat", + "054": "Enton", + "055": "Entoron", + "056": "Menki", + "057": "Rasaff", + "058": "Fukano", + "059": "Arkani", + "060": "Quapsel", + "061": "Quaputzi", + "062": "Quappo", + "063": "Abra", + "064": "Kadabra", + "065": "Simsala", + "066": "Machollo", + "067": "Maschock", + "068": "Machomei", + "069": "Knofensa", + "070": "Ultrigaria", + "071": "Sarzenia", + "072": "Tentacha", + "073": "Tentoxa", + "074": "Kleinstein", + "075": "Georok", + "076": "Geowaz", + "077": "Ponita", + "078": "Gallopa", + "079": "Flegmon", + "080": "Lahmus", + "081": "Magnetilo", + "082": "Magneton", + "083": "Porenta", + "084": "Dodu", + "085": "Dodri", + "086": "Jurob", + "087": "Jugong", + "088": "Sleima", + "089": "Sleimok", + "090": "Muschas", + "091": "Austos", + "092": "Nebulak", + "093": "Alpollo", + "094": "Gengar", + "095": "Onix", + "096": "Traumato", + "097": "Hypno", + "098": "Krabby", + "099": "Kingler", "100": "Voltobal", "101": "Lektrobal", "102": "Owei", @@ -254,7 +326,6 @@ "107": "Nockchan", "108": "Schlurp", "109": "Smogon", - "11": "Safcon", "110": "Smogmog", "111": "Rihorn", "112": "Rizeros", @@ -265,7 +336,6 @@ "117": "Seemon", "118": "Goldini", "119": "Golking", - "12": "Smettbo", "120": "Sterndu", "121": "Starmie", "122": "Pantimos", @@ -276,7 +346,6 @@ "127": "Pinsir", "128": "Tauros", "129": "Karpador", - "13": "Hornliu", "130": "Garados", "131": "Lapras", "132": "Ditto", @@ -287,7 +356,6 @@ "137": "Porygon", "138": "Amonitas", "139": "Amoroso", - "14": "Kokuna", "140": "Kabuto", "141": "Kabutops", "142": "Aerodactyl", @@ -298,7 +366,6 @@ "147": "Dratini", "148": "Dragonir", "149": "Dragoran", - "15": "Bibor", "150": "Mewtu", "151": "Mew", "152": "Endivie", @@ -309,7 +376,6 @@ "157": "Tornupto", "158": "Karnimani", "159": "Tyracroc", - "16": "Taubsi", "160": "Impergator", "161": "Wiesor", "162": "Wiesenior", @@ -320,7 +386,6 @@ "167": "Webarak", "168": "Ariados", "169": "Iksbat", - "17": "Tauboga", "170": "Lampi", "171": "Lanturn", "172": "Pichu", @@ -331,7 +396,6 @@ "177": "Natu", "178": "Xatu", "179": "Voltilamm", - "18": "Tauboss", "180": "Waaty", "181": "Ampharos", "182": "Blubella", @@ -342,7 +406,6 @@ "187": "Hoppspross", "188": "Hubelupf", "189": "Papungha", - "19": "Rattfratz", "190": "Griffel", "191": "Sonnkern", "192": "Sonnflora", @@ -353,8 +416,6 @@ "197": "Nachtara", "198": "Kramurx", "199": "Laschoking", - "2": "Bisaknosp", - "20": "Rattikarl", "200": "Traunfugil", "201": "Icognito", "202": "Woingenau", @@ -365,7 +426,6 @@ "207": "Skorgla", "208": "Stahlos", "209": "Snubbull", - "21": "Habitak", "210": "Granbull", "211": "Baldorfish", "212": "Scherox", @@ -376,7 +436,6 @@ "217": "Ursaring", "218": "Schneckmag", "219": "Magcargo", - "22": "Ibitak", "220": "Quiekel", "221": "Keifel", "222": "Corasonn", @@ -387,7 +446,6 @@ "227": "Panzaeron", "228": "Hunduster", "229": "Hundemon", - "23": "Rettan", "230": "Seedraking", "231": "Phanpy", "232": "Donphan", @@ -398,7 +456,6 @@ "237": "Kapoera", "238": "Kussilla", "239": "Elekid", - "24": "Arbok", "240": "Magby", "241": "Miltank", "242": "Heiteira", @@ -409,7 +466,6 @@ "247": "Pupitar", "248": "Despotar", "249": "Lugia", - "25": "Pikachu", "250": "Ho-Oh", "251": "Celebi", "252": "Geckarbor", @@ -420,7 +476,6 @@ "257": "Lohgock", "258": "Hydropi", "259": "Moorabbel", - "26": "Raichu", "260": "Sumpex", "261": "Fiffyen", "262": "Magnayen", @@ -431,7 +486,6 @@ "267": "Papinella", "268": "Panekon", "269": "Pudox", - "27": "Sandan", "270": "Loturzel", "271": "Lombrero", "272": "Kappalores", @@ -442,7 +496,6 @@ "277": "Schwalboss", "278": "Wingull", "279": "Pelipper", - "28": "Sandamer", "280": "Trasla", "281": "Kirlia", "282": "Guardevoir", @@ -453,7 +506,6 @@ "287": "Bummelz", "288": "Muntier", "289": "Letarking", - "29": "Nidoran\u2640", "290": "Nincada", "291": "Ninjask", "292": "Ninjatom", @@ -464,8 +516,6 @@ "297": "Hariyama", "298": "Azurill", "299": "Nasgnet", - "3": "Bisaflor", - "30": "Nidorina", "300": "Eneco", "301": "Enekoro", "302": "Zobiris", @@ -476,7 +526,6 @@ "307": "Meditie", "308": "Meditalis", "309": "Frizelbliz", - "31": "Nidoqueen", "310": "Voltenso", "311": "Plusle", "312": "Minun", @@ -487,7 +536,6 @@ "317": "Schlukwech", "318": "Kanivanha", "319": "Tohaido", - "32": "Nidoran\u2642", "320": "Wailmer", "321": "Wailord", "322": "Camaub", @@ -498,7 +546,6 @@ "327": "Pandir", "328": "Knacklion", "329": "Vibrava", - "33": "Nidorino", "330": "Libelldra", "331": "Tuska", "332": "Noktuska", @@ -509,7 +556,6 @@ "337": "Lunastein", "338": "Sonnfel", "339": "Schmerbe", - "34": "Nidoking", "340": "Welsar", "341": "Krebscorps", "342": "Krebutack", @@ -520,7 +566,6 @@ "347": "Anorith", "348": "Armaldo", "349": "Barschwa", - "35": "Piepi", "350": "Milotic", "351": "Formeo", "352": "Kecleon", @@ -531,7 +576,6 @@ "357": "Tropius", "358": "Palimpalim", "359": "Absol", - "36": "Pixi", "360": "Isso", "361": "Schneppke", "362": "Firnontor", @@ -542,7 +586,6 @@ "367": "Aalabyss", "368": "Saganabyss", "369": "Relicanth", - "37": "Vulpix", "370": "Liebiskus", "371": "Kindwurm", "372": "Draschel", @@ -553,7 +596,6 @@ "377": "Regirock", "378": "Regice", "379": "Registeel", - "38": "Vulnona", "380": "Latias", "381": "Latios", "382": "Kyogre", @@ -564,7 +606,6 @@ "387": "Chelast", "388": "Chelcarain", "389": "Chelterrar", - "39": "Pummeluff", "390": "Panflam", "391": "Panpyro", "392": "Panferno", @@ -575,8 +616,6 @@ "397": "Staravia", "398": "Staraptor", "399": "Bidiza", - "4": "Glumanda", - "40": "Knuddeluff", "400": "Bidifas", "401": "Zirpurze", "402": "Zirpeise", @@ -587,7 +626,6 @@ "407": "Roserade", "408": "Koknodon", "409": "Rameidon", - "41": "Zubat", "410": "Schilterus", "411": "Bollterus", "412": "Burmy", @@ -598,7 +636,6 @@ "417": "Pachirisu", "418": "Bamelin", "419": "Bojelin", - "42": "Golbat", "420": "Kikugi", "421": "Kinoso", "422": "Schalellos", @@ -609,7 +646,6 @@ "427": "Haspiror", "428": "Schlapor", "429": "Traunmagil", - "43": "Myrapla", "430": "Kramshef", "431": "Charmian", "432": "Shnurgarst", @@ -620,7 +656,6 @@ "437": "Bronzong", "438": "Mobai", "439": "Pantimimi", - "44": "Duflor", "440": "Wonneira", "441": "Plaudagei", "442": "Kryppuk", @@ -631,7 +666,6 @@ "447": "Riolu", "448": "Lucario", "449": "Hippopotas", - "45": "Giflor", "450": "Hippoterus", "451": "Pionskora", "452": "Piondragi", @@ -642,7 +676,6 @@ "457": "Lumineon", "458": "Mantirps", "459": "Shnebedeck", - "46": "Paras", "460": "Rexblisar", "461": "Snibunna", "462": "Magnezone", @@ -653,7 +686,6 @@ "467": "Magbrant", "468": "Togekiss", "469": "Yanmega", - "47": "Parasek", "470": "Folipurba", "471": "Glaziola", "472": "Skorgro", @@ -664,7 +696,6 @@ "477": "Zwirrfinst", "478": "Frosdedje", "479": "Rotom", - "48": "Bluzuk", "480": "Selfe", "481": "Vesprit", "482": "Tobutz", @@ -675,7 +706,6 @@ "487": "Giratina", "488": "Cresselia", "489": "Phione", - "49": "Omot", "490": "Manaphy", "491": "Darkrai", "492": "Shaymin", @@ -686,8 +716,6 @@ "497": "Serpiroyal", "498": "Floink", "499": "Ferkokel", - "5": "Glutexo", - "50": "Digda", "500": "Flambirex", "501": "Ottaro", "502": "Zwottronin", @@ -698,7 +726,6 @@ "507": "Terribark", "508": "Bissbark", "509": "Felilou", - "51": "Digdri", "510": "Kleoparda", "511": "Vegimak", "512": "Vegichita", @@ -709,7 +736,6 @@ "517": "Somniam", "518": "Somnivora", "519": "Dusselgurr", - "52": "Mauzi", "520": "Navitaub", "521": "Fasasnob", "522": "Elezeba", @@ -720,7 +746,6 @@ "527": "Fleknoil", "528": "Fletiamo", "529": "Rotomurf", - "53": "Snobilikat", "530": "Stalobor", "531": "Ohrdoch", "532": "Praktibalk", @@ -731,7 +756,6 @@ "537": "Branawarz", "538": "Jiutesto", "539": "Karadonis", - "54": "Enton", "540": "Strawickl", "541": "Folikon", "542": "Matrifol", @@ -742,7 +766,6 @@ "547": "Elfun", "548": "Lilminip", "549": "Dressella", - "55": "Entoron", "550": "Barschuft", "551": "Ganovil", "552": "Rokkaiman", @@ -753,7 +776,6 @@ "557": "Lithomith", "558": "Castellith", "559": "Zurrokex", - "56": "Menki", "560": "Irokex", "561": "Symvolara", "562": "Makabaja", @@ -764,7 +786,6 @@ "567": "Aeropteryx", "568": "Unrat\u00fctox", "569": "Deponitox", - "57": "Rasaff", "570": "Zorua", "571": "Zoroark", "572": "Picochilla", @@ -775,7 +796,6 @@ "577": "Monozyto", "578": "Mitodos", "579": "Zytomega", - "58": "Fukano", "580": "Piccolente", "581": "Swaroness", "582": "Gelatini", @@ -786,7 +806,6 @@ "587": "Emolga", "588": "Laukaps", "589": "Cavalanzas", - "59": "Arkani", "590": "Tarnpignon", "591": "Hutsassa", "592": "Quabbel", @@ -797,8 +816,6 @@ "597": "Kastadur", "598": "Tentantel", "599": "Klikk", - "6": "Glurak", - "60": "Quapsel", "600": "Kliklak", "601": "Klikdiklak", "602": "Zapplardin", @@ -809,7 +826,6 @@ "607": "Lichtel", "608": "Laternecto", "609": "Skelabra", - "61": "Quaputzi", "610": "Milza", "611": "Sharfax", "612": "Maxax", @@ -820,7 +836,6 @@ "617": "Hydragil", "618": "Flunschlik", "619": "Lin-Fu", - "62": "Quappo", "620": "Wie-Shu", "621": "Shardrago", "622": "Golbit", @@ -831,7 +846,6 @@ "627": "Geronimatz", "628": "Washakwil", "629": "Skallyk", - "63": "Abra", "630": "Grypheldis", "631": "Furnifra\u00df", "632": "Fermicula", @@ -842,7 +856,6 @@ "637": "Ramoth", "638": "Kobalium", "639": "Terrakium", - "64": "Kadabra", "640": "Viridium", "641": "Boreos", "642": "Voltolos", @@ -853,7 +866,6 @@ "647": "Keldeo", "648": "Meloetta", "649": "Genesect", - "65": "Simsala", "650": "Igamaro", "651": "Igastarnish", "652": "Brigaron", @@ -864,7 +876,6 @@ "657": "Amphizel", "658": "Quajutsu", "659": "Scoppel", - "66": "Machollo", "660": "Grebbit", "661": "Dartiri", "662": "Dartignis", @@ -875,7 +886,6 @@ "667": "Leufeo", "668": "Pyroleo", "669": "Flab\u00e9b\u00e9", - "67": "Maschock", "670": "FLOETTE", "671": "Florges", "672": "M\u00e4hikel", @@ -886,7 +896,6 @@ "677": "Psiau", "678": "Psiaugon", "679": "Gramokles", - "68": "Machomei", "680": "Duokles", "681": "Durengard", "682": "Parfi", @@ -897,7 +906,6 @@ "687": "Calamanero", "688": "Bithora", "689": "Thanathora", - "69": "Knofensa", "690": "Algitt", "691": "Tandrak", "692": "Scampisto", @@ -908,8 +916,6 @@ "697": "Monargoras", "698": "Amarino", "699": "Amagarga", - "7": "Schiggy", - "70": "Ultrigaria", "700": "Feelinara", "701": "Resladero", "702": "DEDENNE", @@ -920,7 +926,6 @@ "707": "Clavion", "708": "Paragoni", "709": "Trombork", - "71": "Sarzenia", "710": "Irrbis", "711": "Pumpdjinn", "712": "Arktip", @@ -931,56 +936,50 @@ "717": "Yveltal", "718": "Zygarde", "719": "Diancie", - "72": "Tentacha", "720": "Hoopa", - "721": "Volcanion", - "73": "Tentoxa", - "74": "Kleinstein", - "75": "Georok", - "76": "Geowaz", - "77": "Ponita", - "78": "Gallopa", - "79": "Flegmon", - "8": "Schillok", - "80": "Lahmus", - "81": "Magnetilo", - "82": "Magneton", - "83": "Porenta", - "84": "Dodu", - "85": "Dodri", - "86": "Jurob", - "87": "Jugong", - "88": "Sleima", - "89": "Sleimok", - "9": "Turtok", - "90": "Muschas", - "91": "Austos", - "92": "Nebulak", - "93": "Alpollo", - "94": "Gengar", - "95": "Onix", - "96": "Traumato", - "97": "Hypno", - "98": "Krabby", - "99": "Kingler" + "721": "Volcanion" + }, + "sizes": { + "001": "winzig", + "002": "klein", + "003": "\u00dcblich", + "004": "gro\u00df", + "005": "riesig" }, "teams": { - "0": "Neutral", - "1": "Weisheit", - "2": "Wagemut", - "3": "Intuition" - }, + "000": "Neutral", + "001": "Weisheit", + "002": "Wagemut", + "003": "Intuition" + }, + "types": { + "001": "Normal", + "002": "Kampf", + "003": "Flug", + "004": "Gift", + "005": "Boden", + "006": "Stein", + "007": "K\u00e4fer", + "008": "Geist", + "009": "Stahl", + "010": "Feuer", + "011": "Wasser", + "012": "Pflanze", + "013": "Elektro", + "014": "Psycho", + "015": "Eis", + "016": "Drache", + "017": "Fee", + "018": "Unlicht" + }, "weather": { - "0": "Keiner", - "1": "klar", - "2": "Regen", - "3": "Teilweise wolkig", - "4": "Bew\u00F6lkt", - "5": "Windig", - "6": "Schnee", - "7": "Nebel" - }, - "misc": { - "boosted": "verstärktes" + "000": "Keiner", + "001": "klar", + "002": "Regen", + "003": "Teilweise wolkig", + "004": "Bew\u00f6lkt", + "005": "Windig", + "006": "Schnee", + "007": "Nebel" } -} +} \ No newline at end of file diff --git a/locales/en.json b/locales/en.json index 3ce8f89a7..3d3c00968 100644 --- a/locales/en.json +++ b/locales/en.json @@ -1,1029 +1,1029 @@ { + "costumes": { + "025": { + "001": "Festive Hat", + "002": "Party Hat", + "003": "Ash Hat", + "004": "Witch Hat" + }, + "026": { + "001": "Festive Hat", + "002": "Party Hat", + "003": "Ash Hat", + "004": "Witch Hat" + }, + "172": { + "001": "Festive Hat", + "002": "Party Hat", + "003": "Ash Hat", + "004": "Witch Hat" + } + }, "forms": { "201": { - "1": "A", - "2": "B", - "3": "C", - "4": "D", - "5": "E", - "6": "F", - "7": "G", - "8": "H", - "9": "I", - "10": "J", - "11": "K", - "12": "L", - "13": "M", - "14": "N", - "15": "O", - "16": "P", - "17": "Q", - "18": "R", - "19": "S", - "20": "T", - "21": "U", - "22": "V", - "23": "W", - "24": "X", - "25": "Y", - "26": "Z", - "27": "!", - "28": "?" - }, + "001": "A", + "002": "B", + "003": "C", + "004": "D", + "005": "E", + "006": "F", + "007": "G", + "008": "H", + "009": "I", + "010": "J", + "011": "K", + "012": "L", + "013": "M", + "014": "N", + "015": "O", + "016": "P", + "017": "Q", + "018": "R", + "019": "S", + "020": "T", + "021": "U", + "022": "V", + "023": "W", + "024": "X", + "025": "Y", + "026": "Z", + "027": "!", + "028": "?" + }, "351": { - "29": "Normal", - "30": "Sunny", - "31": "Rainy", - "32": "Snowy" - }, + "029": "Normal", + "030": "Sunny", + "031": "Rainy", + "032": "Snowy" + }, "386": { - "33": "Normal", - "34": "Attack", - "35": "Defense", - "36": "Speed" + "033": "Normal", + "034": "Attack", + "035": "Defense", + "036": "Speed" } - }, - "teams": { - "0": "Neutral", - "1": "Mystic", - "2": "Valor", - "3": "Instinct" - }, - "weather": { - "0": "None", - "1": "Clear", - "2": "Rain", - "3": "Partly Cloudy", - "4": "Cloudy", - "5": "Windy", - "6": "Snow", - "7": "Fog" - }, + }, "leaders": { - "0": "Professor Willow", - "1": "Blanche", - "2": "Candela", - "3": "Spark" - }, - "sizes": { - "1": "tiny", - "2": "small", - "3": "normal", - "4": "large", - "5": "big" - }, - "costumes": { - "25": { - "1": "Festive Hat", - "2": "Party Hat", - "3": "Ash Hat", - "4": "Witch Hat" - }, - "26": { - "1": "Festive Hat", - "2": "Party Hat", - "3": "Ash Hat", - "4": "Witch Hat" - }, - "172": { - "1": "Festive Hat", - "2": "Party Hat", - "3": "Ash Hat", - "4": "Witch Hat" - } - }, - "types": { - "1": "Normal", - "2": "Fighting", - "3": "Flying", - "4": "Poison", - "5": "Ground", - "6": "Rock", - "7": "Bug", - "8": "Ghost", - "9": "Steel", - "10": "Fire", - "11": "Water", - "12": "Grass", - "13": "Electric", - "14": "Psychic", - "15": "Ice", - "16": "Dragon", - "17": "Fairy", - "18": "Dark" - }, + "000": "Professor Willow", + "001": "Blanche", + "002": "Candela", + "003": "Spark" + }, + "misc": { + "boosted": "boosted" + }, "moves": { - "13": "Wrap", - "14": "Hyper Beam", - "16": "Dark Pulse", - "18": "Sludge", - "20": "Vice Grip", - "21": "Flame Wheel", - "22": "Megahorn", - "24": "Flamethrower", - "26": "Dig", - "28": "Cross Chop", - "30": "Psybeam", - "31": "Earthquake", - "32": "Stone Edge", - "33": "Ice Punch", - "34": "Heart Stamp", - "35": "Discharge", - "36": "Flash Cannon", - "38": "Drill Peck", - "39": "Ice Beam", - "40": "Blizzard", - "42": "Heat Wave", - "45": "Aerial Ace", - "46": "Drill Run", - "47": "Petal Blizzard", - "48": "Mega Drain", - "49": "Bug Buzz", - "50": "Poison Fang", - "51": "Night Slash", - "53": "Bubble Beam", - "54": "Submission", - "56": "Low Sweep", - "57": "Aqua Jet", - "58": "Aqua Tail", - "59": "Seed Bomb", - "60": "Psyshock", - "62": "Ancient Power", - "63": "Rock Tomb", - "64": "Rock Slide", - "65": "Power Gem", - "66": "Shadow Sneak", - "67": "Shadow Punch", - "69": "Ominous Wind", - "70": "Shadow Ball", - "72": "Magnet Bomb", - "74": "Iron Head", - "75": "Parabolic Charge", - "77": "Thunder Punch", - "78": "Thunder", - "79": "Thunderbolt", - "80": "Twister", - "82": "Dragon Pulse", - "83": "Dragon Claw", - "84": "Disarming Voice", - "85": "Draining Kiss", - "86": "Dazzling Gleam", - "87": "Moonblast", - "88": "Play Rough", - "89": "Cross Poison", - "90": "Sludge Bomb", - "91": "Sludge Wave", - "92": "Gunk Shot", - "94": "Bone Club", - "95": "Bulldoze", - "96": "Mud Bomb", - "99": "Signal Beam", - "100": "X-Scissor", - "101": "Flame Charge", - "102": "Flame Burst", - "103": "Fire Blast", - "104": "Brine", - "105": "Water Pulse", - "106": "Scald", - "107": "Hydro Pump", - "108": "Psychic", - "109": "Psystrike", - "111": "Icy Wind", - "114": "Giga Drain", - "115": "Fire Punch", - "116": "Solar Beam", - "117": "Leaf Blade", - "118": "Power Whip", - "121": "Air Cutter", - "122": "Hurricane", - "123": "Brick Break", - "125": "Swift", - "126": "Horn Attack", - "127": "Stomp", - "129": "Hyper Fang", - "131": "Body Slam", - "132": "Rest", - "133": "Struggle", - "134": "Scald (Blastoise)", - "135": "Hydro Pump (Blastoise)", - "136": "Wrap (Green)", - "137": "Wrap (Pink)", - "200": "Fury Cutter", - "201": "Bug Bite", - "202": "Bite", - "203": "Sucker Punch", - "204": "Dragon Breath", - "205": "Thunder Shock", - "206": "Spark", - "207": "Low Kick", - "208": "Karate Chop", - "209": "Ember", - "210": "Wing Attack", - "211": "Peck", - "212": "Lick", - "213": "Shadow Claw", - "214": "Vine Whip", - "215": "Razor Leaf", - "216": "Mud Shot", - "217": "Ice Shard", - "218": "Frost Breath", - "219": "Quick Attack", - "220": "Scratch", - "221": "Tackle", - "222": "Pound", - "223": "Cut", - "224": "Poison Jab", - "225": "Acid", - "226": "Psycho Cut", - "227": "Rock Throw", - "228": "Metal Claw", - "229": "Bullet Punch", - "230": "Water Gun", - "231": "Splash", - "233": "Mud Slap", - "234": "Zen Headbutt", - "235": "Confusion", - "236": "Poison Sting", - "237": "Bubble", - "238": "Feint Attack", - "239": "Steel Wing", - "240": "Fire Fang", - "241": "Rock Smash", - "242": "Transform", - "243": "Counter", - "244": "Powder Snow", - "245": "Close Combat", - "246": "Dynamic Punch", - "247": "Focus Blast", - "248": "Aurora Beam", - "249": "Charge Beam", - "250": "Volt Switch", - "251": "Wild Charge", - "252": "Zap Cannon", - "253": "Dragon Tail", - "254": "Avalanche", - "255": "Air Slash", - "256": "Brave Bird", - "257": "Sky Attack", - "258": "Sand Tomb", - "259": "Rock Blast", - "260": "Infestation", - "261": "Struggle Bug", - "262": "Silver Wind", - "263": "Astonish", - "264": "Hex", - "265": "Night Shade", - "266": "Iron Tail", - "267": "Gyro Ball", - "268": "Heavy Slam", - "269": "Fire Spin", - "270": "Overheat", - "271": "Bullet Seed", - "272": "Grass Knot", - "273": "Energy Ball", - "274": "Extrasensory", - "275": "Future Sight", - "276": "Mirror Coat", - "277": "Outrage", - "278": "Snarl", - "279": "Crunch", - "280": "Foul Play", - "281": "Hidden Power", - "282": "Take Down", - "283": "Waterfall", - "284": "Surf", - "285": "Draco Meteor", - "286": "Doom Desire", - "287": "Yawn", - "288": "Psycho Boost", - "289": "Origin Pulse", - "290": "Precipice Blades", + "013": "Wrap", + "014": "Hyper Beam", + "016": "Dark Pulse", + "018": "Sludge", + "020": "Vice Grip", + "021": "Flame Wheel", + "022": "Megahorn", + "024": "Flamethrower", + "026": "Dig", + "028": "Cross Chop", + "030": "Psybeam", + "031": "Earthquake", + "032": "Stone Edge", + "033": "Ice Punch", + "034": "Heart Stamp", + "035": "Discharge", + "036": "Flash Cannon", + "038": "Drill Peck", + "039": "Ice Beam", + "040": "Blizzard", + "042": "Heat Wave", + "045": "Aerial Ace", + "046": "Drill Run", + "047": "Petal Blizzard", + "048": "Mega Drain", + "049": "Bug Buzz", + "050": "Poison Fang", + "051": "Night Slash", + "053": "Bubble Beam", + "054": "Submission", + "056": "Low Sweep", + "057": "Aqua Jet", + "058": "Aqua Tail", + "059": "Seed Bomb", + "060": "Psyshock", + "062": "Ancient Power", + "063": "Rock Tomb", + "064": "Rock Slide", + "065": "Power Gem", + "066": "Shadow Sneak", + "067": "Shadow Punch", + "069": "Ominous Wind", + "070": "Shadow Ball", + "072": "Magnet Bomb", + "074": "Iron Head", + "075": "Parabolic Charge", + "077": "Thunder Punch", + "078": "Thunder", + "079": "Thunderbolt", + "080": "Twister", + "082": "Dragon Pulse", + "083": "Dragon Claw", + "084": "Disarming Voice", + "085": "Draining Kiss", + "086": "Dazzling Gleam", + "087": "Moonblast", + "088": "Play Rough", + "089": "Cross Poison", + "090": "Sludge Bomb", + "091": "Sludge Wave", + "092": "Gunk Shot", + "094": "Bone Club", + "095": "Bulldoze", + "096": "Mud Bomb", + "099": "Signal Beam", + "100": "X-Scissor", + "101": "Flame Charge", + "102": "Flame Burst", + "103": "Fire Blast", + "104": "Brine", + "105": "Water Pulse", + "106": "Scald", + "107": "Hydro Pump", + "108": "Psychic", + "109": "Psystrike", + "111": "Icy Wind", + "114": "Giga Drain", + "115": "Fire Punch", + "116": "Solar Beam", + "117": "Leaf Blade", + "118": "Power Whip", + "121": "Air Cutter", + "122": "Hurricane", + "123": "Brick Break", + "125": "Swift", + "126": "Horn Attack", + "127": "Stomp", + "129": "Hyper Fang", + "131": "Body Slam", + "132": "Rest", + "133": "Struggle", + "134": "Scald (Blastoise)", + "135": "Hydro Pump (Blastoise)", + "136": "Wrap (Green)", + "137": "Wrap (Pink)", + "200": "Fury Cutter", + "201": "Bug Bite", + "202": "Bite", + "203": "Sucker Punch", + "204": "Dragon Breath", + "205": "Thunder Shock", + "206": "Spark", + "207": "Low Kick", + "208": "Karate Chop", + "209": "Ember", + "210": "Wing Attack", + "211": "Peck", + "212": "Lick", + "213": "Shadow Claw", + "214": "Vine Whip", + "215": "Razor Leaf", + "216": "Mud Shot", + "217": "Ice Shard", + "218": "Frost Breath", + "219": "Quick Attack", + "220": "Scratch", + "221": "Tackle", + "222": "Pound", + "223": "Cut", + "224": "Poison Jab", + "225": "Acid", + "226": "Psycho Cut", + "227": "Rock Throw", + "228": "Metal Claw", + "229": "Bullet Punch", + "230": "Water Gun", + "231": "Splash", + "233": "Mud Slap", + "234": "Zen Headbutt", + "235": "Confusion", + "236": "Poison Sting", + "237": "Bubble", + "238": "Feint Attack", + "239": "Steel Wing", + "240": "Fire Fang", + "241": "Rock Smash", + "242": "Transform", + "243": "Counter", + "244": "Powder Snow", + "245": "Close Combat", + "246": "Dynamic Punch", + "247": "Focus Blast", + "248": "Aurora Beam", + "249": "Charge Beam", + "250": "Volt Switch", + "251": "Wild Charge", + "252": "Zap Cannon", + "253": "Dragon Tail", + "254": "Avalanche", + "255": "Air Slash", + "256": "Brave Bird", + "257": "Sky Attack", + "258": "Sand Tomb", + "259": "Rock Blast", + "260": "Infestation", + "261": "Struggle Bug", + "262": "Silver Wind", + "263": "Astonish", + "264": "Hex", + "265": "Night Shade", + "266": "Iron Tail", + "267": "Gyro Ball", + "268": "Heavy Slam", + "269": "Fire Spin", + "270": "Overheat", + "271": "Bullet Seed", + "272": "Grass Knot", + "273": "Energy Ball", + "274": "Extrasensory", + "275": "Future Sight", + "276": "Mirror Coat", + "277": "Outrage", + "278": "Snarl", + "279": "Crunch", + "280": "Foul Play", + "281": "Hidden Power", + "282": "Take Down", + "283": "Waterfall", + "284": "Surf", + "285": "Draco Meteor", + "286": "Doom Desire", + "287": "Yawn", + "288": "Psycho Boost", + "289": "Origin Pulse", + "290": "Precipice Blades", "291": "Present" - }, + }, "pokemon": { - "1": "Bulbasaur", - "2": "Ivysaur", - "3": "Venusaur", - "4": "Charmander", - "5": "Charmeleon", - "6": "Charizard", - "7": "Squirtle", - "8": "Wartortle", - "9": "Blastoise", - "10": "Caterpie", - "11": "Metapod", - "12": "Butterfree", - "13": "Weedle", - "14": "Kakuna", - "15": "Beedrill", - "16": "Pidgey", - "17": "Pidgeotto", - "18": "Pidgeot", - "19": "Rattata", - "20": "Raticate", - "21": "Spearow", - "22": "Fearow", - "23": "Ekans", - "24": "Arbok", - "25": "Pikachu", - "26": "Raichu", - "27": "Sandshrew", - "28": "Sandslash", - "29": "Nidoran♀", - "30": "Nidorina", - "31": "Nidoqueen", - "32": "Nidoran♂", - "33": "Nidorino", - "34": "Nidoking", - "35": "Clefairy", - "36": "Clefable", - "37": "Vulpix", - "38": "Ninetales", - "39": "Jigglypuff", - "40": "Wigglytuff", - "41": "Zubat", - "42": "Golbat", - "43": "Oddish", - "44": "Gloom", - "45": "Vileplume", - "46": "Paras", - "47": "Parasect", - "48": "Venonat", - "49": "Venomoth", - "50": "Diglett", - "51": "Dugtrio", - "52": "Meowth", - "53": "Persian", - "54": "Psyduck", - "55": "Golduck", - "56": "Mankey", - "57": "Primeape", - "58": "Growlithe", - "59": "Arcanine", - "60": "Poliwag", - "61": "Poliwhirl", - "62": "Poliwrath", - "63": "Abra", - "64": "Kadabra", - "65": "Alakazam", - "66": "Machop", - "67": "Machoke", - "68": "Machamp", - "69": "Bellsprout", - "70": "Weepinbell", - "71": "Victreebel", - "72": "Tentacool", - "73": "Tentacruel", - "74": "Geodude", - "75": "Graveler", - "76": "Golem", - "77": "Ponyta", - "78": "Rapidash", - "79": "Slowpoke", - "80": "Slowbro", - "81": "Magnemite", - "82": "Magneton", - "83": "Farfetch'd", - "84": "Doduo", - "85": "Dodrio", - "86": "Seel", - "87": "Dewgong", - "88": "Grimer", - "89": "Muk", - "90": "Shellder", - "91": "Cloyster", - "92": "Gastly", - "93": "Haunter", - "94": "Gengar", - "95": "Onix", - "96": "Drowzee", - "97": "Hypno", - "98": "Krabby", - "99": "Kingler", - "100": "Voltorb", - "101": "Electrode", - "102": "Exeggcute", - "103": "Exeggutor", - "104": "Cubone", - "105": "Marowak", - "106": "Hitmonlee", - "107": "Hitmonchan", - "108": "Lickitung", - "109": "Koffing", - "110": "Weezing", - "111": "Rhyhorn", - "112": "Rhydon", - "113": "Chansey", - "114": "Tangela", - "115": "Kangaskhan", - "116": "Horsea", - "117": "Seadra", - "118": "Goldeen", - "119": "Seaking", - "120": "Staryu", - "121": "Starmie", - "122": "Mr. Mime", - "123": "Scyther", - "124": "Jynx", - "125": "Electabuzz", - "126": "Magmar", - "127": "Pinsir", - "128": "Tauros", - "129": "Magikarp", - "130": "Gyarados", - "131": "Lapras", - "132": "Ditto", - "133": "Eevee", - "134": "Vaporeon", - "135": "Jolteon", - "136": "Flareon", - "137": "Porygon", - "138": "Omanyte", - "139": "Omastar", - "140": "Kabuto", - "141": "Kabutops", - "142": "Aerodactyl", - "143": "Snorlax", - "144": "Articuno", - "145": "Zapdos", - "146": "Moltres", - "147": "Dratini", - "148": "Dragonair", - "149": "Dragonite", - "150": "Mewtwo", - "151": "Mew", - "152": "Chikorita", - "153": "Bayleef", - "154": "Meganium", - "155": "Cyndaquil", - "156": "Quilava", - "157": "Typhlosion", - "158": "Totodile", - "159": "Croconaw", - "160": "Feraligatr", - "161": "Sentret", - "162": "Furret", - "163": "Hoothoot", - "164": "Noctowl", - "165": "Ledyba", - "166": "Ledian", - "167": "Spinarak", - "168": "Ariados", - "169": "Crobat", - "170": "Chinchou", - "171": "Lanturn", - "172": "Pichu", - "173": "Cleffa", - "174": "Igglybuff", - "175": "Togepi", - "176": "Togetic", - "177": "Natu", - "178": "Xatu", - "179": "Mareep", - "180": "Flaaffy", - "181": "Ampharos", - "182": "Bellossom", - "183": "Marill", - "184": "Azumarill", - "185": "Sudowoodo", - "186": "Politoed", - "187": "Hoppip", - "188": "Skiploom", - "189": "Jumpluff", - "190": "Aipom", - "191": "Sunkern", - "192": "Sunflora", - "193": "Yanma", - "194": "Wooper", - "195": "Quagsire", - "196": "Espeon", - "197": "Umbreon", - "198": "Murkrow", - "199": "Slowking", - "200": "Misdreavus", - "201": "Unown", - "202": "Wobbuffet", - "203": "Girafarig", - "204": "Pineco", - "205": "Forretress", - "206": "Dunsparce", - "207": "Gligar", - "208": "Steelix", - "209": "Snubbull", - "210": "Granbull", - "211": "Qwilfish", - "212": "Scizor", - "213": "Shuckle", - "214": "Heracross", - "215": "Sneasel", - "216": "Teddiursa", - "217": "Ursaring", - "218": "Slugma", - "219": "Magcargo", - "220": "Swinub", - "221": "Piloswine", - "222": "Corsola", - "223": "Remoraid", - "224": "Octillery", - "225": "Delibird", - "226": "Mantine", - "227": "Skarmory", - "228": "Houndour", - "229": "Houndoom", - "230": "Kingdra", - "231": "Phanpy", - "232": "Donphan", - "233": "Porygon2", - "234": "Stantler", - "235": "Smeargle", - "236": "Tyrogue", - "237": "Hitmontop", - "238": "Smoochum", - "239": "Elekid", - "240": "Magby", - "241": "Miltank", - "242": "Blissey", - "243": "Raikou", - "244": "Entei", - "245": "Suicune", - "246": "Larvitar", - "247": "Pupitar", - "248": "Tyranitar", - "249": "Lugia", - "250": "Ho-Oh", - "251": "Celebi", - "252": "Treecko", - "253": "Grovyle", - "254": "Sceptile", - "255": "Torchic", - "256": "Combusken", - "257": "Blaziken", - "258": "Mudkip", - "259": "Marshtomp", - "260": "Swampert", - "261": "Poochyena", - "262": "Mightyena", - "263": "Zigzagoon", - "264": "Linoone", - "265": "Wurmple", - "266": "Silcoon", - "267": "Beautifly", - "268": "Cascoon", - "269": "Dustox", - "270": "Lotad", - "271": "Lombre", - "272": "Ludicolo", - "273": "Seedot", - "274": "Nuzleaf", - "275": "Shiftry", - "276": "Taillow", - "277": "Swellow", - "278": "Wingull", - "279": "Pelipper", - "280": "Ralts", - "281": "Kirlia", - "282": "Gardevoir", - "283": "Surskit", - "284": "Masquerain", - "285": "Shroomish", - "286": "Breloom", - "287": "Slakoth", - "288": "Vigoroth", - "289": "Slaking", - "290": "Nincada", - "291": "Ninjask", - "292": "Shedinja", - "293": "Whismur", - "294": "Loudred", - "295": "Exploud", - "296": "Makuhita", - "297": "Hariyama", - "298": "Azurill", - "299": "Nosepass", - "300": "Skitty", - "301": "Delcatty", - "302": "Sableye", - "303": "Mawile", - "304": "Aron", - "305": "Lairon", - "306": "Aggron", - "307": "Meditite", - "308": "Medicham", - "309": "Electrike", - "310": "Manectric", - "311": "Plusle", - "312": "Minun", - "313": "Volbeat", - "314": "Illumise", - "315": "Roselia", - "316": "Gulpin", - "317": "Swalot", - "318": "Carvanha", - "319": "Sharpedo", - "320": "Wailmer", - "321": "Wailord", - "322": "Numel", - "323": "Camerupt", - "324": "Torkoal", - "325": "Spoink", - "326": "Grumpig", - "327": "Spinda", - "328": "Trapinch", - "329": "Vibrava", - "330": "Flygon", - "331": "Cacnea", - "332": "Cacturne", - "333": "Swablu", - "334": "Altaria", - "335": "Zangoose", - "336": "Seviper", - "337": "Lunatone", - "338": "Solrock", - "339": "Barboach", - "340": "Whiscash", - "341": "Corphish", - "342": "Crawdaunt", - "343": "Baltoy", - "344": "Claydol", - "345": "Lileep", - "346": "Cradily", - "347": "Anorith", - "348": "Armaldo", - "349": "Feebas", - "350": "Milotic", - "351": "Castform", - "352": "Kecleon", - "353": "Shuppet", - "354": "Banette", - "355": "Duskull", - "356": "Dusclops", - "357": "Tropius", - "358": "Chimecho", - "359": "Absol", - "360": "Wynaut", - "361": "Snorunt", - "362": "Glalie", - "363": "Spheal", - "364": "Sealeo", - "365": "Walrein", - "366": "Clamperl", - "367": "Huntail", - "368": "Gorebyss", - "369": "Relicanth", - "370": "Luvdisc", - "371": "Bagon", - "372": "Shelgon", - "373": "Salamence", - "374": "Beldum", - "375": "Metang", - "376": "Metagross", - "377": "Regirock", - "378": "Regice", - "379": "Registeel", - "380": "Latias", - "381": "Latios", - "382": "Kyogre", - "383": "Groudon", - "384": "Rayquaza", - "385": "Jirachi", - "386": "Deoxys", - "387": "Turtwig", - "388": "Grotle", - "389": "Torterra", - "390": "Chimchar", - "391": "Monferno", - "392": "Infernape", - "393": "Piplup", - "394": "Prinplup", - "395": "Empoleon", - "396": "Starly", - "397": "Staravia", - "398": "Staraptor", - "399": "Bidoof", - "400": "Bibarel", - "401": "Kricketot", - "402": "Kricketune", - "403": "Shinx", - "404": "Luxio", - "405": "Luxray", - "406": "Budew", - "407": "Roserade", - "408": "Cranidos", - "409": "Rampardos", - "410": "Shieldon", - "411": "Bastiodon", - "412": "Burmy", - "413": "Wormadam", - "414": "Mothim", - "415": "Combee", - "416": "Vespiquen", - "417": "Pachirisu", - "418": "Buizel", - "419": "Floatzel", - "420": "Cherubi", - "421": "Cherrim", - "422": "Shellos", - "423": "Gastrodon", - "424": "Ambipom", - "425": "Drifloon", - "426": "Drifblim", - "427": "Buneary", - "428": "Lopunny", - "429": "Mismagius", - "430": "Honchkrow", - "431": "Glameow", - "432": "Purugly", - "433": "Chingling", - "434": "Stunky", - "435": "Skuntank", - "436": "Bronzor", - "437": "Bronzong", - "438": "Bonsly", - "439": "Mime Jr.", - "440": "Happiny", - "441": "Chatot", - "442": "Spiritomb", - "443": "Gible", - "444": "Gabite", - "445": "Garchomp", - "446": "Munchlax", - "447": "Riolu", - "448": "Lucario", - "449": "Hippopotas", - "450": "Hippowdon", - "451": "Skorupi", - "452": "Drapion", - "453": "Croagunk", - "454": "Toxicroak", - "455": "Carnivine", - "456": "Finneon", - "457": "Lumineon", - "458": "Mantyke", - "459": "Snover", - "460": "Abomasnow", - "461": "Weavile", - "462": "Magnezone", - "463": "Lickilicky", - "464": "Rhyperior", - "465": "Tangrowth", - "466": "Electivire", - "467": "Magmortar", - "468": "Togekiss", - "469": "Yanmega", - "470": "Leafeon", - "471": "Glaceon", - "472": "Gliscor", - "473": "Mamoswine", - "474": "Porygon-Z", - "475": "Gallade", - "476": "Probopass", - "477": "Dusknoir", - "478": "Froslass", - "479": "Rotom", - "480": "Uxie", - "481": "Mesprit", - "482": "Azelf", - "483": "Dialga", - "484": "Palkia", - "485": "Heatran", - "486": "Regigigas", - "487": "Giratina", - "488": "Cresselia", - "489": "Phione", - "490": "Manaphy", - "491": "Darkrai", - "492": "Shaymin", - "493": "Arceus", - "494": "Victini", - "495": "Snivy", - "496": "Servine", - "497": "Serperior", - "498": "Tepig", - "499": "Pignite", - "500": "Emboar", - "501": "Oshawott", - "502": "Dewott", - "503": "Samurott", - "504": "Patrat", - "505": "Watchog", - "506": "Lillipup", - "507": "Herdier", - "508": "Stoutland", - "509": "Purrloin", - "510": "Liepard", - "511": "Pansage", - "512": "Simisage", - "513": "Pansear", - "514": "Simisear", - "515": "Panpour", - "516": "Simipour", - "517": "Munna", - "518": "Musharna", - "519": "Pidove", - "520": "Tranquill", - "521": "Unfezant", - "522": "Blitzle", - "523": "Zebstrika", - "524": "Roggenrola", - "525": "Boldore", - "526": "Gigalith", - "527": "Woobat", - "528": "Swoobat", - "529": "Drilbur", - "530": "Excadrill", - "531": "Audino", - "532": "Timburr", - "533": "Gurdurr", - "534": "Conkeldurr", - "535": "Tympole", - "536": "Palpitoad", - "537": "Seismitoad", - "538": "Throh", - "539": "Sawk", - "540": "Sewaddle", - "541": "Swadloon", - "542": "Leavanny", - "543": "Venipede", - "544": "Whirlipede", - "545": "Scolipede", - "546": "Cottonee", - "547": "Whimsicott", - "548": "Petilil", - "549": "Lilligant", - "550": "Basculin", - "551": "Sandile", - "552": "Krokorok", - "553": "Krookodile", - "554": "Darumaka", - "555": "Darmanitan", - "556": "Maractus", - "557": "Dwebble", - "558": "Crustle", - "559": "Scraggy", - "560": "Scrafty", - "561": "Sigilyph", - "562": "Yamask", - "563": "Cofagrigus", - "564": "Tirtouga", - "565": "Carracosta", - "566": "Archen", - "567": "Archeops", - "568": "Trubbish", - "569": "Garbodor", - "570": "Zorua", - "571": "Zoroark", - "572": "Minccino", - "573": "Cinccino", - "574": "Gothita", - "575": "Gothorita", - "576": "Gothitelle", - "577": "Solosis", - "578": "Duosion", - "579": "Reuniclus", - "580": "Ducklett", - "581": "Swanna", - "582": "Vanillite", - "583": "Vanillish", - "584": "Vanilluxe", - "585": "Deerling", - "586": "Sawsbuck", - "587": "Emolga", - "588": "Karrablast", - "589": "Escavalier", - "590": "Foongus", - "591": "Amoonguss", - "592": "Frillish", - "593": "Jellicent", - "594": "Alomomola", - "595": "Joltik", - "596": "Galvantula", - "597": "Ferroseed", - "598": "Ferrothorn", - "599": "Klink", - "600": "Klang", - "601": "Klinklang", - "602": "Tynamo", - "603": "Eelektrik", - "604": "Eelektross", - "605": "Elgyem", - "606": "Beheeyem", - "607": "Litwick", - "608": "Lampent", - "609": "Chandelure", - "610": "Axew", - "611": "Fraxure", - "612": "Haxorus", - "613": "Cubchoo", - "614": "Beartic", - "615": "Cryogonal", - "616": "Shelmet", - "617": "Accelgor", - "618": "Stunfisk", - "619": "Mienfoo", - "620": "Mienshao", - "621": "Druddigon", - "622": "Golett", - "623": "Golurk", - "624": "Pawniard", - "625": "Bisharp", - "626": "Bouffalant", - "627": "Rufflet", - "628": "Braviary", - "629": "Vullaby", - "630": "Mandibuzz", - "631": "Heatmor", - "632": "Durant", - "633": "Deino", - "634": "Zweilous", - "635": "Hydreigon", - "636": "Larvesta", - "637": "Volcarona", - "638": "Cobalion", - "639": "Terrakion", - "640": "Virizion", - "641": "Tornadus", - "642": "Thundurus", - "643": "Reshiram", - "644": "Zekrom", - "645": "Landorus", - "646": "Kyurem", - "647": "Keldeo", - "648": "Meloetta", - "649": "Genesect", - "650": "Chespin", - "651": "Quilladin", - "652": "Chesnaught", - "653": "Fennekin", - "654": "Braixen", - "655": "Delphox", - "656": "Froakie", - "657": "Frogadier", - "658": "Greninja", - "659": "Bunnelby", - "660": "Diggersby", - "661": "Fletchling", - "662": "Fletchinder", - "663": "Talonflame", - "664": "Scatterbug", - "665": "Spewpa", - "666": "Vivillon", - "667": "Litleo", - "668": "Pyroar", - "669": "Flab\u00E9b\u00E9", - "670": "Floette", - "671": "Florges", - "672": "Skiddo", - "673": "Gogoat", - "674": "Pancham", - "675": "Pangoro", - "676": "Furfrou", - "677": "Espurr", - "678": "Meowstic", - "679": "Honedge", - "680": "Doublade", - "681": "Aegislash", - "682": "Spritzee", - "683": "Aromatisse", - "684": "Swirlix", - "685": "Slurpuff", - "686": "Inkay", - "687": "Malamar", - "688": "Binacle", - "689": "Barbaracle", - "690": "Skrelp", - "691": "Dragalge", - "692": "Clauncher", - "693": "Clawitzer", - "694": "Helioptile", - "695": "Heliolisk", - "696": "Tyrunt", - "697": "Tyrantrum", - "698": "Amaura", - "699": "Aurorus", - "700": "Sylveon", - "701": "Hawlucha", - "702": "Dedenne", - "703": "Carbink", - "704": "Goomy", - "705": "Sliggoo", - "706": "Goodra", - "707": "Klefki", - "708": "Phantump", - "709": "Trevenant", - "710": "Pumpkaboo", - "711": "Gourgeist", - "712": "Bergmite", - "713": "Avalugg", - "714": "Noibat", - "715": "Noivern", - "716": "Xerneas", - "717": "Yveltal", - "718": "Zygarde", - "719": "Diancie", - "720": "Hoopa", + "001": "Bulbasaur", + "002": "Ivysaur", + "003": "Venusaur", + "004": "Charmander", + "005": "Charmeleon", + "006": "Charizard", + "007": "Squirtle", + "008": "Wartortle", + "009": "Blastoise", + "010": "Caterpie", + "011": "Metapod", + "012": "Butterfree", + "013": "Weedle", + "014": "Kakuna", + "015": "Beedrill", + "016": "Pidgey", + "017": "Pidgeotto", + "018": "Pidgeot", + "019": "Rattata", + "020": "Raticate", + "021": "Spearow", + "022": "Fearow", + "023": "Ekans", + "024": "Arbok", + "025": "Pikachu", + "026": "Raichu", + "027": "Sandshrew", + "028": "Sandslash", + "029": "Nidoran\u2640", + "030": "Nidorina", + "031": "Nidoqueen", + "032": "Nidoran\u2642", + "033": "Nidorino", + "034": "Nidoking", + "035": "Clefairy", + "036": "Clefable", + "037": "Vulpix", + "038": "Ninetales", + "039": "Jigglypuff", + "040": "Wigglytuff", + "041": "Zubat", + "042": "Golbat", + "043": "Oddish", + "044": "Gloom", + "045": "Vileplume", + "046": "Paras", + "047": "Parasect", + "048": "Venonat", + "049": "Venomoth", + "050": "Diglett", + "051": "Dugtrio", + "052": "Meowth", + "053": "Persian", + "054": "Psyduck", + "055": "Golduck", + "056": "Mankey", + "057": "Primeape", + "058": "Growlithe", + "059": "Arcanine", + "060": "Poliwag", + "061": "Poliwhirl", + "062": "Poliwrath", + "063": "Abra", + "064": "Kadabra", + "065": "Alakazam", + "066": "Machop", + "067": "Machoke", + "068": "Machamp", + "069": "Bellsprout", + "070": "Weepinbell", + "071": "Victreebel", + "072": "Tentacool", + "073": "Tentacruel", + "074": "Geodude", + "075": "Graveler", + "076": "Golem", + "077": "Ponyta", + "078": "Rapidash", + "079": "Slowpoke", + "080": "Slowbro", + "081": "Magnemite", + "082": "Magneton", + "083": "Farfetch'd", + "084": "Doduo", + "085": "Dodrio", + "086": "Seel", + "087": "Dewgong", + "088": "Grimer", + "089": "Muk", + "090": "Shellder", + "091": "Cloyster", + "092": "Gastly", + "093": "Haunter", + "094": "Gengar", + "095": "Onix", + "096": "Drowzee", + "097": "Hypno", + "098": "Krabby", + "099": "Kingler", + "100": "Voltorb", + "101": "Electrode", + "102": "Exeggcute", + "103": "Exeggutor", + "104": "Cubone", + "105": "Marowak", + "106": "Hitmonlee", + "107": "Hitmonchan", + "108": "Lickitung", + "109": "Koffing", + "110": "Weezing", + "111": "Rhyhorn", + "112": "Rhydon", + "113": "Chansey", + "114": "Tangela", + "115": "Kangaskhan", + "116": "Horsea", + "117": "Seadra", + "118": "Goldeen", + "119": "Seaking", + "120": "Staryu", + "121": "Starmie", + "122": "Mr. Mime", + "123": "Scyther", + "124": "Jynx", + "125": "Electabuzz", + "126": "Magmar", + "127": "Pinsir", + "128": "Tauros", + "129": "Magikarp", + "130": "Gyarados", + "131": "Lapras", + "132": "Ditto", + "133": "Eevee", + "134": "Vaporeon", + "135": "Jolteon", + "136": "Flareon", + "137": "Porygon", + "138": "Omanyte", + "139": "Omastar", + "140": "Kabuto", + "141": "Kabutops", + "142": "Aerodactyl", + "143": "Snorlax", + "144": "Articuno", + "145": "Zapdos", + "146": "Moltres", + "147": "Dratini", + "148": "Dragonair", + "149": "Dragonite", + "150": "Mewtwo", + "151": "Mew", + "152": "Chikorita", + "153": "Bayleef", + "154": "Meganium", + "155": "Cyndaquil", + "156": "Quilava", + "157": "Typhlosion", + "158": "Totodile", + "159": "Croconaw", + "160": "Feraligatr", + "161": "Sentret", + "162": "Furret", + "163": "Hoothoot", + "164": "Noctowl", + "165": "Ledyba", + "166": "Ledian", + "167": "Spinarak", + "168": "Ariados", + "169": "Crobat", + "170": "Chinchou", + "171": "Lanturn", + "172": "Pichu", + "173": "Cleffa", + "174": "Igglybuff", + "175": "Togepi", + "176": "Togetic", + "177": "Natu", + "178": "Xatu", + "179": "Mareep", + "180": "Flaaffy", + "181": "Ampharos", + "182": "Bellossom", + "183": "Marill", + "184": "Azumarill", + "185": "Sudowoodo", + "186": "Politoed", + "187": "Hoppip", + "188": "Skiploom", + "189": "Jumpluff", + "190": "Aipom", + "191": "Sunkern", + "192": "Sunflora", + "193": "Yanma", + "194": "Wooper", + "195": "Quagsire", + "196": "Espeon", + "197": "Umbreon", + "198": "Murkrow", + "199": "Slowking", + "200": "Misdreavus", + "201": "Unown", + "202": "Wobbuffet", + "203": "Girafarig", + "204": "Pineco", + "205": "Forretress", + "206": "Dunsparce", + "207": "Gligar", + "208": "Steelix", + "209": "Snubbull", + "210": "Granbull", + "211": "Qwilfish", + "212": "Scizor", + "213": "Shuckle", + "214": "Heracross", + "215": "Sneasel", + "216": "Teddiursa", + "217": "Ursaring", + "218": "Slugma", + "219": "Magcargo", + "220": "Swinub", + "221": "Piloswine", + "222": "Corsola", + "223": "Remoraid", + "224": "Octillery", + "225": "Delibird", + "226": "Mantine", + "227": "Skarmory", + "228": "Houndour", + "229": "Houndoom", + "230": "Kingdra", + "231": "Phanpy", + "232": "Donphan", + "233": "Porygon2", + "234": "Stantler", + "235": "Smeargle", + "236": "Tyrogue", + "237": "Hitmontop", + "238": "Smoochum", + "239": "Elekid", + "240": "Magby", + "241": "Miltank", + "242": "Blissey", + "243": "Raikou", + "244": "Entei", + "245": "Suicune", + "246": "Larvitar", + "247": "Pupitar", + "248": "Tyranitar", + "249": "Lugia", + "250": "Ho-Oh", + "251": "Celebi", + "252": "Treecko", + "253": "Grovyle", + "254": "Sceptile", + "255": "Torchic", + "256": "Combusken", + "257": "Blaziken", + "258": "Mudkip", + "259": "Marshtomp", + "260": "Swampert", + "261": "Poochyena", + "262": "Mightyena", + "263": "Zigzagoon", + "264": "Linoone", + "265": "Wurmple", + "266": "Silcoon", + "267": "Beautifly", + "268": "Cascoon", + "269": "Dustox", + "270": "Lotad", + "271": "Lombre", + "272": "Ludicolo", + "273": "Seedot", + "274": "Nuzleaf", + "275": "Shiftry", + "276": "Taillow", + "277": "Swellow", + "278": "Wingull", + "279": "Pelipper", + "280": "Ralts", + "281": "Kirlia", + "282": "Gardevoir", + "283": "Surskit", + "284": "Masquerain", + "285": "Shroomish", + "286": "Breloom", + "287": "Slakoth", + "288": "Vigoroth", + "289": "Slaking", + "290": "Nincada", + "291": "Ninjask", + "292": "Shedinja", + "293": "Whismur", + "294": "Loudred", + "295": "Exploud", + "296": "Makuhita", + "297": "Hariyama", + "298": "Azurill", + "299": "Nosepass", + "300": "Skitty", + "301": "Delcatty", + "302": "Sableye", + "303": "Mawile", + "304": "Aron", + "305": "Lairon", + "306": "Aggron", + "307": "Meditite", + "308": "Medicham", + "309": "Electrike", + "310": "Manectric", + "311": "Plusle", + "312": "Minun", + "313": "Volbeat", + "314": "Illumise", + "315": "Roselia", + "316": "Gulpin", + "317": "Swalot", + "318": "Carvanha", + "319": "Sharpedo", + "320": "Wailmer", + "321": "Wailord", + "322": "Numel", + "323": "Camerupt", + "324": "Torkoal", + "325": "Spoink", + "326": "Grumpig", + "327": "Spinda", + "328": "Trapinch", + "329": "Vibrava", + "330": "Flygon", + "331": "Cacnea", + "332": "Cacturne", + "333": "Swablu", + "334": "Altaria", + "335": "Zangoose", + "336": "Seviper", + "337": "Lunatone", + "338": "Solrock", + "339": "Barboach", + "340": "Whiscash", + "341": "Corphish", + "342": "Crawdaunt", + "343": "Baltoy", + "344": "Claydol", + "345": "Lileep", + "346": "Cradily", + "347": "Anorith", + "348": "Armaldo", + "349": "Feebas", + "350": "Milotic", + "351": "Castform", + "352": "Kecleon", + "353": "Shuppet", + "354": "Banette", + "355": "Duskull", + "356": "Dusclops", + "357": "Tropius", + "358": "Chimecho", + "359": "Absol", + "360": "Wynaut", + "361": "Snorunt", + "362": "Glalie", + "363": "Spheal", + "364": "Sealeo", + "365": "Walrein", + "366": "Clamperl", + "367": "Huntail", + "368": "Gorebyss", + "369": "Relicanth", + "370": "Luvdisc", + "371": "Bagon", + "372": "Shelgon", + "373": "Salamence", + "374": "Beldum", + "375": "Metang", + "376": "Metagross", + "377": "Regirock", + "378": "Regice", + "379": "Registeel", + "380": "Latias", + "381": "Latios", + "382": "Kyogre", + "383": "Groudon", + "384": "Rayquaza", + "385": "Jirachi", + "386": "Deoxys", + "387": "Turtwig", + "388": "Grotle", + "389": "Torterra", + "390": "Chimchar", + "391": "Monferno", + "392": "Infernape", + "393": "Piplup", + "394": "Prinplup", + "395": "Empoleon", + "396": "Starly", + "397": "Staravia", + "398": "Staraptor", + "399": "Bidoof", + "400": "Bibarel", + "401": "Kricketot", + "402": "Kricketune", + "403": "Shinx", + "404": "Luxio", + "405": "Luxray", + "406": "Budew", + "407": "Roserade", + "408": "Cranidos", + "409": "Rampardos", + "410": "Shieldon", + "411": "Bastiodon", + "412": "Burmy", + "413": "Wormadam", + "414": "Mothim", + "415": "Combee", + "416": "Vespiquen", + "417": "Pachirisu", + "418": "Buizel", + "419": "Floatzel", + "420": "Cherubi", + "421": "Cherrim", + "422": "Shellos", + "423": "Gastrodon", + "424": "Ambipom", + "425": "Drifloon", + "426": "Drifblim", + "427": "Buneary", + "428": "Lopunny", + "429": "Mismagius", + "430": "Honchkrow", + "431": "Glameow", + "432": "Purugly", + "433": "Chingling", + "434": "Stunky", + "435": "Skuntank", + "436": "Bronzor", + "437": "Bronzong", + "438": "Bonsly", + "439": "Mime Jr.", + "440": "Happiny", + "441": "Chatot", + "442": "Spiritomb", + "443": "Gible", + "444": "Gabite", + "445": "Garchomp", + "446": "Munchlax", + "447": "Riolu", + "448": "Lucario", + "449": "Hippopotas", + "450": "Hippowdon", + "451": "Skorupi", + "452": "Drapion", + "453": "Croagunk", + "454": "Toxicroak", + "455": "Carnivine", + "456": "Finneon", + "457": "Lumineon", + "458": "Mantyke", + "459": "Snover", + "460": "Abomasnow", + "461": "Weavile", + "462": "Magnezone", + "463": "Lickilicky", + "464": "Rhyperior", + "465": "Tangrowth", + "466": "Electivire", + "467": "Magmortar", + "468": "Togekiss", + "469": "Yanmega", + "470": "Leafeon", + "471": "Glaceon", + "472": "Gliscor", + "473": "Mamoswine", + "474": "Porygon-Z", + "475": "Gallade", + "476": "Probopass", + "477": "Dusknoir", + "478": "Froslass", + "479": "Rotom", + "480": "Uxie", + "481": "Mesprit", + "482": "Azelf", + "483": "Dialga", + "484": "Palkia", + "485": "Heatran", + "486": "Regigigas", + "487": "Giratina", + "488": "Cresselia", + "489": "Phione", + "490": "Manaphy", + "491": "Darkrai", + "492": "Shaymin", + "493": "Arceus", + "494": "Victini", + "495": "Snivy", + "496": "Servine", + "497": "Serperior", + "498": "Tepig", + "499": "Pignite", + "500": "Emboar", + "501": "Oshawott", + "502": "Dewott", + "503": "Samurott", + "504": "Patrat", + "505": "Watchog", + "506": "Lillipup", + "507": "Herdier", + "508": "Stoutland", + "509": "Purrloin", + "510": "Liepard", + "511": "Pansage", + "512": "Simisage", + "513": "Pansear", + "514": "Simisear", + "515": "Panpour", + "516": "Simipour", + "517": "Munna", + "518": "Musharna", + "519": "Pidove", + "520": "Tranquill", + "521": "Unfezant", + "522": "Blitzle", + "523": "Zebstrika", + "524": "Roggenrola", + "525": "Boldore", + "526": "Gigalith", + "527": "Woobat", + "528": "Swoobat", + "529": "Drilbur", + "530": "Excadrill", + "531": "Audino", + "532": "Timburr", + "533": "Gurdurr", + "534": "Conkeldurr", + "535": "Tympole", + "536": "Palpitoad", + "537": "Seismitoad", + "538": "Throh", + "539": "Sawk", + "540": "Sewaddle", + "541": "Swadloon", + "542": "Leavanny", + "543": "Venipede", + "544": "Whirlipede", + "545": "Scolipede", + "546": "Cottonee", + "547": "Whimsicott", + "548": "Petilil", + "549": "Lilligant", + "550": "Basculin", + "551": "Sandile", + "552": "Krokorok", + "553": "Krookodile", + "554": "Darumaka", + "555": "Darmanitan", + "556": "Maractus", + "557": "Dwebble", + "558": "Crustle", + "559": "Scraggy", + "560": "Scrafty", + "561": "Sigilyph", + "562": "Yamask", + "563": "Cofagrigus", + "564": "Tirtouga", + "565": "Carracosta", + "566": "Archen", + "567": "Archeops", + "568": "Trubbish", + "569": "Garbodor", + "570": "Zorua", + "571": "Zoroark", + "572": "Minccino", + "573": "Cinccino", + "574": "Gothita", + "575": "Gothorita", + "576": "Gothitelle", + "577": "Solosis", + "578": "Duosion", + "579": "Reuniclus", + "580": "Ducklett", + "581": "Swanna", + "582": "Vanillite", + "583": "Vanillish", + "584": "Vanilluxe", + "585": "Deerling", + "586": "Sawsbuck", + "587": "Emolga", + "588": "Karrablast", + "589": "Escavalier", + "590": "Foongus", + "591": "Amoonguss", + "592": "Frillish", + "593": "Jellicent", + "594": "Alomomola", + "595": "Joltik", + "596": "Galvantula", + "597": "Ferroseed", + "598": "Ferrothorn", + "599": "Klink", + "600": "Klang", + "601": "Klinklang", + "602": "Tynamo", + "603": "Eelektrik", + "604": "Eelektross", + "605": "Elgyem", + "606": "Beheeyem", + "607": "Litwick", + "608": "Lampent", + "609": "Chandelure", + "610": "Axew", + "611": "Fraxure", + "612": "Haxorus", + "613": "Cubchoo", + "614": "Beartic", + "615": "Cryogonal", + "616": "Shelmet", + "617": "Accelgor", + "618": "Stunfisk", + "619": "Mienfoo", + "620": "Mienshao", + "621": "Druddigon", + "622": "Golett", + "623": "Golurk", + "624": "Pawniard", + "625": "Bisharp", + "626": "Bouffalant", + "627": "Rufflet", + "628": "Braviary", + "629": "Vullaby", + "630": "Mandibuzz", + "631": "Heatmor", + "632": "Durant", + "633": "Deino", + "634": "Zweilous", + "635": "Hydreigon", + "636": "Larvesta", + "637": "Volcarona", + "638": "Cobalion", + "639": "Terrakion", + "640": "Virizion", + "641": "Tornadus", + "642": "Thundurus", + "643": "Reshiram", + "644": "Zekrom", + "645": "Landorus", + "646": "Kyurem", + "647": "Keldeo", + "648": "Meloetta", + "649": "Genesect", + "650": "Chespin", + "651": "Quilladin", + "652": "Chesnaught", + "653": "Fennekin", + "654": "Braixen", + "655": "Delphox", + "656": "Froakie", + "657": "Frogadier", + "658": "Greninja", + "659": "Bunnelby", + "660": "Diggersby", + "661": "Fletchling", + "662": "Fletchinder", + "663": "Talonflame", + "664": "Scatterbug", + "665": "Spewpa", + "666": "Vivillon", + "667": "Litleo", + "668": "Pyroar", + "669": "Flab\u00e9b\u00e9", + "670": "Floette", + "671": "Florges", + "672": "Skiddo", + "673": "Gogoat", + "674": "Pancham", + "675": "Pangoro", + "676": "Furfrou", + "677": "Espurr", + "678": "Meowstic", + "679": "Honedge", + "680": "Doublade", + "681": "Aegislash", + "682": "Spritzee", + "683": "Aromatisse", + "684": "Swirlix", + "685": "Slurpuff", + "686": "Inkay", + "687": "Malamar", + "688": "Binacle", + "689": "Barbaracle", + "690": "Skrelp", + "691": "Dragalge", + "692": "Clauncher", + "693": "Clawitzer", + "694": "Helioptile", + "695": "Heliolisk", + "696": "Tyrunt", + "697": "Tyrantrum", + "698": "Amaura", + "699": "Aurorus", + "700": "Sylveon", + "701": "Hawlucha", + "702": "Dedenne", + "703": "Carbink", + "704": "Goomy", + "705": "Sliggoo", + "706": "Goodra", + "707": "Klefki", + "708": "Phantump", + "709": "Trevenant", + "710": "Pumpkaboo", + "711": "Gourgeist", + "712": "Bergmite", + "713": "Avalugg", + "714": "Noibat", + "715": "Noivern", + "716": "Xerneas", + "717": "Yveltal", + "718": "Zygarde", + "719": "Diancie", + "720": "Hoopa", "721": "Volcanion" - }, - "misc": { - "boosted": "boosted" + }, + "sizes": { + "001": "tiny", + "002": "small", + "003": "normal", + "004": "large", + "005": "big" + }, + "teams": { + "000": "Neutral", + "001": "Mystic", + "002": "Valor", + "003": "Instinct" + }, + "types": { + "001": "Normal", + "002": "Fighting", + "003": "Flying", + "004": "Poison", + "005": "Ground", + "006": "Rock", + "007": "Bug", + "008": "Ghost", + "009": "Steel", + "010": "Fire", + "011": "Water", + "012": "Grass", + "013": "Electric", + "014": "Psychic", + "015": "Ice", + "016": "Dragon", + "017": "Fairy", + "018": "Dark" + }, + "weather": { + "000": "None", + "001": "Clear", + "002": "Rain", + "003": "Partly Cloudy", + "004": "Cloudy", + "005": "Windy", + "006": "Snow", + "007": "Fog" } -} +} \ No newline at end of file diff --git a/locales/es.json b/locales/es.json index 2dba30143..3ad9fdb5a 100644 --- a/locales/es.json +++ b/locales/es.json @@ -1,981 +1,981 @@ { - "leaders": { - "0": "Profesor Willow", - "1": "Blanche", - "2": "Candela", - "3": "Spark" - }, - "sizes": { - "1": "diminuto", - "2": "peque\u00F1o", - "3": "normal", - "4": "grande", - "5": "enorme" - }, "costumes": { - "25": { - "1": "Gorra festiva", - "2": "Gorra de Fiesta", - "3": "Gorra de Ash", - "4": "Sombrero de Bruja" - }, - "26": { - "1": "Gorra festiva", - "2": "Gorra de Fiesta", - "3": "Gorra de Ash", - "4": "Sombrero de Bruja" - }, + "025": { + "001": "Gorra festiva", + "002": "Gorra de Fiesta", + "003": "Gorra de Ash", + "004": "Sombrero de Bruja" + }, + "026": { + "001": "Gorra festiva", + "002": "Gorra de Fiesta", + "003": "Gorra de Ash", + "004": "Sombrero de Bruja" + }, "172": { - "1": "Gorra festiva", - "2": "Gorra de Fiesta", - "3": "Gorra de Ash", - "4": "Sombrero de Bruja" + "001": "Gorra festiva", + "002": "Gorra de Fiesta", + "003": "Gorra de Ash", + "004": "Sombrero de Bruja" } - }, - "types": { - "1": "Normal", - "2": "Lucha", - "3": "Volador", - "4": "Veneno", - "5": "Tierra", - "6": "Roca", - "7": "Bicho", - "8": "Fantasma", - "9": "Acero", - "10": "Fuego", - "11": "Agua", - "12": "Planta", - "13": "El\u00E9ctrico", - "14": "Ps\u00EDquico", - "15": "Hielo", - "16": "Drag\u00F3n", - "17": "Hada", - "18": "Siniestro" - }, + }, + "leaders": { + "000": "Profesor Willow", + "001": "Blanche", + "002": "Candela", + "003": "Spark" + }, + "misc": { + "boosted": "potenciado" + }, "moves": { - "13": "Constricci\u00f3n", - "14": "Hiperrayo", - "16": "Pulso Umbr\u00edo", - "18": "Residuos", - "20": "Agarre", - "21": "Rueda Fuego", - "22": "Megacuerno", - "24": "Lanzallamas", - "26": "Excavar", - "28": "Tajo Cruzado", - "30": "Psicorrayo", - "31": "Terremoto", - "32": "Roca Afilada", - "33": "Pu\u00f1o Hielo", - "34": "Arrumaco", - "35": "Chispazo", - "36": "Foco Resplandor", - "38": "Pico Taladro", - "39": "Rayo Hielo", - "40": "Ventisca", - "42": "Onda \u00cdgnea", - "45": "Golpe A\u00e9reo", - "46": "Taladradora", - "47": "Tormenta Floral", - "48": "Megaagotar", - "49": "Zumbido", - "50": "Colmillo Veneno", - "51": "Tajo Umbr\u00edo", - "53": "Rayo Burbuja", - "54": "Sumisi\u00f3n", - "56": "Puntapi\u00e9", - "57": "Acua Jet", - "58": "Acua Cola", - "59": "Bomba Germen", - "60": "Psicocarga", - "62": "Poder Pasado", - "63": "Tumba Rocas", - "64": "Avalancha", - "65": "Joya de Luz", - "66": "Sombra Vil", - "67": "Pu\u00f1o Sombra", - "69": "Viento Aciago", - "70": "Bola Sombra", - "72": "Bomba Im\u00e1n", - "74": "Cabeza de Hierro", - "75": "Carga Par\u00e1bola", - "77": "Pu\u00f1o Trueno", - "78": "Trueno", - "79": "Rayo", - "80": "Cicl\u00f3n", - "82": "Pulso Drag\u00f3n", - "83": "Garra Drag\u00f3n", - "84": "Voz Cautivadora", - "85": "Beso Drenaje", - "86": "Brillo M\u00e1gico", - "87": "Fuerza Lunar", - "88": "Caranto\u00f1a", - "89": "Veneno X", - "90": "Bomba Lodo", - "91": "Onda T\u00f3xica", - "92": "Lanza Mugre", - "94": "Hueso Palo", - "95": "Terratemblor", - "96": "Bomba Fango", - "99": "Doble Rayo", - "100": "Tijera X", - "101": "Nitrocarga", - "102": "Pirotecnia", - "103": "Llamarada", - "104": "Salmuera", - "105": "Hidropulso", - "106": "Escaldar", - "107": "Hidrobomba", - "108": "Ps\u00edquico", - "109": "Onda Mental", - "111": "Viento Hielo", - "114": "Gigadrenado", - "115": "Pu\u00f1o Fuego", - "116": "Rayo Solar", - "117": "Hoja Aguda", - "118": "Latigazo", - "121": "Aire Afilado", - "122": "Vendaval", - "123": "Demolici\u00f3n", - "125": "Rapidez", - "126": "Cornada", - "127": "Pisot\u00f3n", - "129": "Hipercolmillo", - "131": "Golpe Cuerpo", - "132": "Descanso", - "133": "Combate", - "200": "Corte Furia", - "201": "Picadura", - "202": "Mordisco", - "203": "Golpe Bajo", - "204": "Dragoaliento", - "205": "Impactrueno", - "206": "Chispa", - "207": "Patada Baja", - "208": "Golpe K\u00e1rate", - "209": "Ascuas", - "210": "Ataque Ala", - "211": "Picotazo", - "212": "Leng\u00fcetazo", - "213": "Garra Umbr\u00eda", - "214": "L\u00e1tigo Cepa", - "215": "Hoja Afilada", - "216": "Disparo Lodo", - "217": "Canto Helado", - "218": "Vaho G\u00e9lido", - "219": "Ataque R\u00e1pido", - "220": "Ara\u00f1azo", - "221": "Placaje", - "222": "Destructor", - "223": "Corte", - "224": "Puya Nociva", - "225": "\u00c1cido", - "226": "Psicocorte", - "227": "Lanzarrocas", - "228": "Garra Metal", - "229": "Pu\u00f1o Bala", - "230": "Pistola Agua", - "231": "Salpicadura", - "233": "Bofet\u00f3n Lodo", - "234": "Cabezazo Zen", - "235": "Confusi\u00f3n", - "236": "Picotazo Veneno", - "237": "Burbuja", - "238": "Finta", - "239": "Ala de Acero", - "240": "Colmillo \u00cdgneo", - "241": "Golpe Roca", - "242": "Transformaci\u00f3n", - "243": "Contraataque", - "244": "Nieve Polvo", - "245": "A Bocajarro", - "246": "Pu\u00f1o Din\u00e1mico", - "247": "Onda Certera", - "248": "Rayo Aurora", - "249": "Rayo Carga", - "250": "Voltiocambio", - "251": "Voltio Cruel", - "252": "Electroca\u00f1\u00f3n", - "253": "Cola Drag\u00f3n", - "254": "Alud", - "255": "Tajo A\u00e9reo", - "256": "P\u00e1jaro Osado", - "257": "Ataque A\u00e9reo", - "258": "Bucle Arena", - "259": "Pedrada", - "260": "Acoso", - "261": "Estoicismo", - "262": "Viento Plata", - "263": "Impresionar", - "264": "Infortunio", - "265": "Tinieblas", - "266": "Cola F\u00e9rrea", - "267": "Giro Bola", - "268": "Cuerpo Pesado", - "269": "Giro Fuego", - "270": "Sofoco", - "271": "Recurrente", - "272": "Hierba Lazo", - "273": "Energibola", - "274": "Paranormal", - "275": "Premonici\u00f3n", - "276": "Manto Espejo", - "277": "Enfado", - "278": "Alarido", - "279": "Triturar", - "280": "Juego Sucio", - "281": "Poder Oculto", - "282": "Derribo", - "283": "Cascada", - "284": "Surf", - "285": "Cometa Draco", - "286": "Deseo Oculto", - "287": "Bostezo", - "288": "Psicoataque", - "289": "Pulso Primigenio", - "290": "Filo del Abismo", + "013": "Constricci\u00f3n", + "014": "Hiperrayo", + "016": "Pulso Umbr\u00edo", + "018": "Residuos", + "020": "Agarre", + "021": "Rueda Fuego", + "022": "Megacuerno", + "024": "Lanzallamas", + "026": "Excavar", + "028": "Tajo Cruzado", + "030": "Psicorrayo", + "031": "Terremoto", + "032": "Roca Afilada", + "033": "Pu\u00f1o Hielo", + "034": "Arrumaco", + "035": "Chispazo", + "036": "Foco Resplandor", + "038": "Pico Taladro", + "039": "Rayo Hielo", + "040": "Ventisca", + "042": "Onda \u00cdgnea", + "045": "Golpe A\u00e9reo", + "046": "Taladradora", + "047": "Tormenta Floral", + "048": "Megaagotar", + "049": "Zumbido", + "050": "Colmillo Veneno", + "051": "Tajo Umbr\u00edo", + "053": "Rayo Burbuja", + "054": "Sumisi\u00f3n", + "056": "Puntapi\u00e9", + "057": "Acua Jet", + "058": "Acua Cola", + "059": "Bomba Germen", + "060": "Psicocarga", + "062": "Poder Pasado", + "063": "Tumba Rocas", + "064": "Avalancha", + "065": "Joya de Luz", + "066": "Sombra Vil", + "067": "Pu\u00f1o Sombra", + "069": "Viento Aciago", + "070": "Bola Sombra", + "072": "Bomba Im\u00e1n", + "074": "Cabeza de Hierro", + "075": "Carga Par\u00e1bola", + "077": "Pu\u00f1o Trueno", + "078": "Trueno", + "079": "Rayo", + "080": "Cicl\u00f3n", + "082": "Pulso Drag\u00f3n", + "083": "Garra Drag\u00f3n", + "084": "Voz Cautivadora", + "085": "Beso Drenaje", + "086": "Brillo M\u00e1gico", + "087": "Fuerza Lunar", + "088": "Caranto\u00f1a", + "089": "Veneno X", + "090": "Bomba Lodo", + "091": "Onda T\u00f3xica", + "092": "Lanza Mugre", + "094": "Hueso Palo", + "095": "Terratemblor", + "096": "Bomba Fango", + "099": "Doble Rayo", + "100": "Tijera X", + "101": "Nitrocarga", + "102": "Pirotecnia", + "103": "Llamarada", + "104": "Salmuera", + "105": "Hidropulso", + "106": "Escaldar", + "107": "Hidrobomba", + "108": "Ps\u00edquico", + "109": "Onda Mental", + "111": "Viento Hielo", + "114": "Gigadrenado", + "115": "Pu\u00f1o Fuego", + "116": "Rayo Solar", + "117": "Hoja Aguda", + "118": "Latigazo", + "121": "Aire Afilado", + "122": "Vendaval", + "123": "Demolici\u00f3n", + "125": "Rapidez", + "126": "Cornada", + "127": "Pisot\u00f3n", + "129": "Hipercolmillo", + "131": "Golpe Cuerpo", + "132": "Descanso", + "133": "Combate", + "200": "Corte Furia", + "201": "Picadura", + "202": "Mordisco", + "203": "Golpe Bajo", + "204": "Dragoaliento", + "205": "Impactrueno", + "206": "Chispa", + "207": "Patada Baja", + "208": "Golpe K\u00e1rate", + "209": "Ascuas", + "210": "Ataque Ala", + "211": "Picotazo", + "212": "Leng\u00fcetazo", + "213": "Garra Umbr\u00eda", + "214": "L\u00e1tigo Cepa", + "215": "Hoja Afilada", + "216": "Disparo Lodo", + "217": "Canto Helado", + "218": "Vaho G\u00e9lido", + "219": "Ataque R\u00e1pido", + "220": "Ara\u00f1azo", + "221": "Placaje", + "222": "Destructor", + "223": "Corte", + "224": "Puya Nociva", + "225": "\u00c1cido", + "226": "Psicocorte", + "227": "Lanzarrocas", + "228": "Garra Metal", + "229": "Pu\u00f1o Bala", + "230": "Pistola Agua", + "231": "Salpicadura", + "233": "Bofet\u00f3n Lodo", + "234": "Cabezazo Zen", + "235": "Confusi\u00f3n", + "236": "Picotazo Veneno", + "237": "Burbuja", + "238": "Finta", + "239": "Ala de Acero", + "240": "Colmillo \u00cdgneo", + "241": "Golpe Roca", + "242": "Transformaci\u00f3n", + "243": "Contraataque", + "244": "Nieve Polvo", + "245": "A Bocajarro", + "246": "Pu\u00f1o Din\u00e1mico", + "247": "Onda Certera", + "248": "Rayo Aurora", + "249": "Rayo Carga", + "250": "Voltiocambio", + "251": "Voltio Cruel", + "252": "Electroca\u00f1\u00f3n", + "253": "Cola Drag\u00f3n", + "254": "Alud", + "255": "Tajo A\u00e9reo", + "256": "P\u00e1jaro Osado", + "257": "Ataque A\u00e9reo", + "258": "Bucle Arena", + "259": "Pedrada", + "260": "Acoso", + "261": "Estoicismo", + "262": "Viento Plata", + "263": "Impresionar", + "264": "Infortunio", + "265": "Tinieblas", + "266": "Cola F\u00e9rrea", + "267": "Giro Bola", + "268": "Cuerpo Pesado", + "269": "Giro Fuego", + "270": "Sofoco", + "271": "Recurrente", + "272": "Hierba Lazo", + "273": "Energibola", + "274": "Paranormal", + "275": "Premonici\u00f3n", + "276": "Manto Espejo", + "277": "Enfado", + "278": "Alarido", + "279": "Triturar", + "280": "Juego Sucio", + "281": "Poder Oculto", + "282": "Derribo", + "283": "Cascada", + "284": "Surf", + "285": "Cometa Draco", + "286": "Deseo Oculto", + "287": "Bostezo", + "288": "Psicoataque", + "289": "Pulso Primigenio", + "290": "Filo del Abismo", "291": "Presente" - }, + }, "pokemon": { - "1": "Bulbasaur", - "2": "Ivysaur", - "3": "Venusaur", - "4": "Charmander", - "5": "Charmeleon", - "6": "Charizard", - "7": "Squirtle", - "8": "Wartortle", - "9": "Blastoise", - "10": "Caterpie", - "11": "Metapod", - "12": "Butterfree", - "13": "Weedle", - "14": "Kakuna", - "15": "Beedrill", - "16": "Pidgey", - "17": "Pidgeotto", - "18": "Pidgeot", - "19": "Rattata", - "20": "Raticate", - "21": "Spearow", - "22": "Fearow", - "23": "Ekans", - "24": "Arbok", - "25": "Pikachu", - "26": "Raichu", - "27": "Sandshrew", - "28": "Sandslash", - "29": "Nidoran♀", - "30": "Nidorina", - "31": "Nidoqueen", - "32": "Nidoran♂", - "33": "Nidorino", - "34": "Nidoking", - "35": "Clefairy", - "36": "Clefable", - "37": "Vulpix", - "38": "Ninetales", - "39": "Jigglypuff", - "40": "Wigglytuff", - "41": "Zubat", - "42": "Golbat", - "43": "Oddish", - "44": "Gloom", - "45": "Vileplume", - "46": "Paras", - "47": "Parasect", - "48": "Venonat", - "49": "Venomoth", - "50": "Diglett", - "51": "Dugtrio", - "52": "Meowth", - "53": "Persian", - "54": "Psyduck", - "55": "Golduck", - "56": "Mankey", - "57": "Primeape", - "58": "Growlithe", - "59": "Arcanine", - "60": "Poliwag", - "61": "Poliwhirl", - "62": "Poliwrath", - "63": "Abra", - "64": "Kadabra", - "65": "Alakazam", - "66": "Machop", - "67": "Machoke", - "68": "Machamp", - "69": "Bellsprout", - "70": "Weepinbell", - "71": "Victreebel", - "72": "Tentacool", - "73": "Tentacruel", - "74": "Geodude", - "75": "Graveler", - "76": "Golem", - "77": "Ponyta", - "78": "Rapidash", - "79": "Slowpoke", - "80": "Slowbro", - "81": "Magnemite", - "82": "Magneton", - "83": "Farfetch'd", - "84": "Doduo", - "85": "Dodrio", - "86": "Seel", - "87": "Dewgong", - "88": "Grimer", - "89": "Muk", - "90": "Shellder", - "91": "Cloyster", - "92": "Gastly", - "93": "Haunter", - "94": "Gengar", - "95": "Onix", - "96": "Drowzee", - "97": "Hypno", - "98": "Krabby", - "99": "Kingler", - "100": "Voltorb", - "101": "Electrode", - "102": "Exeggcute", - "103": "Exeggutor", - "104": "Cubone", - "105": "Marowak", - "106": "Hitmonlee", - "107": "Hitmonchan", - "108": "Lickitung", - "109": "Koffing", - "110": "Weezing", - "111": "Rhyhorn", - "112": "Rhydon", - "113": "Chansey", - "114": "Tangela", - "115": "Kangaskhan", - "116": "Horsea", - "117": "Seadra", - "118": "Goldeen", - "119": "Seaking", - "120": "Staryu", - "121": "Starmie", - "122": "Mr. Mime", - "123": "Scyther", - "124": "Jynx", - "125": "Electabuzz", - "126": "Magmar", - "127": "Pinsir", - "128": "Tauros", - "129": "Magikarp", - "130": "Gyarados", - "131": "Lapras", - "132": "Ditto", - "133": "Eevee", - "134": "Vaporeon", - "135": "Jolteon", - "136": "Flareon", - "137": "Porygon", - "138": "Omanyte", - "139": "Omastar", - "140": "Kabuto", - "141": "Kabutops", - "142": "Aerodactyl", - "143": "Snorlax", - "144": "Articuno", - "145": "Zapdos", - "146": "Moltres", - "147": "Dratini", - "148": "Dragonair", - "149": "Dragonite", - "150": "Mewtwo", - "151": "Mew", - "152": "Chikorita", - "153": "Bayleef", - "154": "Meganium", - "155": "Cyndaquil", - "156": "Quilava", - "157": "Typhlosion", - "158": "Totodile", - "159": "Croconaw", - "160": "Feraligatr", - "161": "Sentret", - "162": "Furret", - "163": "Hoothoot", - "164": "Noctowl", - "165": "Ledyba", - "166": "Ledian", - "167": "Spinarak", - "168": "Ariados", - "169": "Crobat", - "170": "Chinchou", - "171": "Lanturn", - "172": "Pichu", - "173": "Cleffa", - "174": "Igglybuff", - "175": "Togepi", - "176": "Togetic", - "177": "Natu", - "178": "Xatu", - "179": "Mareep", - "180": "Flaaffy", - "181": "Ampharos", - "182": "Bellossom", - "183": "Marill", - "184": "Azumarill", - "185": "Sudowoodo", - "186": "Politoed", - "187": "Hoppip", - "188": "Skiploom", - "189": "Jumpluff", - "190": "Aipom", - "191": "Sunkern", - "192": "Sunflora", - "193": "Yanma", - "194": "Wooper", - "195": "Quagsire", - "196": "Espeon", - "197": "Umbreon", - "198": "Murkrow", - "199": "Slowking", - "200": "Misdreavus", - "201": "Unown", - "202": "Wobbuffet", - "203": "Girafarig", - "204": "Pineco", - "205": "Forretress", - "206": "Dunsparce", - "207": "Gligar", - "208": "Steelix", - "209": "Snubbull", - "210": "Granbull", - "211": "Qwilfish", - "212": "Scizor", - "213": "Shuckle", - "214": "Heracross", - "215": "Sneasel", - "216": "Teddiursa", - "217": "Ursaring", - "218": "Slugma", - "219": "Magcargo", - "220": "Swinub", - "221": "Piloswine", - "222": "Corsola", - "223": "Remoraid", - "224": "Octillery", - "225": "Delibird", - "226": "Mantine", - "227": "Skarmory", - "228": "Houndour", - "229": "Houndoom", - "230": "Kingdra", - "231": "Phanpy", - "232": "Donphan", - "233": "Porygon2", - "234": "Stantler", - "235": "Smeargle", - "236": "Tyrogue", - "237": "Hitmontop", - "238": "Smoochum", - "239": "Elekid", - "240": "Magby", - "241": "Miltank", - "242": "Blissey", - "243": "Raikou", - "244": "Entei", - "245": "Suicune", - "246": "Larvitar", - "247": "Pupitar", - "248": "Tyranitar", - "249": "Lugia", - "250": "Ho-Oh", - "251": "Celebi", - "252": "Treecko", - "253": "Grovyle", - "254": "Sceptile", - "255": "Torchic", - "256": "Combusken", - "257": "Blaziken", - "258": "Mudkip", - "259": "Marshtomp", - "260": "Swampert", - "261": "Poochyena", - "262": "Mightyena", - "263": "Zigzagoon", - "264": "Linoone", - "265": "Wurmple", - "266": "Silcoon", - "267": "Beautifly", - "268": "Cascoon", - "269": "Dustox", - "270": "Lotad", - "271": "Lombre", - "272": "Ludicolo", - "273": "Seedot", - "274": "Nuzleaf", - "275": "Shiftry", - "276": "Taillow", - "277": "Swellow", - "278": "Wingull", - "279": "Pelipper", - "280": "Ralts", - "281": "Kirlia", - "282": "Gardevoir", - "283": "Surskit", - "284": "Masquerain", - "285": "Shroomish", - "286": "Breloom", - "287": "Slakoth", - "288": "Vigoroth", - "289": "Slaking", - "290": "Nincada", - "291": "Ninjask", - "292": "Shedinja", - "293": "Whismur", - "294": "Loudred", - "295": "Exploud", - "296": "Makuhita", - "297": "Hariyama", - "298": "Azurill", - "299": "Nosepass", - "300": "Skitty", - "301": "Delcatty", - "302": "Sableye", - "303": "Mawile", - "304": "Aron", - "305": "Lairon", - "306": "Aggron", - "307": "Meditite", - "308": "Medicham", - "309": "Electrike", - "310": "Manectric", - "311": "Plusle", - "312": "Minun", - "313": "Volbeat", - "314": "Illumise", - "315": "Roselia", - "316": "Gulpin", - "317": "Swalot", - "318": "Carvanha", - "319": "Sharpedo", - "320": "Wailmer", - "321": "Wailord", - "322": "Numel", - "323": "Camerupt", - "324": "Torkoal", - "325": "Spoink", - "326": "Grumpig", - "327": "Spinda", - "328": "Trapinch", - "329": "Vibrava", - "330": "Flygon", - "331": "Cacnea", - "332": "Cacturne", - "333": "Swablu", - "334": "Altaria", - "335": "Zangoose", - "336": "Seviper", - "337": "Lunatone", - "338": "Solrock", - "339": "Barboach", - "340": "Whiscash", - "341": "Corphish", - "342": "Crawdaunt", - "343": "Baltoy", - "344": "Claydol", - "345": "Lileep", - "346": "Cradily", - "347": "Anorith", - "348": "Armaldo", - "349": "Feebas", - "350": "Milotic", - "351": "Castform", - "352": "Kecleon", - "353": "Shuppet", - "354": "Banette", - "355": "Duskull", - "356": "Dusclops", - "357": "Tropius", - "358": "Chimecho", - "359": "Absol", - "360": "Wynaut", - "361": "Snorunt", - "362": "Glalie", - "363": "Spheal", - "364": "Sealeo", - "365": "Walrein", - "366": "Clamperl", - "367": "Huntail", - "368": "Gorebyss", - "369": "Relicanth", - "370": "Luvdisc", - "371": "Bagon", - "372": "Shelgon", - "373": "Salamence", - "374": "Beldum", - "375": "Metang", - "376": "Metagross", - "377": "Regirock", - "378": "Regice", - "379": "Registeel", - "380": "Latias", - "381": "Latios", - "382": "Kyogre", - "383": "Groudon", - "384": "Rayquaza", - "385": "Jirachi", - "386": "Deoxys", - "387": "Turtwig", - "388": "Grotle", - "389": "Torterra", - "390": "Chimchar", - "391": "Monferno", - "392": "Infernape", - "393": "Piplup", - "394": "Prinplup", - "395": "Empoleon", - "396": "Starly", - "397": "Staravia", - "398": "Staraptor", - "399": "Bidoof", - "400": "Bibarel", - "401": "Kricketot", - "402": "Kricketune", - "403": "Shinx", - "404": "Luxio", - "405": "Luxray", - "406": "Budew", - "407": "Roserade", - "408": "Cranidos", - "409": "Rampardos", - "410": "Shieldon", - "411": "Bastiodon", - "412": "Burmy", - "413": "Wormadam", - "414": "Mothim", - "415": "Combee", - "416": "Vespiquen", - "417": "Pachirisu", - "418": "Buizel", - "419": "Floatzel", - "420": "Cherubi", - "421": "Cherrim", - "422": "Shellos", - "423": "Gastrodon", - "424": "Ambipom", - "425": "Drifloon", - "426": "Drifblim", - "427": "Buneary", - "428": "Lopunny", - "429": "Mismagius", - "430": "Honchkrow", - "431": "Glameow", - "432": "Purugly", - "433": "Chingling", - "434": "Stunky", - "435": "Skuntank", - "436": "Bronzor", - "437": "Bronzong", - "438": "Bonsly", - "439": "Mime Jr.", - "440": "Happiny", - "441": "Chatot", - "442": "Spiritomb", - "443": "Gible", - "444": "Gabite", - "445": "Garchomp", - "446": "Munchlax", - "447": "Riolu", - "448": "Lucario", - "449": "Hippopotas", - "450": "Hippowdon", - "451": "Skorupi", - "452": "Drapion", - "453": "Croagunk", - "454": "Toxicroak", - "455": "Carnivine", - "456": "Finneon", - "457": "Lumineon", - "458": "Mantyke", - "459": "Snover", - "460": "Abomasnow", - "461": "Weavile", - "462": "Magnezone", - "463": "Lickilicky", - "464": "Rhyperior", - "465": "Tangrowth", - "466": "Electivire", - "467": "Magmortar", - "468": "Togekiss", - "469": "Yanmega", - "470": "Leafeon", - "471": "Glaceon", - "472": "Gliscor", - "473": "Mamoswine", - "474": "Porygon-Z", - "475": "Gallade", - "476": "Probopass", - "477": "Dusknoir", - "478": "Froslass", - "479": "Rotom", - "480": "Uxie", - "481": "Mesprit", - "482": "Azelf", - "483": "Dialga", - "484": "Palkia", - "485": "Heatran", - "486": "Regigigas", - "487": "Giratina", - "488": "Cresselia", - "489": "Phione", - "490": "Manaphy", - "491": "Darkrai", - "492": "Shaymin", - "493": "Arceus", - "494": "Victini", - "495": "Snivy", - "496": "Servine", - "497": "Serperior", - "498": "Tepig", - "499": "Pignite", - "500": "Emboar", - "501": "Oshawott", - "502": "Dewott", - "503": "Samurott", - "504": "Patrat", - "505": "Watchog", - "506": "Lillipup", - "507": "Herdier", - "508": "Stoutland", - "509": "Purrloin", - "510": "Liepard", - "511": "Pansage", - "512": "Simisage", - "513": "Pansear", - "514": "Simisear", - "515": "Panpour", - "516": "Simipour", - "517": "Munna", - "518": "Musharna", - "519": "Pidove", - "520": "Tranquill", - "521": "Unfezant", - "522": "Blitzle", - "523": "Zebstrika", - "524": "Roggenrola", - "525": "Boldore", - "526": "Gigalith", - "527": "Woobat", - "528": "Swoobat", - "529": "Drilbur", - "530": "Excadrill", - "531": "Audino", - "532": "Timburr", - "533": "Gurdurr", - "534": "Conkeldurr", - "535": "Tympole", - "536": "Palpitoad", - "537": "Seismitoad", - "538": "Throh", - "539": "Sawk", - "540": "Sewaddle", - "541": "Swadloon", - "542": "Leavanny", - "543": "Venipede", - "544": "Whirlipede", - "545": "Scolipede", - "546": "Cottonee", - "547": "Whimsicott", - "548": "Petilil", - "549": "Lilligant", - "550": "Basculin", - "551": "Sandile", - "552": "Krokorok", - "553": "Krookodile", - "554": "Darumaka", - "555": "Darmanitan", - "556": "Maractus", - "557": "Dwebble", - "558": "Crustle", - "559": "Scraggy", - "560": "Scrafty", - "561": "Sigilyph", - "562": "Yamask", - "563": "Cofagrigus", - "564": "Tirtouga", - "565": "Carracosta", - "566": "Archen", - "567": "Archeops", - "568": "Trubbish", - "569": "Garbodor", - "570": "Zorua", - "571": "Zoroark", - "572": "Minccino", - "573": "Cinccino", - "574": "Gothita", - "575": "Gothorita", - "576": "Gothitelle", - "577": "Solosis", - "578": "Duosion", - "579": "Reuniclus", - "580": "Ducklett", - "581": "Swanna", - "582": "Vanillite", - "583": "Vanillish", - "584": "Vanilluxe", - "585": "Deerling", - "586": "Sawsbuck", - "587": "Emolga", - "588": "Karrablast", - "589": "Escavalier", - "590": "Foongus", - "591": "Amoonguss", - "592": "Frillish", - "593": "Jellicent", - "594": "Alomomola", - "595": "Joltik", - "596": "Galvantula", - "597": "Ferroseed", - "598": "Ferrothorn", - "599": "Klink", - "600": "Klang", - "601": "Klinklang", - "602": "Tynamo", - "603": "Eelektrik", - "604": "Eelektross", - "605": "Elgyem", - "606": "Beheeyem", - "607": "Litwick", - "608": "Lampent", - "609": "Chandelure", - "610": "Axew", - "611": "Fraxure", - "612": "Haxorus", - "613": "Cubchoo", - "614": "Beartic", - "615": "Cryogonal", - "616": "Shelmet", - "617": "Accelgor", - "618": "Stunfisk", - "619": "Mienfoo", - "620": "Mienshao", - "621": "Druddigon", - "622": "Golett", - "623": "Golurk", - "624": "Pawniard", - "625": "Bisharp", - "626": "Bouffalant", - "627": "Rufflet", - "628": "Braviary", - "629": "Vullaby", - "630": "Mandibuzz", - "631": "Heatmor", - "632": "Durant", - "633": "Deino", - "634": "Zweilous", - "635": "Hydreigon", - "636": "Larvesta", - "637": "Volcarona", - "638": "Cobalion", - "639": "Terrakion", - "640": "Virizion", - "641": "Tornadus", - "642": "Thundurus", - "643": "Reshiram", - "644": "Zekrom", - "645": "Landorus", - "646": "Kyurem", - "647": "Keldeo", - "648": "Meloetta", - "649": "Genesect", - "650": "Chespin", - "651": "Quilladin", - "652": "Chesnaught", - "653": "Fennekin", - "654": "Braixen", - "655": "Delphox", - "656": "Froakie", - "657": "Frogadier", - "658": "Greninja", - "659": "Bunnelby", - "660": "Diggersby", - "661": "Fletchling", - "662": "Fletchinder", - "663": "Talonflame", - "664": "Scatterbug", - "665": "Spewpa", - "666": "Vivillon", - "667": "Litleo", - "668": "Pyroar", - "669": "Flab\u00E9b\u00E9", - "670": "Floette", - "671": "Florges", - "672": "Skiddo", - "673": "Gogoat", - "674": "Pancham", - "675": "Pangoro", - "676": "Furfrou", - "677": "Espurr", - "678": "Meowstic", - "679": "Honedge", - "680": "Doublade", - "681": "Aegislash", - "682": "Spritzee", - "683": "Aromatisse", - "684": "Swirlix", - "685": "Slurpuff", - "686": "Inkay", - "687": "Malamar", - "688": "Binacle", - "689": "Barbaracle", - "690": "Skrelp", - "691": "Dragalge", - "692": "Clauncher", - "693": "Clawitzer", - "694": "Helioptile", - "695": "Heliolisk", - "696": "Tyrunt", - "697": "Tyrantrum", - "698": "Amaura", - "699": "Aurorus", - "700": "Sylveon", - "701": "Hawlucha", - "702": "Dedenne", - "703": "Carbink", - "704": "Goomy", - "705": "Sliggoo", - "706": "Goodra", - "707": "Klefki", - "708": "Phantump", - "709": "Trevenant", - "710": "Pumpkaboo", - "711": "Gourgeist", - "712": "Bergmite", - "713": "Avalugg", - "714": "Noibat", - "715": "Noivern", - "716": "Xerneas", - "717": "Yveltal", - "718": "Zygarde", - "719": "Diancie", - "720": "Hoopa", + "001": "Bulbasaur", + "002": "Ivysaur", + "003": "Venusaur", + "004": "Charmander", + "005": "Charmeleon", + "006": "Charizard", + "007": "Squirtle", + "008": "Wartortle", + "009": "Blastoise", + "010": "Caterpie", + "011": "Metapod", + "012": "Butterfree", + "013": "Weedle", + "014": "Kakuna", + "015": "Beedrill", + "016": "Pidgey", + "017": "Pidgeotto", + "018": "Pidgeot", + "019": "Rattata", + "020": "Raticate", + "021": "Spearow", + "022": "Fearow", + "023": "Ekans", + "024": "Arbok", + "025": "Pikachu", + "026": "Raichu", + "027": "Sandshrew", + "028": "Sandslash", + "029": "Nidoran\u2640", + "030": "Nidorina", + "031": "Nidoqueen", + "032": "Nidoran\u2642", + "033": "Nidorino", + "034": "Nidoking", + "035": "Clefairy", + "036": "Clefable", + "037": "Vulpix", + "038": "Ninetales", + "039": "Jigglypuff", + "040": "Wigglytuff", + "041": "Zubat", + "042": "Golbat", + "043": "Oddish", + "044": "Gloom", + "045": "Vileplume", + "046": "Paras", + "047": "Parasect", + "048": "Venonat", + "049": "Venomoth", + "050": "Diglett", + "051": "Dugtrio", + "052": "Meowth", + "053": "Persian", + "054": "Psyduck", + "055": "Golduck", + "056": "Mankey", + "057": "Primeape", + "058": "Growlithe", + "059": "Arcanine", + "060": "Poliwag", + "061": "Poliwhirl", + "062": "Poliwrath", + "063": "Abra", + "064": "Kadabra", + "065": "Alakazam", + "066": "Machop", + "067": "Machoke", + "068": "Machamp", + "069": "Bellsprout", + "070": "Weepinbell", + "071": "Victreebel", + "072": "Tentacool", + "073": "Tentacruel", + "074": "Geodude", + "075": "Graveler", + "076": "Golem", + "077": "Ponyta", + "078": "Rapidash", + "079": "Slowpoke", + "080": "Slowbro", + "081": "Magnemite", + "082": "Magneton", + "083": "Farfetch'd", + "084": "Doduo", + "085": "Dodrio", + "086": "Seel", + "087": "Dewgong", + "088": "Grimer", + "089": "Muk", + "090": "Shellder", + "091": "Cloyster", + "092": "Gastly", + "093": "Haunter", + "094": "Gengar", + "095": "Onix", + "096": "Drowzee", + "097": "Hypno", + "098": "Krabby", + "099": "Kingler", + "100": "Voltorb", + "101": "Electrode", + "102": "Exeggcute", + "103": "Exeggutor", + "104": "Cubone", + "105": "Marowak", + "106": "Hitmonlee", + "107": "Hitmonchan", + "108": "Lickitung", + "109": "Koffing", + "110": "Weezing", + "111": "Rhyhorn", + "112": "Rhydon", + "113": "Chansey", + "114": "Tangela", + "115": "Kangaskhan", + "116": "Horsea", + "117": "Seadra", + "118": "Goldeen", + "119": "Seaking", + "120": "Staryu", + "121": "Starmie", + "122": "Mr. Mime", + "123": "Scyther", + "124": "Jynx", + "125": "Electabuzz", + "126": "Magmar", + "127": "Pinsir", + "128": "Tauros", + "129": "Magikarp", + "130": "Gyarados", + "131": "Lapras", + "132": "Ditto", + "133": "Eevee", + "134": "Vaporeon", + "135": "Jolteon", + "136": "Flareon", + "137": "Porygon", + "138": "Omanyte", + "139": "Omastar", + "140": "Kabuto", + "141": "Kabutops", + "142": "Aerodactyl", + "143": "Snorlax", + "144": "Articuno", + "145": "Zapdos", + "146": "Moltres", + "147": "Dratini", + "148": "Dragonair", + "149": "Dragonite", + "150": "Mewtwo", + "151": "Mew", + "152": "Chikorita", + "153": "Bayleef", + "154": "Meganium", + "155": "Cyndaquil", + "156": "Quilava", + "157": "Typhlosion", + "158": "Totodile", + "159": "Croconaw", + "160": "Feraligatr", + "161": "Sentret", + "162": "Furret", + "163": "Hoothoot", + "164": "Noctowl", + "165": "Ledyba", + "166": "Ledian", + "167": "Spinarak", + "168": "Ariados", + "169": "Crobat", + "170": "Chinchou", + "171": "Lanturn", + "172": "Pichu", + "173": "Cleffa", + "174": "Igglybuff", + "175": "Togepi", + "176": "Togetic", + "177": "Natu", + "178": "Xatu", + "179": "Mareep", + "180": "Flaaffy", + "181": "Ampharos", + "182": "Bellossom", + "183": "Marill", + "184": "Azumarill", + "185": "Sudowoodo", + "186": "Politoed", + "187": "Hoppip", + "188": "Skiploom", + "189": "Jumpluff", + "190": "Aipom", + "191": "Sunkern", + "192": "Sunflora", + "193": "Yanma", + "194": "Wooper", + "195": "Quagsire", + "196": "Espeon", + "197": "Umbreon", + "198": "Murkrow", + "199": "Slowking", + "200": "Misdreavus", + "201": "Unown", + "202": "Wobbuffet", + "203": "Girafarig", + "204": "Pineco", + "205": "Forretress", + "206": "Dunsparce", + "207": "Gligar", + "208": "Steelix", + "209": "Snubbull", + "210": "Granbull", + "211": "Qwilfish", + "212": "Scizor", + "213": "Shuckle", + "214": "Heracross", + "215": "Sneasel", + "216": "Teddiursa", + "217": "Ursaring", + "218": "Slugma", + "219": "Magcargo", + "220": "Swinub", + "221": "Piloswine", + "222": "Corsola", + "223": "Remoraid", + "224": "Octillery", + "225": "Delibird", + "226": "Mantine", + "227": "Skarmory", + "228": "Houndour", + "229": "Houndoom", + "230": "Kingdra", + "231": "Phanpy", + "232": "Donphan", + "233": "Porygon2", + "234": "Stantler", + "235": "Smeargle", + "236": "Tyrogue", + "237": "Hitmontop", + "238": "Smoochum", + "239": "Elekid", + "240": "Magby", + "241": "Miltank", + "242": "Blissey", + "243": "Raikou", + "244": "Entei", + "245": "Suicune", + "246": "Larvitar", + "247": "Pupitar", + "248": "Tyranitar", + "249": "Lugia", + "250": "Ho-Oh", + "251": "Celebi", + "252": "Treecko", + "253": "Grovyle", + "254": "Sceptile", + "255": "Torchic", + "256": "Combusken", + "257": "Blaziken", + "258": "Mudkip", + "259": "Marshtomp", + "260": "Swampert", + "261": "Poochyena", + "262": "Mightyena", + "263": "Zigzagoon", + "264": "Linoone", + "265": "Wurmple", + "266": "Silcoon", + "267": "Beautifly", + "268": "Cascoon", + "269": "Dustox", + "270": "Lotad", + "271": "Lombre", + "272": "Ludicolo", + "273": "Seedot", + "274": "Nuzleaf", + "275": "Shiftry", + "276": "Taillow", + "277": "Swellow", + "278": "Wingull", + "279": "Pelipper", + "280": "Ralts", + "281": "Kirlia", + "282": "Gardevoir", + "283": "Surskit", + "284": "Masquerain", + "285": "Shroomish", + "286": "Breloom", + "287": "Slakoth", + "288": "Vigoroth", + "289": "Slaking", + "290": "Nincada", + "291": "Ninjask", + "292": "Shedinja", + "293": "Whismur", + "294": "Loudred", + "295": "Exploud", + "296": "Makuhita", + "297": "Hariyama", + "298": "Azurill", + "299": "Nosepass", + "300": "Skitty", + "301": "Delcatty", + "302": "Sableye", + "303": "Mawile", + "304": "Aron", + "305": "Lairon", + "306": "Aggron", + "307": "Meditite", + "308": "Medicham", + "309": "Electrike", + "310": "Manectric", + "311": "Plusle", + "312": "Minun", + "313": "Volbeat", + "314": "Illumise", + "315": "Roselia", + "316": "Gulpin", + "317": "Swalot", + "318": "Carvanha", + "319": "Sharpedo", + "320": "Wailmer", + "321": "Wailord", + "322": "Numel", + "323": "Camerupt", + "324": "Torkoal", + "325": "Spoink", + "326": "Grumpig", + "327": "Spinda", + "328": "Trapinch", + "329": "Vibrava", + "330": "Flygon", + "331": "Cacnea", + "332": "Cacturne", + "333": "Swablu", + "334": "Altaria", + "335": "Zangoose", + "336": "Seviper", + "337": "Lunatone", + "338": "Solrock", + "339": "Barboach", + "340": "Whiscash", + "341": "Corphish", + "342": "Crawdaunt", + "343": "Baltoy", + "344": "Claydol", + "345": "Lileep", + "346": "Cradily", + "347": "Anorith", + "348": "Armaldo", + "349": "Feebas", + "350": "Milotic", + "351": "Castform", + "352": "Kecleon", + "353": "Shuppet", + "354": "Banette", + "355": "Duskull", + "356": "Dusclops", + "357": "Tropius", + "358": "Chimecho", + "359": "Absol", + "360": "Wynaut", + "361": "Snorunt", + "362": "Glalie", + "363": "Spheal", + "364": "Sealeo", + "365": "Walrein", + "366": "Clamperl", + "367": "Huntail", + "368": "Gorebyss", + "369": "Relicanth", + "370": "Luvdisc", + "371": "Bagon", + "372": "Shelgon", + "373": "Salamence", + "374": "Beldum", + "375": "Metang", + "376": "Metagross", + "377": "Regirock", + "378": "Regice", + "379": "Registeel", + "380": "Latias", + "381": "Latios", + "382": "Kyogre", + "383": "Groudon", + "384": "Rayquaza", + "385": "Jirachi", + "386": "Deoxys", + "387": "Turtwig", + "388": "Grotle", + "389": "Torterra", + "390": "Chimchar", + "391": "Monferno", + "392": "Infernape", + "393": "Piplup", + "394": "Prinplup", + "395": "Empoleon", + "396": "Starly", + "397": "Staravia", + "398": "Staraptor", + "399": "Bidoof", + "400": "Bibarel", + "401": "Kricketot", + "402": "Kricketune", + "403": "Shinx", + "404": "Luxio", + "405": "Luxray", + "406": "Budew", + "407": "Roserade", + "408": "Cranidos", + "409": "Rampardos", + "410": "Shieldon", + "411": "Bastiodon", + "412": "Burmy", + "413": "Wormadam", + "414": "Mothim", + "415": "Combee", + "416": "Vespiquen", + "417": "Pachirisu", + "418": "Buizel", + "419": "Floatzel", + "420": "Cherubi", + "421": "Cherrim", + "422": "Shellos", + "423": "Gastrodon", + "424": "Ambipom", + "425": "Drifloon", + "426": "Drifblim", + "427": "Buneary", + "428": "Lopunny", + "429": "Mismagius", + "430": "Honchkrow", + "431": "Glameow", + "432": "Purugly", + "433": "Chingling", + "434": "Stunky", + "435": "Skuntank", + "436": "Bronzor", + "437": "Bronzong", + "438": "Bonsly", + "439": "Mime Jr.", + "440": "Happiny", + "441": "Chatot", + "442": "Spiritomb", + "443": "Gible", + "444": "Gabite", + "445": "Garchomp", + "446": "Munchlax", + "447": "Riolu", + "448": "Lucario", + "449": "Hippopotas", + "450": "Hippowdon", + "451": "Skorupi", + "452": "Drapion", + "453": "Croagunk", + "454": "Toxicroak", + "455": "Carnivine", + "456": "Finneon", + "457": "Lumineon", + "458": "Mantyke", + "459": "Snover", + "460": "Abomasnow", + "461": "Weavile", + "462": "Magnezone", + "463": "Lickilicky", + "464": "Rhyperior", + "465": "Tangrowth", + "466": "Electivire", + "467": "Magmortar", + "468": "Togekiss", + "469": "Yanmega", + "470": "Leafeon", + "471": "Glaceon", + "472": "Gliscor", + "473": "Mamoswine", + "474": "Porygon-Z", + "475": "Gallade", + "476": "Probopass", + "477": "Dusknoir", + "478": "Froslass", + "479": "Rotom", + "480": "Uxie", + "481": "Mesprit", + "482": "Azelf", + "483": "Dialga", + "484": "Palkia", + "485": "Heatran", + "486": "Regigigas", + "487": "Giratina", + "488": "Cresselia", + "489": "Phione", + "490": "Manaphy", + "491": "Darkrai", + "492": "Shaymin", + "493": "Arceus", + "494": "Victini", + "495": "Snivy", + "496": "Servine", + "497": "Serperior", + "498": "Tepig", + "499": "Pignite", + "500": "Emboar", + "501": "Oshawott", + "502": "Dewott", + "503": "Samurott", + "504": "Patrat", + "505": "Watchog", + "506": "Lillipup", + "507": "Herdier", + "508": "Stoutland", + "509": "Purrloin", + "510": "Liepard", + "511": "Pansage", + "512": "Simisage", + "513": "Pansear", + "514": "Simisear", + "515": "Panpour", + "516": "Simipour", + "517": "Munna", + "518": "Musharna", + "519": "Pidove", + "520": "Tranquill", + "521": "Unfezant", + "522": "Blitzle", + "523": "Zebstrika", + "524": "Roggenrola", + "525": "Boldore", + "526": "Gigalith", + "527": "Woobat", + "528": "Swoobat", + "529": "Drilbur", + "530": "Excadrill", + "531": "Audino", + "532": "Timburr", + "533": "Gurdurr", + "534": "Conkeldurr", + "535": "Tympole", + "536": "Palpitoad", + "537": "Seismitoad", + "538": "Throh", + "539": "Sawk", + "540": "Sewaddle", + "541": "Swadloon", + "542": "Leavanny", + "543": "Venipede", + "544": "Whirlipede", + "545": "Scolipede", + "546": "Cottonee", + "547": "Whimsicott", + "548": "Petilil", + "549": "Lilligant", + "550": "Basculin", + "551": "Sandile", + "552": "Krokorok", + "553": "Krookodile", + "554": "Darumaka", + "555": "Darmanitan", + "556": "Maractus", + "557": "Dwebble", + "558": "Crustle", + "559": "Scraggy", + "560": "Scrafty", + "561": "Sigilyph", + "562": "Yamask", + "563": "Cofagrigus", + "564": "Tirtouga", + "565": "Carracosta", + "566": "Archen", + "567": "Archeops", + "568": "Trubbish", + "569": "Garbodor", + "570": "Zorua", + "571": "Zoroark", + "572": "Minccino", + "573": "Cinccino", + "574": "Gothita", + "575": "Gothorita", + "576": "Gothitelle", + "577": "Solosis", + "578": "Duosion", + "579": "Reuniclus", + "580": "Ducklett", + "581": "Swanna", + "582": "Vanillite", + "583": "Vanillish", + "584": "Vanilluxe", + "585": "Deerling", + "586": "Sawsbuck", + "587": "Emolga", + "588": "Karrablast", + "589": "Escavalier", + "590": "Foongus", + "591": "Amoonguss", + "592": "Frillish", + "593": "Jellicent", + "594": "Alomomola", + "595": "Joltik", + "596": "Galvantula", + "597": "Ferroseed", + "598": "Ferrothorn", + "599": "Klink", + "600": "Klang", + "601": "Klinklang", + "602": "Tynamo", + "603": "Eelektrik", + "604": "Eelektross", + "605": "Elgyem", + "606": "Beheeyem", + "607": "Litwick", + "608": "Lampent", + "609": "Chandelure", + "610": "Axew", + "611": "Fraxure", + "612": "Haxorus", + "613": "Cubchoo", + "614": "Beartic", + "615": "Cryogonal", + "616": "Shelmet", + "617": "Accelgor", + "618": "Stunfisk", + "619": "Mienfoo", + "620": "Mienshao", + "621": "Druddigon", + "622": "Golett", + "623": "Golurk", + "624": "Pawniard", + "625": "Bisharp", + "626": "Bouffalant", + "627": "Rufflet", + "628": "Braviary", + "629": "Vullaby", + "630": "Mandibuzz", + "631": "Heatmor", + "632": "Durant", + "633": "Deino", + "634": "Zweilous", + "635": "Hydreigon", + "636": "Larvesta", + "637": "Volcarona", + "638": "Cobalion", + "639": "Terrakion", + "640": "Virizion", + "641": "Tornadus", + "642": "Thundurus", + "643": "Reshiram", + "644": "Zekrom", + "645": "Landorus", + "646": "Kyurem", + "647": "Keldeo", + "648": "Meloetta", + "649": "Genesect", + "650": "Chespin", + "651": "Quilladin", + "652": "Chesnaught", + "653": "Fennekin", + "654": "Braixen", + "655": "Delphox", + "656": "Froakie", + "657": "Frogadier", + "658": "Greninja", + "659": "Bunnelby", + "660": "Diggersby", + "661": "Fletchling", + "662": "Fletchinder", + "663": "Talonflame", + "664": "Scatterbug", + "665": "Spewpa", + "666": "Vivillon", + "667": "Litleo", + "668": "Pyroar", + "669": "Flab\u00e9b\u00e9", + "670": "Floette", + "671": "Florges", + "672": "Skiddo", + "673": "Gogoat", + "674": "Pancham", + "675": "Pangoro", + "676": "Furfrou", + "677": "Espurr", + "678": "Meowstic", + "679": "Honedge", + "680": "Doublade", + "681": "Aegislash", + "682": "Spritzee", + "683": "Aromatisse", + "684": "Swirlix", + "685": "Slurpuff", + "686": "Inkay", + "687": "Malamar", + "688": "Binacle", + "689": "Barbaracle", + "690": "Skrelp", + "691": "Dragalge", + "692": "Clauncher", + "693": "Clawitzer", + "694": "Helioptile", + "695": "Heliolisk", + "696": "Tyrunt", + "697": "Tyrantrum", + "698": "Amaura", + "699": "Aurorus", + "700": "Sylveon", + "701": "Hawlucha", + "702": "Dedenne", + "703": "Carbink", + "704": "Goomy", + "705": "Sliggoo", + "706": "Goodra", + "707": "Klefki", + "708": "Phantump", + "709": "Trevenant", + "710": "Pumpkaboo", + "711": "Gourgeist", + "712": "Bergmite", + "713": "Avalugg", + "714": "Noibat", + "715": "Noivern", + "716": "Xerneas", + "717": "Yveltal", + "718": "Zygarde", + "719": "Diancie", + "720": "Hoopa", "721": "Volcanion" - }, + }, + "sizes": { + "001": "diminuto", + "002": "peque\u00f1o", + "003": "normal", + "004": "grande", + "005": "enorme" + }, "teams": { - "0": "Neutral", - "1": "Sabidur\u00eda", - "2": "Valor", - "3": "Instinto" - }, + "000": "Neutral", + "001": "Sabidur\u00eda", + "002": "Valor", + "003": "Instinto" + }, + "types": { + "001": "Normal", + "002": "Lucha", + "003": "Volador", + "004": "Veneno", + "005": "Tierra", + "006": "Roca", + "007": "Bicho", + "008": "Fantasma", + "009": "Acero", + "010": "Fuego", + "011": "Agua", + "012": "Planta", + "013": "El\u00e9ctrico", + "014": "Ps\u00edquico", + "015": "Hielo", + "016": "Drag\u00f3n", + "017": "Hada", + "018": "Siniestro" + }, "weather": { - "0": "None", - "1": "Despejado", - "2": "Lluvioso", - "3": "Parcialmente nublado", - "4": "Cielo cubierto", - "5": "Viento", - "6": "Nieve", - "7": "Niebla" - }, - "misc": { - "boosted": "potenciado" + "000": "None", + "001": "Despejado", + "002": "Lluvioso", + "003": "Parcialmente nublado", + "004": "Cielo cubierto", + "005": "Viento", + "006": "Nieve", + "007": "Niebla" } -} +} \ No newline at end of file diff --git a/locales/fr.json b/locales/fr.json index 4c9ce3185..fd12f5f7d 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -1,981 +1,981 @@ { - "leaders": { - "0": "Professeur Saule", - "1": "Blanche", - "2": "Candela", - "3": "Spark" - }, - "sizes": { - "1": "minuscule", - "2": "petite", - "3": "normale", - "4": "grand", - "5": "\u00E9norme" - }, "costumes": { - "25": { - "1": "Chapeau de Vacances", - "2": "Chapeau de F\u00EAte", - "3": "Chapeau de Ash", - "4": "Chapeau de Sorci\u00E8re" - }, - "26": { - "1": "Chapeau de Vacances", - "2": "Chapeau de F\u00EAte", - "3": "Chapeau de Ash", - "4": "Chapeau de Sorci\u00E8re" - }, + "025": { + "001": "Chapeau de Vacances", + "002": "Chapeau de F\u00eate", + "003": "Chapeau de Ash", + "004": "Chapeau de Sorci\u00e8re" + }, + "026": { + "001": "Chapeau de Vacances", + "002": "Chapeau de F\u00eate", + "003": "Chapeau de Ash", + "004": "Chapeau de Sorci\u00e8re" + }, "172": { - "1": "Chapeau de Vacances", - "2": "Chapeau de F\u00EAte", - "3": "Chapeau de Ash", - "4": "Chapeau de Sorci\u00E8re" + "001": "Chapeau de Vacances", + "002": "Chapeau de F\u00eate", + "003": "Chapeau de Ash", + "004": "Chapeau de Sorci\u00e8re" } - }, - "types": { - "1": "Normal", - "2": "Combattre", - "3": "Voler", - "4": "Poison", - "5": "Terre", - "6": "Roche", - "7": "Insecte", - "8": "Fant\u00F4me", - "9": "Acier", - "10": "Feu", - "11": "Eau", - "12": "Herbe", - "13": "\u00E9lectrique", - "14": "Psychique", - "15": "Glace", - "16": "Dragon", - "17": "F\u00E9e", - "18": "Sombre" - }, + }, + "leaders": { + "000": "Professeur Saule", + "001": "Blanche", + "002": "Candela", + "003": "Spark" + }, + "misc": { + "boosted": "boost\u00e9" + }, "moves": { - "13": "Ligotage", - "14": "Ultralaser", - "16": "Vibrobscur", - "18": "D\u00e9tritus", - "20": "Force Poigne", - "21": "Roue de Feu", - "22": "M\u00e9gacorne", - "24": "Lance-Flammes", - "26": "Tunnel", - "28": "Coup-Croix", - "30": "Rafale Psy", - "31": "S\u00e9isme", - "32": "Lame de Roc", - "33": "Poing-Glace", - "34": "Cr\u00e8vec\u0153ur", - "35": "Coup d'Jus", - "36": "Luminocanon", - "38": "Bec Vrille", - "39": "LaserGlace", - "40": "Blizzard", - "42": "Canicule", - "45": "A\u00e9ropique", - "46": "Tunnelier", - "47": "Temp\u00eate Florale", - "48": "M\u00e9ga-Sangsue", - "49": "Bourdon", - "50": "Crochet Venin", - "51": "Tranche-Nuit", - "53": "Bullesd\u2019O", - "54": "Sacrifice", - "56": "Balayette", - "57": "Aqua-Jet", - "58": "Hydroqueue", - "59": "Canon Graine", - "60": "Choc Psy", - "62": "Pouvoir Antique", - "63": "Tomberoche", - "64": "\u00c9boulement", - "65": "Rayon Gemme", - "66": "Ombre Port\u00e9e", - "67": "Poing Ombre", - "69": "Vent Mauvais", - "70": "Ball'Ombre", - "72": "Bombaimant", - "74": "T\u00eatedeFer", - "75": "Parabocharge", - "77": "Poing-\u00c9clair", - "78": "Fatal-Foudre", - "79": "Tonnerre", - "80": "Ouragan", - "82": "Dracochoc", - "83": "Dracogriffe", - "84": "Voix Enj\u00f4leuse", - "85": "Vampibaiser", - "86": "\u00c9clat Magique", - "87": "Pouvoir Lunaire", - "88": "C\u00e2linerie", - "89": "Poison-Croix", - "90": "Bomb-Beurk", - "91": "Cradovague", - "92": "D\u00e9tricanon", - "94": "Massd'Os", - "95": "Pi\u00e9tisol", - "96": "Boue-Bombe", - "99": "Rayon Signal", - "100": "Plaie-Croix", - "101": "Nitrocharge", - "102": "Rebondifeu", - "103": "D\u00e9flagration", - "104": "Saumure", - "105": "Vibraqua", - "106": "\u00c9bullition", - "107": "Hydrocanon", - "108": "Psyko", - "109": "Frappe Psy", - "111": "Vent Glace", - "114": "Giga-Sangsue", - "115": "Poing de Feu", - "116": "Lance-Soleil", - "117": "Lame-Feuille", - "118": "M\u00e9gafouet", - "121": "Tranch'Air", - "122": "Vent Violent", - "123": "Casse-Brique", - "125": "M\u00e9t\u00e9ores", - "126": "Koud'Korne", - "127": "\u00c9crasement", - "129": "Croc de Mort", - "131": "Plaquage", - "132": "Repos", - "133": "Lutte", - "200": "Taillade", - "201": "Piq\u00fbre", - "202": "Morsure", - "203": "Coup Bas", - "204": "Dracosouffle", - "205": "\u00c9clair", - "206": "\u00c9tincelle", - "207": "Balayage", - "208": "Poing-Karat\u00e9", - "209": "Flamm\u00e8che", - "210": "Cru-Aile", - "211": "Picpic", - "212": "L\u00e9chouille", - "213": "Griffe Ombre", - "214": "Fouet Lianes", - "215": "Tranch'Herbe", - "216": "Tir de Boue", - "217": "\u00c9clats Glace", - "218": "Souffle Glac\u00e9", - "219": "Vive-Attaque", - "220": "Griffe", - "221": "Charge", - "222": "\u00c9cras'Face", - "223": "Coupe", - "224": "Direct Toxik", - "225": "Acide", - "226": "Coupe Psycho", - "227": "Jet-Pierres", - "228": "Griffe Acier", - "229": "Pisto-Poing", - "230": "Pistolet \u00e0 O", - "231": "Trempette", - "233": "Coud'Boue", - "234": "Psykoud'Boul", - "235": "Choc Mental", - "236": "Dard-Venin", - "237": "\u00c9cume", - "238": "Feinte", - "239": "Aile d'Acier", - "240": "Crocs Feu", - "241": "\u00c9clate-Roc", - "242": "Morphing", - "243": "Riposte", - "244": "Poudreuse", - "245": "Close Combat", - "246": "Dynamopoing", - "247": "Exploforce", - "248": "Onde Bor\u00e9ale", - "249": "Rayon Charg\u00e9", - "250": "Change \u00c9clair", - "251": "\u00c9clair Fou", - "252": "\u00c9lecanon", - "253": "Draco-Queue", - "254": "Avalanche", - "255": "Lame d'Air", - "256": "Rapace", - "257": "Pique", - "258": "Tourbi-Sable", - "259": "Boule Roc", - "260": "Harc\u00e8lement", - "261": "Survinsecte", - "262": "Vent Argent\u00e9", - "263": "Etonnement", - "264": "Ch\u00e2timent", - "265": "T\u00e9n\u00e8bres", - "266": "Queue De Fer", - "267": "Gyroballe", - "268": "Tacle Lourd", - "269": "Danse Flamme", - "270": "Surchauffe", - "271": "Balle Graine", - "272": "Noeud Herbe", - "273": "Eco-Sph\u00e8re", - "274": "Extrasenseur", - "275": "Prescience", - "276": "Voile Miroir", - "277": "Col\u00e8re", - "278": "Aboiement", - "279": "Machouille", - "280": "Tricherie", - "281": "Puissance Cach\u00e9e", - "282": "B\u0351lier", - "283": "Cascade", - "284": "Surf", - "285": "Draco M\u0351t\u0351ore", - "286": "Carnareket", - "287": "B\u0342illement", - "288": "Psycho Boost", - "289": "Onde Originelle", - "290": "Lame Pang\u0351enne", + "013": "Ligotage", + "014": "Ultralaser", + "016": "Vibrobscur", + "018": "D\u00e9tritus", + "020": "Force Poigne", + "021": "Roue de Feu", + "022": "M\u00e9gacorne", + "024": "Lance-Flammes", + "026": "Tunnel", + "028": "Coup-Croix", + "030": "Rafale Psy", + "031": "S\u00e9isme", + "032": "Lame de Roc", + "033": "Poing-Glace", + "034": "Cr\u00e8vec\u0153ur", + "035": "Coup d'Jus", + "036": "Luminocanon", + "038": "Bec Vrille", + "039": "LaserGlace", + "040": "Blizzard", + "042": "Canicule", + "045": "A\u00e9ropique", + "046": "Tunnelier", + "047": "Temp\u00eate Florale", + "048": "M\u00e9ga-Sangsue", + "049": "Bourdon", + "050": "Crochet Venin", + "051": "Tranche-Nuit", + "053": "Bullesd\u2019O", + "054": "Sacrifice", + "056": "Balayette", + "057": "Aqua-Jet", + "058": "Hydroqueue", + "059": "Canon Graine", + "060": "Choc Psy", + "062": "Pouvoir Antique", + "063": "Tomberoche", + "064": "\u00c9boulement", + "065": "Rayon Gemme", + "066": "Ombre Port\u00e9e", + "067": "Poing Ombre", + "069": "Vent Mauvais", + "070": "Ball'Ombre", + "072": "Bombaimant", + "074": "T\u00eatedeFer", + "075": "Parabocharge", + "077": "Poing-\u00c9clair", + "078": "Fatal-Foudre", + "079": "Tonnerre", + "080": "Ouragan", + "082": "Dracochoc", + "083": "Dracogriffe", + "084": "Voix Enj\u00f4leuse", + "085": "Vampibaiser", + "086": "\u00c9clat Magique", + "087": "Pouvoir Lunaire", + "088": "C\u00e2linerie", + "089": "Poison-Croix", + "090": "Bomb-Beurk", + "091": "Cradovague", + "092": "D\u00e9tricanon", + "094": "Massd'Os", + "095": "Pi\u00e9tisol", + "096": "Boue-Bombe", + "099": "Rayon Signal", + "100": "Plaie-Croix", + "101": "Nitrocharge", + "102": "Rebondifeu", + "103": "D\u00e9flagration", + "104": "Saumure", + "105": "Vibraqua", + "106": "\u00c9bullition", + "107": "Hydrocanon", + "108": "Psyko", + "109": "Frappe Psy", + "111": "Vent Glace", + "114": "Giga-Sangsue", + "115": "Poing de Feu", + "116": "Lance-Soleil", + "117": "Lame-Feuille", + "118": "M\u00e9gafouet", + "121": "Tranch'Air", + "122": "Vent Violent", + "123": "Casse-Brique", + "125": "M\u00e9t\u00e9ores", + "126": "Koud'Korne", + "127": "\u00c9crasement", + "129": "Croc de Mort", + "131": "Plaquage", + "132": "Repos", + "133": "Lutte", + "200": "Taillade", + "201": "Piq\u00fbre", + "202": "Morsure", + "203": "Coup Bas", + "204": "Dracosouffle", + "205": "\u00c9clair", + "206": "\u00c9tincelle", + "207": "Balayage", + "208": "Poing-Karat\u00e9", + "209": "Flamm\u00e8che", + "210": "Cru-Aile", + "211": "Picpic", + "212": "L\u00e9chouille", + "213": "Griffe Ombre", + "214": "Fouet Lianes", + "215": "Tranch'Herbe", + "216": "Tir de Boue", + "217": "\u00c9clats Glace", + "218": "Souffle Glac\u00e9", + "219": "Vive-Attaque", + "220": "Griffe", + "221": "Charge", + "222": "\u00c9cras'Face", + "223": "Coupe", + "224": "Direct Toxik", + "225": "Acide", + "226": "Coupe Psycho", + "227": "Jet-Pierres", + "228": "Griffe Acier", + "229": "Pisto-Poing", + "230": "Pistolet \u00e0 O", + "231": "Trempette", + "233": "Coud'Boue", + "234": "Psykoud'Boul", + "235": "Choc Mental", + "236": "Dard-Venin", + "237": "\u00c9cume", + "238": "Feinte", + "239": "Aile d'Acier", + "240": "Crocs Feu", + "241": "\u00c9clate-Roc", + "242": "Morphing", + "243": "Riposte", + "244": "Poudreuse", + "245": "Close Combat", + "246": "Dynamopoing", + "247": "Exploforce", + "248": "Onde Bor\u00e9ale", + "249": "Rayon Charg\u00e9", + "250": "Change \u00c9clair", + "251": "\u00c9clair Fou", + "252": "\u00c9lecanon", + "253": "Draco-Queue", + "254": "Avalanche", + "255": "Lame d'Air", + "256": "Rapace", + "257": "Pique", + "258": "Tourbi-Sable", + "259": "Boule Roc", + "260": "Harc\u00e8lement", + "261": "Survinsecte", + "262": "Vent Argent\u00e9", + "263": "Etonnement", + "264": "Ch\u00e2timent", + "265": "T\u00e9n\u00e8bres", + "266": "Queue De Fer", + "267": "Gyroballe", + "268": "Tacle Lourd", + "269": "Danse Flamme", + "270": "Surchauffe", + "271": "Balle Graine", + "272": "Noeud Herbe", + "273": "Eco-Sph\u00e8re", + "274": "Extrasenseur", + "275": "Prescience", + "276": "Voile Miroir", + "277": "Col\u00e8re", + "278": "Aboiement", + "279": "Machouille", + "280": "Tricherie", + "281": "Puissance Cach\u00e9e", + "282": "B\u0351lier", + "283": "Cascade", + "284": "Surf", + "285": "Draco M\u0351t\u0351ore", + "286": "Carnareket", + "287": "B\u0342illement", + "288": "Psycho Boost", + "289": "Onde Originelle", + "290": "Lame Pang\u0351enne", "291": "Cadeau" - }, + }, "pokemon": { - "1": "Bulbizarre", - "2": "Herbizarre", - "3": "Florizarre", - "4": "Salam\u00e8che", - "5": "Reptincel", - "6": "Dracaufeu", - "7": "Carapuce", - "8": "Carabaffe", - "9": "Tortank", - "10": "Chenipan", - "11": "Chrysacier", - "12": "Papilusion", - "13": "Aspicot", - "14": "Coconfort", - "15": "Dardargnan", - "16": "Roucool", - "17": "Roucoups", - "18": "Roucarnage", - "19": "Rattata", - "20": "Rattatac", - "21": "Piafabec", - "22": "Rapasdepic", - "23": "Abo", - "24": "Arbok", - "25": "Pikachu", - "26": "Raichu", - "27": "Sabelette", - "28": "Sablaireau", - "29": "Nidoran\u2640", - "30": "Nidorina", - "31": "Nidoqueen", - "32": "Nidoran\u2642", - "33": "Nidorino", - "34": "Nidoking", - "35": "M\u00e9lof\u00e9e", - "36": "M\u00e9lodelfe", - "37": "Goupix", - "38": "Feunard", - "39": "Rondoudou", - "40": "Grodoudou", - "41": "Nosferapti", - "42": "Nosferalto", - "43": "Mystherbe", - "44": "Ortide", - "45": "Rafflesia", - "46": "Paras", - "47": "Parasect", - "48": "Mimitoss", - "49": "A\u00e9romite", - "50": "Taupiqueur", - "51": "Triopikeur", - "52": "Miaouss", - "53": "Persian", - "54": "Psykokwak", - "55": "Akwakwak", - "56": "F\u00e9rosinge", - "57": "Colossinge", - "58": "Caninos", - "59": "Arcanin", - "60": "Ptitard", - "61": "T\u00eatarte", - "62": "Tartard", - "63": "Abra", - "64": "Kadabra", - "65": "Alakazam", - "66": "Machoc", - "67": "Machopeur", - "68": "Mackogneur", - "69": "Ch\u00e9tiflor", - "70": "Boustiflor", - "71": "Empiflor", - "72": "Tentacool", - "73": "Tentacruel", - "74": "Racaillou", - "75": "Gravalanch", - "76": "Grolem", - "77": "Ponyta", - "78": "Galopa", - "79": "Ramoloss", - "80": "Flagadoss", - "81": "Magn\u00e9ti", - "82": "Magn\u00e9ton", - "83": "Canarticho", - "84": "Doduo", - "85": "Dodrio", - "86": "Otaria", - "87": "Lamantine", - "88": "Tadmorv", - "89": "Grotadmorv", - "90": "Kokiyas", - "91": "Crustabri", - "92": "Fantominus", - "93": "Spectrum", - "94": "Ectoplasma", - "95": "Onix", - "96": "Soporifik", - "97": "Hypnomade", - "98": "Krabby", - "99": "Krabboss", - "100": "Voltorbe", - "101": "\u00c9lectrode", - "102": "N\u0153un\u0153uf", - "103": "Noadkoko", - "104": "Osselait", - "105": "Ossatueur", - "106": "Kicklee", - "107": "Tygnon", - "108": "Excelangue", - "109": "Smogo", - "110": "Smogogo", - "111": "Rhinocorne", - "112": "Rhinof\u00e9ros", - "113": "Leveinard", - "114": "Saquedeneu", - "115": "Kangourex", - "116": "Hypotrempe", - "117": "Hypoc\u00e9an", - "118": "Poissir\u00e8ne", - "119": "Poissoroy", - "120": "Stari", - "121": "Staross", - "122": "M.Mime", - "123": "Ins\u00e9cateur", - "124": "Lippoutou", - "125": "\u00c9lektek", - "126": "Magmar", - "127": "Scarabrute", - "128": "Tauros", - "129": "Magicarpe", - "130": "L\u00e9viator", - "131": "Lokhlass", - "132": "M\u00e9tamorph", - "133": "\u00c9voli", - "134": "Aquali", - "135": "Voltali", - "136": "Pyroli", - "137": "Porygon", - "138": "Amonita", - "139": "Amonistar", - "140": "Kabuto", - "141": "Kabutops", - "142": "Pt\u00e9ra", - "143": "Ronflex", - "144": "Artikodin", - "145": "\u00c9lecthor", - "146": "Sulfura", - "147": "Minidraco", - "148": "Draco", - "149": "Dracolosse", - "150": "Mewtwo", - "151": "Mew", - "152": "Germignon", - "153": "Macronium", - "154": "M\u00e9ganium", - "155": "H\u00e9ricendre", - "156": "Feurisson", - "157": "Typhlosion", - "158": "Kaiminus", - "159": "Crocrodil", - "160": "Aligatueur", - "161": "Fouinette", - "162": "Fouinar", - "163": "Hoothoot", - "164": "Noarfang", - "165": "Coxy", - "166": "Coxyclaque", - "167": "Mimigal", - "168": "Migalos", - "169": "Nostenfer", - "170": "Loupio", - "171": "Lanturn", - "172": "Pichu", - "173": "M\u00e9lo", - "174": "Toudoudou", - "175": "Togepi", - "176": "Togetic", - "177": "Natu", - "178": "Xatu", - "179": "Wattouat", - "180": "Lainergie", - "181": "Pharamp", - "182": "Joliflor", - "183": "Marill", - "184": "Azumarill", - "185": "Simularbre", - "186": "Tarpaud", - "187": "Granivol", - "188": "Floravol", - "189": "Cotovol", - "190": "Capumain", - "191": "Tournegrin", - "192": "H\u00e9liatronc", - "193": "Yanma", - "194": "Axoloto", - "195": "Maraiste", - "196": "Mentali", - "197": "Noctali", - "198": "Corn\u00e8bre", - "199": "Roigada", - "200": "Feufor\u00eave", - "201": "Zarbi", - "202": "Qulbutok\u00e9", - "203": "Girafarig", - "204": "Pomdepik", - "205": "Foretress", - "206": "Insolourdo", - "207": "Scorplane", - "208": "Steelix", - "209": "Snubbull", - "210": "Granbull", - "211": "Qwilfish", - "212": "Cizayox", - "213": "Caratroc", - "214": "Scarhino", - "215": "Farfuret", - "216": "Teddiursa", - "217": "Ursaring", - "218": "Limagma", - "219": "Volcaropod", - "220": "Marcacrin", - "221": "Cochignon", - "222": "Corayon", - "223": "R\u00e9moraid", - "224": "Octillery", - "225": "Cadoizo", - "226": "D\u00e9manta", - "227": "Airmure", - "228": "Malosse", - "229": "D\u00e9molosse", - "230": "Hyporoi", - "231": "Phanpy", - "232": "Donphan", - "233": "Porygon2", - "234": "Cerfrousse", - "235": "Queulorior", - "236": "Debugant", - "237": "Kapoera", - "238": "Lippouti", - "239": "\u00c9lekid", - "240": "Magby", - "241": "\u00c9cr\u00e9meuh", - "242": "Leuphorie", - "243": "Raikou", - "244": "Entei", - "245": "Suicune", - "246": "Embrylex", - "247": "Ymphect", - "248": "Tyranocif", - "249": "Lugia", - "250": "Ho-Oh", - "251": "Celebi", - "252": "Arcko", - "253": "Massko", - "254": "Jungko", - "255": "Poussifeu", - "256": "Galifeu", - "257": "Bras\u00e9gali", - "258": "Gobou", - "259": "Flobio", - "260": "Laggron", - "261": "Medhy\u00e8na", - "262": "Grahy\u00e8na", - "263": "Zigzaton", - "264": "Lin\u00e9on", - "265": "Chenipotte", - "266": "Armulys", - "267": "Charmillon", - "268": "Blindalys", - "269": "Papinox", - "270": "N\u00e9nupiot", - "271": "Lombre", - "272": "Ludicolo", - "273": "Grainipiot", - "274": "Pifeuil", - "275": "Tengalice", - "276": "Nirondelle", - "277": "H\u00e9l\u00e9delle", - "278": "Go\u00e9lise", - "279": "Bekipan", - "280": "Tarsal", - "281": "Kirlia", - "282": "Gardevoir", - "283": "Arakdo", - "284": "Maskadra", - "285": "Balignon", - "286": "Chapignon", - "287": "Parecool", - "288": "Vigoroth", - "289": "Monafl\u00e8mit", - "290": "Ningale", - "291": "Ninjask", - "292": "Munja", - "293": "Chuchmur", - "294": "Ramboum", - "295": "Brouhabam", - "296": "Makuhita", - "297": "Hariyama", - "298": "Azurill", - "299": "Tarinor", - "300": "Skitty", - "301": "Delcatty", - "302": "T\u00e9n\u00e9fix", - "303": "Mysdibule", - "304": "Galekid", - "305": "Galegon", - "306": "Galeking", - "307": "M\u00e9ditikka", - "308": "Charmina", - "309": "Dynavolt", - "310": "\u00c9lecsprint", - "311": "Posipi", - "312": "N\u00e9gapi", - "313": "Muciole", - "314": "Lumivole", - "315": "Ros\u00e9lia", - "316": "Gloupti", - "317": "Avaltout", - "318": "Carvanha", - "319": "Sharpedo", - "320": "Wailmer", - "321": "Wailord", - "322": "Chamallot", - "323": "Cam\u00e9rupt", - "324": "Chartor", - "325": "Spoink", - "326": "Groret", - "327": "Spinda", - "328": "Kraknoix", - "329": "Vibraninf", - "330": "Lib\u00e9gon", - "331": "Cacnea", - "332": "Cacturne", - "333": "Tylton", - "334": "Altaria", - "335": "Mangriff", - "336": "S\u00e9viper", - "337": "S\u00e9l\u00e9roc", - "338": "Solaroc", - "339": "Barloche", - "340": "Barbicha", - "341": "\u00c9crapince", - "342": "Colhomard", - "343": "Balbuto", - "344": "Kaorine", - "345": "Lilia", - "346": "Vacilys", - "347": "Anorith", - "348": "Armaldo", - "349": "Barpau", - "350": "Milobellus", - "351": "Morph\u00e9o", - "352": "Kecleon", - "353": "Polichombr", - "354": "Branette", - "355": "Skel\u00e9nox", - "356": "T\u00e9raclope", - "357": "Tropius", - "358": "\u00c9oko", - "359": "Absol", - "360": "Ok\u00e9ok\u00e9", - "361": "Stalgamin", - "362": "Oniglali", - "363": "Obalie", - "364": "Phogleur", - "365": "Kaimorse", - "366": "Coquiperl", - "367": "Serpang", - "368": "Rosabyss", - "369": "Relicanth", - "370": "Lovdisc", - "371": "Draby", - "372": "Drackhaus", - "373": "Drattak", - "374": "Terhal", - "375": "M\u00e9tang", - "376": "M\u00e9talosse", - "377": "Regirock", - "378": "Regice", - "379": "Registeel", - "380": "Latias", - "381": "Latios", - "382": "Kyogre", - "383": "Groudon", - "384": "Rayquaza", - "385": "Jirachi", - "386": "Deoxys", - "387": "Tortipouss", - "388": "Boskara", - "389": "Torterra", - "390": "Ouisticram", - "391": "Chimpenfeu", - "392": "Simiabraz", - "393": "Tiplouf", - "394": "Prinplouf", - "395": "Pingol\u00e9on", - "396": "\u00c9tourmi", - "397": "\u00c9tourvol", - "398": "\u00c9touraptor", - "399": "Keunotor", - "400": "Castorno", - "401": "Crikzik", - "402": "M\u00e9lokrik", - "403": "Lixy", - "404": "Luxio", - "405": "Luxray", - "406": "Rozbouton", - "407": "Roserade", - "408": "Kranidos", - "409": "Charkos", - "410": "Dinoclier", - "411": "Bastiodon", - "412": "Cheniti", - "413": "Cheniselle", - "414": "Papilord", - "415": "Apitrini", - "416": "Apireine", - "417": "Pachirisu", - "418": "Must\u00e9bou\u00e9e", - "419": "Must\u00e9flott", - "420": "Ceribou", - "421": "Ceriflor", - "422": "Sancoki", - "423": "Tritosor", - "424": "Capidextre", - "425": "Baudrive", - "426": "Grodrive", - "427": "Laporeille", - "428": "Lockpin", - "429": "Magir\u00eave", - "430": "Corboss", - "431": "Chaglam", - "432": "Chaffreux", - "433": "Korillon", - "434": "Moufouette", - "435": "Moufflair", - "436": "Arch\u00e9omire", - "437": "Arch\u00e9odong", - "438": "Manza\u00ef", - "439": "Mime Jr", - "440": "Ptiravi", - "441": "Pijako", - "442": "Spiritomb", - "443": "Griknot", - "444": "Carmache", - "445": "Carchacrok", - "446": "Goinfrex", - "447": "Riolu", - "448": "Lucario", - "449": "Hippopotas", - "450": "Hippodocus", - "451": "Rapion", - "452": "Drascore", - "453": "Cradopaud", - "454": "Coatox", - "455": "Vortente", - "456": "\u00c9cayon", - "457": "Lumin\u00e9on", - "458": "Babimanta", - "459": "Blizzi", - "460": "Blizzaroi", - "461": "Dimoret", - "462": "Magn\u00e9zone", - "463": "Coudlangue", - "464": "Rhinastoc", - "465": "Bouldeneu", - "466": "\u00c9lekable", - "467": "Maganon", - "468": "Togekiss", - "469": "Yanm\u00e9ga", - "470": "Phyllali", - "471": "Givrali", - "472": "Scorvol", - "473": "Mammochon", - "474": "Porygon-Z", - "475": "Gallame", - "476": "Tarinorme", - "477": "Noctunoir", - "478": "Momartik", - "479": "Motisma", - "480": "Cr\u00e9helf", - "481": "Cr\u00e9follet", - "482": "Cr\u00e9fadet", - "483": "Dialga", - "484": "Palkia", - "485": "Heatran", - "486": "Regigigas", - "487": "Giratina", - "488": "Cresselia", - "489": "Phione", - "490": "Manaphy", - "491": "Darkrai", - "492": "Shaymin", - "493": "Arceus", - "494": "Victini", - "495": "Vip\u00e9lierre", - "496": "Lianaja", - "497": "Majaspic", - "498": "Gruikui", - "499": "Grotichon", - "500": "Roitiflam", - "501": "Moustillon", - "502": "Mateloutre", - "503": "Clamiral", - "504": "Ratentif", - "505": "Miradar", - "506": "Ponchiot", - "507": "Ponchien", - "508": "Mastouffe", - "509": "Chacripan", - "510": "L\u00e9opardus", - "511": "Feuillajou", - "512": "Feuiloutan", - "513": "Flamajou", - "514": "Flamoutan", - "515": "Flotajou", - "516": "Flotoutan", - "517": "Munna", - "518": "Mushana", - "519": "Poichigeon", - "520": "Colombeau", - "521": "D\u00e9flaisan", - "522": "Z\u00e9bribon", - "523": "Z\u00e9blitz", - "524": "Nodulithe", - "525": "G\u00e9olithe", - "526": "Gigalithe", - "527": "Chovsourir", - "528": "Rhinolove", - "529": "Rototaupe", - "530": "Minotaupe", - "531": "Nanm\u00e9ou\u00efe", - "532": "Charpenti", - "533": "Ouvrifier", - "534": "B\u00e9tochef", - "535": "Tritonde", - "536": "Batracn\u00e9", - "537": "Crapustule", - "538": "Judokrak", - "539": "Karacl\u00e9e", - "540": "Larveyette", - "541": "Couverdure", - "542": "Manternel", - "543": "Venipatte", - "544": "Scobolide", - "545": "Brutapode", - "546": "Doudouvet", - "547": "Farfaduvet", - "548": "Chlorobule", - "549": "Fragilady", - "550": "Bargantua", - "551": "Masca\u00efman", - "552": "Escroco", - "553": "Crocorible", - "554": "Darumarond", - "555": "Darumacho", - "556": "Maracachi", - "557": "Crabicoque", - "558": "Crabaraque", - "559": "Baggiguane", - "560": "Bagga\u00efd", - "561": "Crypt\u00e9ro", - "562": "Tutafeh", - "563": "Tutankafer", - "564": "Carapagos", - "565": "M\u00e9gapagos", - "566": "Ark\u00e9apti", - "567": "A\u00e9ropt\u00e9ryx", - "568": "Miamiasme", - "569": "Miasmax", - "570": "Zorua", - "571": "Zoroark", - "572": "Chinchidou", - "573": "Pashmilla", - "574": "Scrutella", - "575": "Mesm\u00e9rella", - "576": "Sid\u00e9rella", - "577": "Nucl\u00e9os", - "578": "M\u00e9ios", - "579": "Symbios", - "580": "Couaneton", - "581": "Lakm\u00e9cygne", - "582": "Sorb\u00e9b\u00e9", - "583": "Sorboul", - "584": "Sorbouboul", - "585": "Vivaldaim", - "586": "Haydaim", - "587": "Emolga", - "588": "Carabing", - "589": "Lan\u00e7argot", - "590": "Trompignon", - "591": "Gaulet", - "592": "Viskuse", - "593": "Moyade", - "594": "Mamanbo", - "595": "Statitik", - "596": "Mygavolt", - "597": "Grindur", - "598": "Noacier", - "599": "Tic", - "600": "Clic", - "601": "Cliticlic", - "602": "Anchwatt", - "603": "Lamp\u00e9roie", - "604": "Ohmassacre", - "605": "Lewsor", - "606": "Neitram", - "607": "Fun\u00e9cire", - "608": "M\u00e9lancolux", - "609": "Lugulabre", - "610": "Coupenotte", - "611": "Incisache", - "612": "Tranchodon", - "613": "Polarhume", - "614": "Polagriffe", - "615": "Hexagel", - "616": "Escargaume", - "617": "Limaspeed", - "618": "Limonde", - "619": "Kungfouine", - "620": "Shaofouine", - "621": "Drakkarmin", - "622": "Gringolem", - "623": "Golemastoc", - "624": "Scalpion", - "625": "Scalproie", - "626": "Frison", - "627": "Furaiglon", - "628": "Gueriaigle", - "629": "Vostourno", - "630": "Vaututrice", - "631": "Aflamanoir", - "632": "Fermite", - "633": "Solochi", - "634": "Diamat", - "635": "Trioxhydre", - "636": "Pyronille", - "637": "Pyrax", - "638": "Cobaltium", - "639": "Terrakium", - "640": "Viridium", - "641": "Bor\u00e9as", - "642": "Fulguris", - "643": "Reshiram", - "644": "Zekrom", - "645": "D\u00e9m\u00e9t\u00e9ros", - "646": "Kyurem", - "647": "Keldeo", - "648": "Meloetta", - "649": "Genesect", - "650": "Marisson", - "651": "Bogu\u00e9risse", - "652": "Blind\u00e9pique", - "653": "Feunnec", - "654": "Roussil", - "655": "Goupelin", - "656": "Grenousse", - "657": "Cro\u00e2poral", - "658": "Amphinobi", - "659": "Sapereau", - "660": "Excavarenne", - "661": "Passerouge", - "662": "Braisillon", - "663": "Flambusard", - "664": "L\u00e9pidonille", - "665": "P\u00e9r\u00e9grain", - "666": "Prismillon", - "667": "H\u00e9lionceau", - "668": "N\u00e9m\u00e9lios", - "669": "Flab\u00e9b\u00e9", - "670": "Floette", - "671": "Florges", - "672": "Cabriolaine", - "673": "Chevroum", - "674": "Pandespi\u00e8gle", - "675": "Pandarbare", - "676": "Couafarel", - "677": "Psystigri", - "678": "Mistigrix", - "679": "Monorpale", - "680": "Dimocl\u00e8s", - "681": "Exagide", - "682": "Fluvetin", - "683": "Cocotine", - "684": "Sucroquin", - "685": "Cupcanaille", - "686": "Sepiatop", - "687": "Sepiatroce", - "688": "Opermine", - "689": "Golgopathe", - "690": "Venalgue", - "691": "Kravarech", - "692": "Flingouste", - "693": "Gamblast", - "694": "Galvaran", - "695": "Iguolta", - "696": "Ptyranidur", - "697": "Rexillius", - "698": "Amagara", - "699": "Dragmara", - "700": "Nymphali", - "701": "Brutalibr\u00e9", - "702": "Dedenne", - "703": "Strassie", - "704": "Mucuscule", - "705": "Colimucus", - "706": "Muplodocus", - "707": "Trousselin", - "708": "Broc\u00e9l\u00f4me", - "709": "Dess\u00e9liande", - "710": "Pitrouille", - "711": "Banshitrouye", - "712": "Grela\u00e7on", - "713": "S\u00e9racrawl", - "714": "Sonistrelle", - "715": "Bruyverne", - "716": "Xerneas", - "717": "Yveltal", - "718": "Zygarde", - "719": "Diancie", - "720": "Hoopa", + "001": "Bulbizarre", + "002": "Herbizarre", + "003": "Florizarre", + "004": "Salam\u00e8che", + "005": "Reptincel", + "006": "Dracaufeu", + "007": "Carapuce", + "008": "Carabaffe", + "009": "Tortank", + "010": "Chenipan", + "011": "Chrysacier", + "012": "Papilusion", + "013": "Aspicot", + "014": "Coconfort", + "015": "Dardargnan", + "016": "Roucool", + "017": "Roucoups", + "018": "Roucarnage", + "019": "Rattata", + "020": "Rattatac", + "021": "Piafabec", + "022": "Rapasdepic", + "023": "Abo", + "024": "Arbok", + "025": "Pikachu", + "026": "Raichu", + "027": "Sabelette", + "028": "Sablaireau", + "029": "Nidoran\u2640", + "030": "Nidorina", + "031": "Nidoqueen", + "032": "Nidoran\u2642", + "033": "Nidorino", + "034": "Nidoking", + "035": "M\u00e9lof\u00e9e", + "036": "M\u00e9lodelfe", + "037": "Goupix", + "038": "Feunard", + "039": "Rondoudou", + "040": "Grodoudou", + "041": "Nosferapti", + "042": "Nosferalto", + "043": "Mystherbe", + "044": "Ortide", + "045": "Rafflesia", + "046": "Paras", + "047": "Parasect", + "048": "Mimitoss", + "049": "A\u00e9romite", + "050": "Taupiqueur", + "051": "Triopikeur", + "052": "Miaouss", + "053": "Persian", + "054": "Psykokwak", + "055": "Akwakwak", + "056": "F\u00e9rosinge", + "057": "Colossinge", + "058": "Caninos", + "059": "Arcanin", + "060": "Ptitard", + "061": "T\u00eatarte", + "062": "Tartard", + "063": "Abra", + "064": "Kadabra", + "065": "Alakazam", + "066": "Machoc", + "067": "Machopeur", + "068": "Mackogneur", + "069": "Ch\u00e9tiflor", + "070": "Boustiflor", + "071": "Empiflor", + "072": "Tentacool", + "073": "Tentacruel", + "074": "Racaillou", + "075": "Gravalanch", + "076": "Grolem", + "077": "Ponyta", + "078": "Galopa", + "079": "Ramoloss", + "080": "Flagadoss", + "081": "Magn\u00e9ti", + "082": "Magn\u00e9ton", + "083": "Canarticho", + "084": "Doduo", + "085": "Dodrio", + "086": "Otaria", + "087": "Lamantine", + "088": "Tadmorv", + "089": "Grotadmorv", + "090": "Kokiyas", + "091": "Crustabri", + "092": "Fantominus", + "093": "Spectrum", + "094": "Ectoplasma", + "095": "Onix", + "096": "Soporifik", + "097": "Hypnomade", + "098": "Krabby", + "099": "Krabboss", + "100": "Voltorbe", + "101": "\u00c9lectrode", + "102": "N\u0153un\u0153uf", + "103": "Noadkoko", + "104": "Osselait", + "105": "Ossatueur", + "106": "Kicklee", + "107": "Tygnon", + "108": "Excelangue", + "109": "Smogo", + "110": "Smogogo", + "111": "Rhinocorne", + "112": "Rhinof\u00e9ros", + "113": "Leveinard", + "114": "Saquedeneu", + "115": "Kangourex", + "116": "Hypotrempe", + "117": "Hypoc\u00e9an", + "118": "Poissir\u00e8ne", + "119": "Poissoroy", + "120": "Stari", + "121": "Staross", + "122": "M.Mime", + "123": "Ins\u00e9cateur", + "124": "Lippoutou", + "125": "\u00c9lektek", + "126": "Magmar", + "127": "Scarabrute", + "128": "Tauros", + "129": "Magicarpe", + "130": "L\u00e9viator", + "131": "Lokhlass", + "132": "M\u00e9tamorph", + "133": "\u00c9voli", + "134": "Aquali", + "135": "Voltali", + "136": "Pyroli", + "137": "Porygon", + "138": "Amonita", + "139": "Amonistar", + "140": "Kabuto", + "141": "Kabutops", + "142": "Pt\u00e9ra", + "143": "Ronflex", + "144": "Artikodin", + "145": "\u00c9lecthor", + "146": "Sulfura", + "147": "Minidraco", + "148": "Draco", + "149": "Dracolosse", + "150": "Mewtwo", + "151": "Mew", + "152": "Germignon", + "153": "Macronium", + "154": "M\u00e9ganium", + "155": "H\u00e9ricendre", + "156": "Feurisson", + "157": "Typhlosion", + "158": "Kaiminus", + "159": "Crocrodil", + "160": "Aligatueur", + "161": "Fouinette", + "162": "Fouinar", + "163": "Hoothoot", + "164": "Noarfang", + "165": "Coxy", + "166": "Coxyclaque", + "167": "Mimigal", + "168": "Migalos", + "169": "Nostenfer", + "170": "Loupio", + "171": "Lanturn", + "172": "Pichu", + "173": "M\u00e9lo", + "174": "Toudoudou", + "175": "Togepi", + "176": "Togetic", + "177": "Natu", + "178": "Xatu", + "179": "Wattouat", + "180": "Lainergie", + "181": "Pharamp", + "182": "Joliflor", + "183": "Marill", + "184": "Azumarill", + "185": "Simularbre", + "186": "Tarpaud", + "187": "Granivol", + "188": "Floravol", + "189": "Cotovol", + "190": "Capumain", + "191": "Tournegrin", + "192": "H\u00e9liatronc", + "193": "Yanma", + "194": "Axoloto", + "195": "Maraiste", + "196": "Mentali", + "197": "Noctali", + "198": "Corn\u00e8bre", + "199": "Roigada", + "200": "Feufor\u00eave", + "201": "Zarbi", + "202": "Qulbutok\u00e9", + "203": "Girafarig", + "204": "Pomdepik", + "205": "Foretress", + "206": "Insolourdo", + "207": "Scorplane", + "208": "Steelix", + "209": "Snubbull", + "210": "Granbull", + "211": "Qwilfish", + "212": "Cizayox", + "213": "Caratroc", + "214": "Scarhino", + "215": "Farfuret", + "216": "Teddiursa", + "217": "Ursaring", + "218": "Limagma", + "219": "Volcaropod", + "220": "Marcacrin", + "221": "Cochignon", + "222": "Corayon", + "223": "R\u00e9moraid", + "224": "Octillery", + "225": "Cadoizo", + "226": "D\u00e9manta", + "227": "Airmure", + "228": "Malosse", + "229": "D\u00e9molosse", + "230": "Hyporoi", + "231": "Phanpy", + "232": "Donphan", + "233": "Porygon2", + "234": "Cerfrousse", + "235": "Queulorior", + "236": "Debugant", + "237": "Kapoera", + "238": "Lippouti", + "239": "\u00c9lekid", + "240": "Magby", + "241": "\u00c9cr\u00e9meuh", + "242": "Leuphorie", + "243": "Raikou", + "244": "Entei", + "245": "Suicune", + "246": "Embrylex", + "247": "Ymphect", + "248": "Tyranocif", + "249": "Lugia", + "250": "Ho-Oh", + "251": "Celebi", + "252": "Arcko", + "253": "Massko", + "254": "Jungko", + "255": "Poussifeu", + "256": "Galifeu", + "257": "Bras\u00e9gali", + "258": "Gobou", + "259": "Flobio", + "260": "Laggron", + "261": "Medhy\u00e8na", + "262": "Grahy\u00e8na", + "263": "Zigzaton", + "264": "Lin\u00e9on", + "265": "Chenipotte", + "266": "Armulys", + "267": "Charmillon", + "268": "Blindalys", + "269": "Papinox", + "270": "N\u00e9nupiot", + "271": "Lombre", + "272": "Ludicolo", + "273": "Grainipiot", + "274": "Pifeuil", + "275": "Tengalice", + "276": "Nirondelle", + "277": "H\u00e9l\u00e9delle", + "278": "Go\u00e9lise", + "279": "Bekipan", + "280": "Tarsal", + "281": "Kirlia", + "282": "Gardevoir", + "283": "Arakdo", + "284": "Maskadra", + "285": "Balignon", + "286": "Chapignon", + "287": "Parecool", + "288": "Vigoroth", + "289": "Monafl\u00e8mit", + "290": "Ningale", + "291": "Ninjask", + "292": "Munja", + "293": "Chuchmur", + "294": "Ramboum", + "295": "Brouhabam", + "296": "Makuhita", + "297": "Hariyama", + "298": "Azurill", + "299": "Tarinor", + "300": "Skitty", + "301": "Delcatty", + "302": "T\u00e9n\u00e9fix", + "303": "Mysdibule", + "304": "Galekid", + "305": "Galegon", + "306": "Galeking", + "307": "M\u00e9ditikka", + "308": "Charmina", + "309": "Dynavolt", + "310": "\u00c9lecsprint", + "311": "Posipi", + "312": "N\u00e9gapi", + "313": "Muciole", + "314": "Lumivole", + "315": "Ros\u00e9lia", + "316": "Gloupti", + "317": "Avaltout", + "318": "Carvanha", + "319": "Sharpedo", + "320": "Wailmer", + "321": "Wailord", + "322": "Chamallot", + "323": "Cam\u00e9rupt", + "324": "Chartor", + "325": "Spoink", + "326": "Groret", + "327": "Spinda", + "328": "Kraknoix", + "329": "Vibraninf", + "330": "Lib\u00e9gon", + "331": "Cacnea", + "332": "Cacturne", + "333": "Tylton", + "334": "Altaria", + "335": "Mangriff", + "336": "S\u00e9viper", + "337": "S\u00e9l\u00e9roc", + "338": "Solaroc", + "339": "Barloche", + "340": "Barbicha", + "341": "\u00c9crapince", + "342": "Colhomard", + "343": "Balbuto", + "344": "Kaorine", + "345": "Lilia", + "346": "Vacilys", + "347": "Anorith", + "348": "Armaldo", + "349": "Barpau", + "350": "Milobellus", + "351": "Morph\u00e9o", + "352": "Kecleon", + "353": "Polichombr", + "354": "Branette", + "355": "Skel\u00e9nox", + "356": "T\u00e9raclope", + "357": "Tropius", + "358": "\u00c9oko", + "359": "Absol", + "360": "Ok\u00e9ok\u00e9", + "361": "Stalgamin", + "362": "Oniglali", + "363": "Obalie", + "364": "Phogleur", + "365": "Kaimorse", + "366": "Coquiperl", + "367": "Serpang", + "368": "Rosabyss", + "369": "Relicanth", + "370": "Lovdisc", + "371": "Draby", + "372": "Drackhaus", + "373": "Drattak", + "374": "Terhal", + "375": "M\u00e9tang", + "376": "M\u00e9talosse", + "377": "Regirock", + "378": "Regice", + "379": "Registeel", + "380": "Latias", + "381": "Latios", + "382": "Kyogre", + "383": "Groudon", + "384": "Rayquaza", + "385": "Jirachi", + "386": "Deoxys", + "387": "Tortipouss", + "388": "Boskara", + "389": "Torterra", + "390": "Ouisticram", + "391": "Chimpenfeu", + "392": "Simiabraz", + "393": "Tiplouf", + "394": "Prinplouf", + "395": "Pingol\u00e9on", + "396": "\u00c9tourmi", + "397": "\u00c9tourvol", + "398": "\u00c9touraptor", + "399": "Keunotor", + "400": "Castorno", + "401": "Crikzik", + "402": "M\u00e9lokrik", + "403": "Lixy", + "404": "Luxio", + "405": "Luxray", + "406": "Rozbouton", + "407": "Roserade", + "408": "Kranidos", + "409": "Charkos", + "410": "Dinoclier", + "411": "Bastiodon", + "412": "Cheniti", + "413": "Cheniselle", + "414": "Papilord", + "415": "Apitrini", + "416": "Apireine", + "417": "Pachirisu", + "418": "Must\u00e9bou\u00e9e", + "419": "Must\u00e9flott", + "420": "Ceribou", + "421": "Ceriflor", + "422": "Sancoki", + "423": "Tritosor", + "424": "Capidextre", + "425": "Baudrive", + "426": "Grodrive", + "427": "Laporeille", + "428": "Lockpin", + "429": "Magir\u00eave", + "430": "Corboss", + "431": "Chaglam", + "432": "Chaffreux", + "433": "Korillon", + "434": "Moufouette", + "435": "Moufflair", + "436": "Arch\u00e9omire", + "437": "Arch\u00e9odong", + "438": "Manza\u00ef", + "439": "Mime Jr", + "440": "Ptiravi", + "441": "Pijako", + "442": "Spiritomb", + "443": "Griknot", + "444": "Carmache", + "445": "Carchacrok", + "446": "Goinfrex", + "447": "Riolu", + "448": "Lucario", + "449": "Hippopotas", + "450": "Hippodocus", + "451": "Rapion", + "452": "Drascore", + "453": "Cradopaud", + "454": "Coatox", + "455": "Vortente", + "456": "\u00c9cayon", + "457": "Lumin\u00e9on", + "458": "Babimanta", + "459": "Blizzi", + "460": "Blizzaroi", + "461": "Dimoret", + "462": "Magn\u00e9zone", + "463": "Coudlangue", + "464": "Rhinastoc", + "465": "Bouldeneu", + "466": "\u00c9lekable", + "467": "Maganon", + "468": "Togekiss", + "469": "Yanm\u00e9ga", + "470": "Phyllali", + "471": "Givrali", + "472": "Scorvol", + "473": "Mammochon", + "474": "Porygon-Z", + "475": "Gallame", + "476": "Tarinorme", + "477": "Noctunoir", + "478": "Momartik", + "479": "Motisma", + "480": "Cr\u00e9helf", + "481": "Cr\u00e9follet", + "482": "Cr\u00e9fadet", + "483": "Dialga", + "484": "Palkia", + "485": "Heatran", + "486": "Regigigas", + "487": "Giratina", + "488": "Cresselia", + "489": "Phione", + "490": "Manaphy", + "491": "Darkrai", + "492": "Shaymin", + "493": "Arceus", + "494": "Victini", + "495": "Vip\u00e9lierre", + "496": "Lianaja", + "497": "Majaspic", + "498": "Gruikui", + "499": "Grotichon", + "500": "Roitiflam", + "501": "Moustillon", + "502": "Mateloutre", + "503": "Clamiral", + "504": "Ratentif", + "505": "Miradar", + "506": "Ponchiot", + "507": "Ponchien", + "508": "Mastouffe", + "509": "Chacripan", + "510": "L\u00e9opardus", + "511": "Feuillajou", + "512": "Feuiloutan", + "513": "Flamajou", + "514": "Flamoutan", + "515": "Flotajou", + "516": "Flotoutan", + "517": "Munna", + "518": "Mushana", + "519": "Poichigeon", + "520": "Colombeau", + "521": "D\u00e9flaisan", + "522": "Z\u00e9bribon", + "523": "Z\u00e9blitz", + "524": "Nodulithe", + "525": "G\u00e9olithe", + "526": "Gigalithe", + "527": "Chovsourir", + "528": "Rhinolove", + "529": "Rototaupe", + "530": "Minotaupe", + "531": "Nanm\u00e9ou\u00efe", + "532": "Charpenti", + "533": "Ouvrifier", + "534": "B\u00e9tochef", + "535": "Tritonde", + "536": "Batracn\u00e9", + "537": "Crapustule", + "538": "Judokrak", + "539": "Karacl\u00e9e", + "540": "Larveyette", + "541": "Couverdure", + "542": "Manternel", + "543": "Venipatte", + "544": "Scobolide", + "545": "Brutapode", + "546": "Doudouvet", + "547": "Farfaduvet", + "548": "Chlorobule", + "549": "Fragilady", + "550": "Bargantua", + "551": "Masca\u00efman", + "552": "Escroco", + "553": "Crocorible", + "554": "Darumarond", + "555": "Darumacho", + "556": "Maracachi", + "557": "Crabicoque", + "558": "Crabaraque", + "559": "Baggiguane", + "560": "Bagga\u00efd", + "561": "Crypt\u00e9ro", + "562": "Tutafeh", + "563": "Tutankafer", + "564": "Carapagos", + "565": "M\u00e9gapagos", + "566": "Ark\u00e9apti", + "567": "A\u00e9ropt\u00e9ryx", + "568": "Miamiasme", + "569": "Miasmax", + "570": "Zorua", + "571": "Zoroark", + "572": "Chinchidou", + "573": "Pashmilla", + "574": "Scrutella", + "575": "Mesm\u00e9rella", + "576": "Sid\u00e9rella", + "577": "Nucl\u00e9os", + "578": "M\u00e9ios", + "579": "Symbios", + "580": "Couaneton", + "581": "Lakm\u00e9cygne", + "582": "Sorb\u00e9b\u00e9", + "583": "Sorboul", + "584": "Sorbouboul", + "585": "Vivaldaim", + "586": "Haydaim", + "587": "Emolga", + "588": "Carabing", + "589": "Lan\u00e7argot", + "590": "Trompignon", + "591": "Gaulet", + "592": "Viskuse", + "593": "Moyade", + "594": "Mamanbo", + "595": "Statitik", + "596": "Mygavolt", + "597": "Grindur", + "598": "Noacier", + "599": "Tic", + "600": "Clic", + "601": "Cliticlic", + "602": "Anchwatt", + "603": "Lamp\u00e9roie", + "604": "Ohmassacre", + "605": "Lewsor", + "606": "Neitram", + "607": "Fun\u00e9cire", + "608": "M\u00e9lancolux", + "609": "Lugulabre", + "610": "Coupenotte", + "611": "Incisache", + "612": "Tranchodon", + "613": "Polarhume", + "614": "Polagriffe", + "615": "Hexagel", + "616": "Escargaume", + "617": "Limaspeed", + "618": "Limonde", + "619": "Kungfouine", + "620": "Shaofouine", + "621": "Drakkarmin", + "622": "Gringolem", + "623": "Golemastoc", + "624": "Scalpion", + "625": "Scalproie", + "626": "Frison", + "627": "Furaiglon", + "628": "Gueriaigle", + "629": "Vostourno", + "630": "Vaututrice", + "631": "Aflamanoir", + "632": "Fermite", + "633": "Solochi", + "634": "Diamat", + "635": "Trioxhydre", + "636": "Pyronille", + "637": "Pyrax", + "638": "Cobaltium", + "639": "Terrakium", + "640": "Viridium", + "641": "Bor\u00e9as", + "642": "Fulguris", + "643": "Reshiram", + "644": "Zekrom", + "645": "D\u00e9m\u00e9t\u00e9ros", + "646": "Kyurem", + "647": "Keldeo", + "648": "Meloetta", + "649": "Genesect", + "650": "Marisson", + "651": "Bogu\u00e9risse", + "652": "Blind\u00e9pique", + "653": "Feunnec", + "654": "Roussil", + "655": "Goupelin", + "656": "Grenousse", + "657": "Cro\u00e2poral", + "658": "Amphinobi", + "659": "Sapereau", + "660": "Excavarenne", + "661": "Passerouge", + "662": "Braisillon", + "663": "Flambusard", + "664": "L\u00e9pidonille", + "665": "P\u00e9r\u00e9grain", + "666": "Prismillon", + "667": "H\u00e9lionceau", + "668": "N\u00e9m\u00e9lios", + "669": "Flab\u00e9b\u00e9", + "670": "Floette", + "671": "Florges", + "672": "Cabriolaine", + "673": "Chevroum", + "674": "Pandespi\u00e8gle", + "675": "Pandarbare", + "676": "Couafarel", + "677": "Psystigri", + "678": "Mistigrix", + "679": "Monorpale", + "680": "Dimocl\u00e8s", + "681": "Exagide", + "682": "Fluvetin", + "683": "Cocotine", + "684": "Sucroquin", + "685": "Cupcanaille", + "686": "Sepiatop", + "687": "Sepiatroce", + "688": "Opermine", + "689": "Golgopathe", + "690": "Venalgue", + "691": "Kravarech", + "692": "Flingouste", + "693": "Gamblast", + "694": "Galvaran", + "695": "Iguolta", + "696": "Ptyranidur", + "697": "Rexillius", + "698": "Amagara", + "699": "Dragmara", + "700": "Nymphali", + "701": "Brutalibr\u00e9", + "702": "Dedenne", + "703": "Strassie", + "704": "Mucuscule", + "705": "Colimucus", + "706": "Muplodocus", + "707": "Trousselin", + "708": "Broc\u00e9l\u00f4me", + "709": "Dess\u00e9liande", + "710": "Pitrouille", + "711": "Banshitrouye", + "712": "Grela\u00e7on", + "713": "S\u00e9racrawl", + "714": "Sonistrelle", + "715": "Bruyverne", + "716": "Xerneas", + "717": "Yveltal", + "718": "Zygarde", + "719": "Diancie", + "720": "Hoopa", "721": "Volcanion" - }, + }, + "sizes": { + "001": "minuscule", + "002": "petite", + "003": "normale", + "004": "grand", + "005": "\u00e9norme" + }, "teams": { - "0": "Neutre", - "1": "Sagesse", - "2": "Bravoure", - "3": "Intuition" - }, + "000": "Neutre", + "001": "Sagesse", + "002": "Bravoure", + "003": "Intuition" + }, + "types": { + "001": "Normal", + "002": "Combattre", + "003": "Voler", + "004": "Poison", + "005": "Terre", + "006": "Roche", + "007": "Insecte", + "008": "Fant\u00f4me", + "009": "Acier", + "010": "Feu", + "011": "Eau", + "012": "Herbe", + "013": "\u00e9lectrique", + "014": "Psychique", + "015": "Glace", + "016": "Dragon", + "017": "F\u00e9e", + "018": "Sombre" + }, "weather": { - "0": "Aucun", - "1": "Clair", - "2": "Pluie", - "3": "Partiellement nuageux", - "4": "Nuageux", - "5": "Venteux", - "6": "Neige", - "7": "Brouillard" - }, - "misc": { - "boosted": "boosté" + "000": "Aucun", + "001": "Clair", + "002": "Pluie", + "003": "Partiellement nuageux", + "004": "Nuageux", + "005": "Venteux", + "006": "Neige", + "007": "Brouillard" } -} +} \ No newline at end of file diff --git a/locales/it.json b/locales/it.json index 9a6234c2b..99bccb689 100644 --- a/locales/it.json +++ b/locales/it.json @@ -1,58 +1,99 @@ { - "leaders": { - "0": "Professor Willow", - "1": "Blanche", - "2": "Candela", - "3": "Spark" - }, - "sizes": { - "1": "minuscolo", - "2": "piccolo", - "3": "normale", - "4": "grande", - "5": "enorme" - }, "costumes": { - "25": { - "1": "Cappello Festiva", - "2": "Cappello da Festa", - "3": "Cappello di Ash", - "4": "Cappello da Strega" - }, - "26": { - "1": "Cappello Festiva", - "2": "Cappello da Festa", - "3": "Cappello di Ash", - "4": "Cappello da Strega" - }, + "025": { + "001": "Cappello Festiva", + "002": "Cappello da Festa", + "003": "Cappello di Ash", + "004": "Cappello da Strega" + }, + "026": { + "001": "Cappello Festiva", + "002": "Cappello da Festa", + "003": "Cappello di Ash", + "004": "Cappello da Strega" + }, "172": { - "1": "Cappello Festiva", - "2": "Cappello da Festa", - "3": "Cappello di Ash", - "4": "Cappello da Strega" + "001": "Cappello Festiva", + "002": "Cappello da Festa", + "003": "Cappello di Ash", + "004": "Cappello da Strega" } - }, - "types": { - "1": "Normale", - "2": "Combattimento", - "3": "Volare", - "4": "Veleno", - "5": "Terra", - "6": "Rock", - "7": "Roccia", - "8": "Fantasma", - "9": "Acciaio", - "10": "Fuoco", - "11": "Acqua", - "12": "Erba", - "13": "Elettrico", - "14": "Psichico", - "15": "Ghiaccio", - "16": "Drago", - "17": "Fata", - "18": "Scuro" - }, + }, + "leaders": { + "000": "Professor Willow", + "001": "Blanche", + "002": "Candela", + "003": "Spark" + }, + "misc": { + "boosted": "potenziato" + }, "moves": { + "013": "Avvolgibotta", + "014": "Iper Raggio", + "016": "Neropulsar", + "018": "Fango", + "020": "Presa", + "021": "Ruotafuoco", + "022": "Megacorno", + "024": "Lanciafiamme", + "026": "Fossa", + "028": "Incrocolpo", + "030": "Psicoraggio", + "031": "Terremoto", + "032": "Pietrataglio", + "033": "Gelopugno", + "034": "Cuorestampo", + "035": "Scarica", + "036": "Cannonflash", + "038": "Perforbecco", + "039": "Geloraggio", + "040": "Bora", + "042": "Ondacalda", + "045": "Aeroassalto", + "046": "Giravvita", + "047": "Fiortempesta", + "048": "Megassorbimento", + "049": "Ronzio", + "050": "Velenodenti", + "051": "Nottesferza", + "053": "Bollaraggio", + "054": "Sottomissione", + "056": "Calciobasso", + "057": "Acquagetto", + "058": "Idrondata", + "059": "Semebomba", + "060": "Psicoshock", + "062": "Forzantica", + "063": "Rocciotomba", + "064": "Frana", + "065": "Gemmoforza", + "066": "Furtivombra", + "067": "Pugnodombra", + "069": "Funestovento", + "070": "Palla Ombra", + "072": "Bombagnete", + "074": "Metaltestata", + "075": "Caricaparabola", + "077": "Tuonopugno", + "078": "Tuono", + "079": "Fulmine", + "080": "Tornado", + "082": "Dragopulsar", + "083": "Dragartigli", + "084": "Incantavoce", + "085": "Assorbibacio", + "086": "Magibrillio", + "087": "Forza Lunare", + "088": "Carineria", + "089": "Velenocroce", + "090": "Fangobomba", + "091": "Fangonda", + "092": "Sporcolancio", + "094": "Ossoclava", + "095": "Battiterra", + "096": "Pantanobomba", + "099": "Segnoraggio", "100": "Forbice X", "101": "Nitrocarica", "102": "Pirolancio", @@ -76,7 +117,6 @@ "126": "Incornata", "127": "Pestone", "129": "Iperzanna", - "13": "Avvolgibotta", "131": "Corposcontro", "132": "Riposo", "133": "Scontro", @@ -84,10 +124,6 @@ "135": "Idropompa (Blastoise)", "136": "Avvolgibotta (Green)", "137": "Avvolgibotta (Pink)", - "14": "Iper Raggio", - "16": "Neropulsar", - "18": "Fango", - "20": "Presa", "200": "Tagliofuria", "201": "Coleomorso", "202": "Morso", @@ -98,7 +134,6 @@ "207": "Colpo Basso", "208": "Colpokarate", "209": "Braciere", - "21": "Ruotafuoco", "210": "Attacco d'Ala", "211": "Beccata", "212": "Leccata", @@ -109,7 +144,6 @@ "217": "Geloscheggia", "218": "Alitogelido", "219": "Attacco Rapido", - "22": "Megacorno", "220": "Graffio", "221": "Azione", "222": "Botta", @@ -129,7 +163,6 @@ "237": "Bolla", "238": "Finta", "239": "Alacciaio", - "24": "Lanciafiamme", "240": "Rogodenti", "241": "Spaccaroccia", "242": "Trasformazione", @@ -150,7 +183,6 @@ "257": "Aeroattacco", "258": "Sabbiotomba", "259": "Cadutamassi", - "26": "Fossa", "260": "Infestatione", "261": "Entomoblocco", "262": "Ventargenteo", @@ -171,79 +203,119 @@ "277": "Oltraggio", "278": "Urlorabbia", "279": "Sgranocchio", - "28": "Incrocolpo", "280": "Ripicca", "281": "Introforza", - "30": "Psicoraggio", - "31": "Terremoto", - "32": "Pietrataglio", - "33": "Gelopugno", - "34": "Cuorestampo", - "35": "Scarica", - "36": "Cannonflash", - "38": "Perforbecco", - "39": "Geloraggio", - "40": "Bora", - "42": "Ondacalda", - "45": "Aeroassalto", - "46": "Giravvita", - "47": "Fiortempesta", - "48": "Megassorbimento", - "49": "Ronzio", - "50": "Velenodenti", - "51": "Nottesferza", - "53": "Bollaraggio", - "54": "Sottomissione", - "56": "Calciobasso", - "57": "Acquagetto", - "58": "Idrondata", - "59": "Semebomba", - "60": "Psicoshock", - "62": "Forzantica", - "63": "Rocciotomba", - "64": "Frana", - "65": "Gemmoforza", - "66": "Furtivombra", - "67": "Pugnodombra", - "69": "Funestovento", - "70": "Palla Ombra", - "72": "Bombagnete", - "74": "Metaltestata", - "75": "Caricaparabola", - "77": "Tuonopugno", - "78": "Tuono", - "79": "Fulmine", - "80": "Tornado", - "82": "Dragopulsar", - "83": "Dragartigli", - "84": "Incantavoce", - "85": "Assorbibacio", - "86": "Magibrillio", - "87": "Forza Lunare", - "88": "Carineria", - "89": "Velenocroce", - "90": "Fangobomba", - "91": "Fangonda", - "92": "Sporcolancio", - "94": "Ossoclava", - "95": "Battiterra", - "96": "Pantanobomba", - "99": "Segnoraggio", - "281": "Introforza", - "282": "Riduttore", - "283": "Cascata", - "284": "Surf", - "285": "Dragobolide", - "286": "Obbliderio", - "287": "Sbadiglio", - "288": "Psicoslancio", - "289": "Primopulsar", - "290": "Spade Telluriche", + "282": "Riduttore", + "283": "Cascata", + "284": "Surf", + "285": "Dragobolide", + "286": "Obbliderio", + "287": "Sbadiglio", + "288": "Psicoslancio", + "289": "Primopulsar", + "290": "Spade Telluriche", "291": "Regalino" }, "pokemon": { - "1": "Bulbasaur", - "10": "Caterpie", + "001": "Bulbasaur", + "002": "Ivysaur", + "003": "Venusaur", + "004": "Charmander", + "005": "Charmeleon", + "006": "Charizard", + "007": "Squirtle", + "008": "Wartortle", + "009": "Blastoise", + "010": "Caterpie", + "011": "Metapod", + "012": "Butterfree", + "013": "Weedle", + "014": "Kakuna", + "015": "Beedrill", + "016": "Pidgey", + "017": "Pidgeotto", + "018": "Pidgeot", + "019": "Rattata", + "020": "Raticate", + "021": "Spearow", + "022": "Fearow", + "023": "Ekans", + "024": "Arbok", + "025": "Pikachu", + "026": "Raichu", + "027": "Sandshrew", + "028": "Sandslash", + "029": "Nidoran\u2640", + "030": "Nidorina", + "031": "Nidoqueen", + "032": "Nidoran\u2642", + "033": "Nidorino", + "034": "Nidoking", + "035": "Clefairy", + "036": "Clefable", + "037": "Vulpix", + "038": "Ninetales", + "039": "Jigglypuff", + "040": "Wigglytuff", + "041": "Zubat", + "042": "Golbat", + "043": "Oddish", + "044": "Gloom", + "045": "Vileplume", + "046": "Paras", + "047": "Parasect", + "048": "Venonat", + "049": "Venomoth", + "050": "Diglett", + "051": "Dugtrio", + "052": "Meowth", + "053": "Persian", + "054": "Psyduck", + "055": "Golduck", + "056": "Mankey", + "057": "Primeape", + "058": "Growlithe", + "059": "Arcanine", + "060": "Poliwag", + "061": "Poliwhirl", + "062": "Poliwrath", + "063": "Abra", + "064": "Kadabra", + "065": "Alakazam", + "066": "Machop", + "067": "Machoke", + "068": "Machamp", + "069": "Bellsprout", + "070": "Weepinbell", + "071": "Victreebel", + "072": "Tentacool", + "073": "Tentacruel", + "074": "Geodude", + "075": "Graveler", + "076": "Golem", + "077": "Ponyta", + "078": "Rapidash", + "079": "Slowpoke", + "080": "Slowbro", + "081": "Magnemite", + "082": "Magneton", + "083": "Farfetch'd", + "084": "Doduo", + "085": "Dodrio", + "086": "Seel", + "087": "Dewgong", + "088": "Grimer", + "089": "Muk", + "090": "Shellder", + "091": "Cloyster", + "092": "Gastly", + "093": "Haunter", + "094": "Gengar", + "095": "Onix", + "096": "Drowzee", + "097": "Hypno", + "098": "Krabby", + "099": "Kingler", "100": "Voltorb", "101": "Electrode", "102": "Exeggcute", @@ -254,7 +326,6 @@ "107": "Hitmonchan", "108": "Lickitung", "109": "Koffing", - "11": "Metapod", "110": "Weezing", "111": "Rhyhorn", "112": "Rhydon", @@ -265,7 +336,6 @@ "117": "Seadra", "118": "Goldeen", "119": "Seaking", - "12": "Butterfree", "120": "Staryu", "121": "Starmie", "122": "Mr. Mime", @@ -276,7 +346,6 @@ "127": "Pinsir", "128": "Tauros", "129": "Magikarp", - "13": "Weedle", "130": "Gyarados", "131": "Lapras", "132": "Ditto", @@ -287,7 +356,6 @@ "137": "Porygon", "138": "Omanyte", "139": "Omastar", - "14": "Kakuna", "140": "Kabuto", "141": "Kabutops", "142": "Aerodactyl", @@ -298,7 +366,6 @@ "147": "Dratini", "148": "Dragonair", "149": "Dragonite", - "15": "Beedrill", "150": "Mewtwo", "151": "Mew", "152": "Chikorita", @@ -309,7 +376,6 @@ "157": "Typhlosion", "158": "Totodile", "159": "Croconaw", - "16": "Pidgey", "160": "Feraligatr", "161": "Sentret", "162": "Furret", @@ -320,7 +386,6 @@ "167": "Spinarak", "168": "Ariados", "169": "Crobat", - "17": "Pidgeotto", "170": "Chinchou", "171": "Lanturn", "172": "Pichu", @@ -331,7 +396,6 @@ "177": "Natu", "178": "Xatu", "179": "Mareep", - "18": "Pidgeot", "180": "Flaaffy", "181": "Ampharos", "182": "Bellossom", @@ -342,7 +406,6 @@ "187": "Hoppip", "188": "Skiploom", "189": "Jumpluff", - "19": "Rattata", "190": "Aipom", "191": "Sunkern", "192": "Sunflora", @@ -353,8 +416,6 @@ "197": "Umbreon", "198": "Murkrow", "199": "Slowking", - "2": "Ivysaur", - "20": "Raticate", "200": "Misdreavus", "201": "Unown", "202": "Wobbuffet", @@ -365,7 +426,6 @@ "207": "Gligar", "208": "Steelix", "209": "Snubbull", - "21": "Spearow", "210": "Granbull", "211": "Qwilfish", "212": "Scizor", @@ -376,7 +436,6 @@ "217": "Ursaring", "218": "Slugma", "219": "Magcargo", - "22": "Fearow", "220": "Swinub", "221": "Piloswine", "222": "Corsola", @@ -387,7 +446,6 @@ "227": "Skarmory", "228": "Houndour", "229": "Houndoom", - "23": "Ekans", "230": "Kingdra", "231": "Phanpy", "232": "Donphan", @@ -398,7 +456,6 @@ "237": "Hitmontop", "238": "Smoochum", "239": "Elekid", - "24": "Arbok", "240": "Magby", "241": "Miltank", "242": "Blissey", @@ -409,7 +466,6 @@ "247": "Pupitar", "248": "Tyranitar", "249": "Lugia", - "25": "Pikachu", "250": "Ho-Oh", "251": "Celebi", "252": "Treecko", @@ -420,7 +476,6 @@ "257": "Blaziken", "258": "Mudkip", "259": "Marshtomp", - "26": "Raichu", "260": "Swampert", "261": "Poochyena", "262": "Mightyena", @@ -431,7 +486,6 @@ "267": "Beautifly", "268": "Cascoon", "269": "Dustox", - "27": "Sandshrew", "270": "Lotad", "271": "Lombre", "272": "Ludicolo", @@ -442,7 +496,6 @@ "277": "Swellow", "278": "Wingull", "279": "Pelipper", - "28": "Sandslash", "280": "Ralts", "281": "Kirlia", "282": "Gardevoir", @@ -453,7 +506,6 @@ "287": "Slakoth", "288": "Vigoroth", "289": "Slaking", - "29": "Nidoran\u2640", "290": "Nincada", "291": "Ninjask", "292": "Shedinja", @@ -464,8 +516,6 @@ "297": "Hariyama", "298": "Azurill", "299": "Nosepass", - "3": "Venusaur", - "30": "Nidorina", "300": "Skitty", "301": "Delcatty", "302": "Sableye", @@ -476,7 +526,6 @@ "307": "Meditite", "308": "Medicham", "309": "Electrike", - "31": "Nidoqueen", "310": "Manectric", "311": "Plusle", "312": "Minun", @@ -487,7 +536,6 @@ "317": "Swalot", "318": "Carvanha", "319": "Sharpedo", - "32": "Nidoran\u2642", "320": "Wailmer", "321": "Wailord", "322": "Numel", @@ -498,7 +546,6 @@ "327": "Spinda", "328": "Trapinch", "329": "Vibrava", - "33": "Nidorino", "330": "Flygon", "331": "Cacnea", "332": "Cacturne", @@ -509,7 +556,6 @@ "337": "Lunatone", "338": "Solrock", "339": "Barboach", - "34": "Nidoking", "340": "Whiscash", "341": "Corphish", "342": "Crawdaunt", @@ -520,7 +566,6 @@ "347": "Anorith", "348": "Armaldo", "349": "Feebas", - "35": "Clefairy", "350": "Milotic", "351": "Castform", "352": "Kecleon", @@ -531,7 +576,6 @@ "357": "Tropius", "358": "Chimecho", "359": "Absol", - "36": "Clefable", "360": "Wynaut", "361": "Snorunt", "362": "Glalie", @@ -542,7 +586,6 @@ "367": "Huntail", "368": "Gorebyss", "369": "Relicanth", - "37": "Vulpix", "370": "Luvdisc", "371": "Bagon", "372": "Shelgon", @@ -553,7 +596,6 @@ "377": "Regirock", "378": "Regice", "379": "Registeel", - "38": "Ninetales", "380": "Latias", "381": "Latios", "382": "Kyogre", @@ -564,7 +606,6 @@ "387": "Turtwig", "388": "Grotle", "389": "Torterra", - "39": "Jigglypuff", "390": "Chimchar", "391": "Monferno", "392": "Infernape", @@ -575,8 +616,6 @@ "397": "Staravia", "398": "Staraptor", "399": "Bidoof", - "4": "Charmander", - "40": "Wigglytuff", "400": "Bibarel", "401": "Kricketot", "402": "Kricketune", @@ -587,7 +626,6 @@ "407": "Roserade", "408": "Cranidos", "409": "Rampardos", - "41": "Zubat", "410": "Shieldon", "411": "Bastiodon", "412": "Burmy", @@ -598,7 +636,6 @@ "417": "Pachirisu", "418": "Buizel", "419": "Floatzel", - "42": "Golbat", "420": "Cherubi", "421": "Cherrim", "422": "Shellos", @@ -609,7 +646,6 @@ "427": "Buneary", "428": "Lopunny", "429": "Mismagius", - "43": "Oddish", "430": "Honchkrow", "431": "Glameow", "432": "Purugly", @@ -620,7 +656,6 @@ "437": "Bronzong", "438": "Bonsly", "439": "Mime Jr.", - "44": "Gloom", "440": "Happiny", "441": "Chatot", "442": "Spiritomb", @@ -631,7 +666,6 @@ "447": "Riolu", "448": "Lucario", "449": "Hippopotas", - "45": "Vileplume", "450": "Hippowdon", "451": "Skorupi", "452": "Drapion", @@ -642,7 +676,6 @@ "457": "Lumineon", "458": "Mantyke", "459": "Snover", - "46": "Paras", "460": "Abomasnow", "461": "Weavile", "462": "Magnezone", @@ -653,7 +686,6 @@ "467": "Magmortar", "468": "Togekiss", "469": "Yanmega", - "47": "Parasect", "470": "Leafeon", "471": "Glaceon", "472": "Gliscor", @@ -664,7 +696,6 @@ "477": "Dusknoir", "478": "Froslass", "479": "Rotom", - "48": "Venonat", "480": "Uxie", "481": "Mesprit", "482": "Azelf", @@ -675,7 +706,6 @@ "487": "Giratina", "488": "Cresselia", "489": "Phione", - "49": "Venomoth", "490": "Manaphy", "491": "Darkrai", "492": "Shaymin", @@ -686,8 +716,6 @@ "497": "Serperior", "498": "Tepig", "499": "Pignite", - "5": "Charmeleon", - "50": "Diglett", "500": "Emboar", "501": "Oshawott", "502": "Dewott", @@ -698,7 +726,6 @@ "507": "Herdier", "508": "Stoutland", "509": "Purrloin", - "51": "Dugtrio", "510": "Liepard", "511": "Pansage", "512": "Simisage", @@ -709,7 +736,6 @@ "517": "Munna", "518": "Musharna", "519": "Pidove", - "52": "Meowth", "520": "Tranquill", "521": "Unfezant", "522": "Blitzle", @@ -720,7 +746,6 @@ "527": "Woobat", "528": "Swoobat", "529": "Drilbur", - "53": "Persian", "530": "Excadrill", "531": "Audino", "532": "Timburr", @@ -731,7 +756,6 @@ "537": "Seismitoad", "538": "Throh", "539": "Sawk", - "54": "Psyduck", "540": "Sewaddle", "541": "Swadloon", "542": "Leavanny", @@ -742,7 +766,6 @@ "547": "Whimsicott", "548": "Petilil", "549": "Lilligant", - "55": "Golduck", "550": "Basculin", "551": "Sandile", "552": "Krokorok", @@ -753,7 +776,6 @@ "557": "Dwebble", "558": "Crustle", "559": "Scraggy", - "56": "Mankey", "560": "Scrafty", "561": "Sigilyph", "562": "Yamask", @@ -764,7 +786,6 @@ "567": "Archeops", "568": "Trubbish", "569": "Garbodor", - "57": "Primeape", "570": "Zorua", "571": "Zoroark", "572": "Minccino", @@ -775,7 +796,6 @@ "577": "Solosis", "578": "Duosion", "579": "Reuniclus", - "58": "Growlithe", "580": "Ducklett", "581": "Swanna", "582": "Vanillite", @@ -786,7 +806,6 @@ "587": "Emolga", "588": "Karrablast", "589": "Escavalier", - "59": "Arcanine", "590": "Foongus", "591": "Amoonguss", "592": "Frillish", @@ -797,8 +816,6 @@ "597": "Ferroseed", "598": "Ferrothorn", "599": "Klink", - "6": "Charizard", - "60": "Poliwag", "600": "Klang", "601": "Klinklang", "602": "Tynamo", @@ -809,7 +826,6 @@ "607": "Litwick", "608": "Lampent", "609": "Chandelure", - "61": "Poliwhirl", "610": "Axew", "611": "Fraxure", "612": "Haxorus", @@ -820,7 +836,6 @@ "617": "Accelgor", "618": "Stunfisk", "619": "Mienfoo", - "62": "Poliwrath", "620": "Mienshao", "621": "Druddigon", "622": "Golett", @@ -831,7 +846,6 @@ "627": "Rufflet", "628": "Braviary", "629": "Vullaby", - "63": "Abra", "630": "Mandibuzz", "631": "Heatmor", "632": "Durant", @@ -842,7 +856,6 @@ "637": "Volcarona", "638": "Cobalion", "639": "Terrakion", - "64": "Kadabra", "640": "Virizion", "641": "Tornadus", "642": "Thundurus", @@ -853,7 +866,6 @@ "647": "Keldeo", "648": "Meloetta", "649": "Genesect", - "65": "Alakazam", "650": "Chespin", "651": "Quilladin", "652": "Chesnaught", @@ -864,7 +876,6 @@ "657": "Frogadier", "658": "Greninja", "659": "Bunnelby", - "66": "Machop", "660": "Diggersby", "661": "Fletchling", "662": "Fletchinder", @@ -875,7 +886,6 @@ "667": "Litleo", "668": "Pyroar", "669": "Flab\u00e9b\u00e9", - "67": "Machoke", "670": "Floette", "671": "Florges", "672": "Skiddo", @@ -886,7 +896,6 @@ "677": "Espurr", "678": "Meowstic", "679": "Honedge", - "68": "Machamp", "680": "Doublade", "681": "Aegislash", "682": "Spritzee", @@ -897,7 +906,6 @@ "687": "Malamar", "688": "Binacle", "689": "Barbaracle", - "69": "Bellsprout", "690": "Skrelp", "691": "Dragalge", "692": "Clauncher", @@ -908,8 +916,6 @@ "697": "Tyrantrum", "698": "Amaura", "699": "Aurorus", - "7": "Squirtle", - "70": "Weepinbell", "700": "Sylveon", "701": "Hawlucha", "702": "Dedenne", @@ -920,7 +926,6 @@ "707": "Klefki", "708": "Phantump", "709": "Trevenant", - "71": "Victreebel", "710": "Pumpkaboo", "711": "Gourgeist", "712": "Bergmite", @@ -931,56 +936,50 @@ "717": "Yveltal", "718": "Zygarde", "719": "Diancie", - "72": "Tentacool", "720": "Hoopa", - "721": "Volcanion", - "73": "Tentacruel", - "74": "Geodude", - "75": "Graveler", - "76": "Golem", - "77": "Ponyta", - "78": "Rapidash", - "79": "Slowpoke", - "8": "Wartortle", - "80": "Slowbro", - "81": "Magnemite", - "82": "Magneton", - "83": "Farfetch'd", - "84": "Doduo", - "85": "Dodrio", - "86": "Seel", - "87": "Dewgong", - "88": "Grimer", - "89": "Muk", - "9": "Blastoise", - "90": "Shellder", - "91": "Cloyster", - "92": "Gastly", - "93": "Haunter", - "94": "Gengar", - "95": "Onix", - "96": "Drowzee", - "97": "Hypno", - "98": "Krabby", - "99": "Kingler" + "721": "Volcanion" + }, + "sizes": { + "001": "minuscolo", + "002": "piccolo", + "003": "normale", + "004": "grande", + "005": "enorme" }, "teams": { - "0": "Neutrale", - "1": "Saggezza", - "2": "Coraggio", - "3": "Istinto" - }, + "000": "Neutrale", + "001": "Saggezza", + "002": "Coraggio", + "003": "Istinto" + }, + "types": { + "001": "Normale", + "002": "Combattimento", + "003": "Volare", + "004": "Veleno", + "005": "Terra", + "006": "Rock", + "007": "Roccia", + "008": "Fantasma", + "009": "Acciaio", + "010": "Fuoco", + "011": "Acqua", + "012": "Erba", + "013": "Elettrico", + "014": "Psichico", + "015": "Ghiaccio", + "016": "Drago", + "017": "Fata", + "018": "Scuro" + }, "weather": { - "0": "Nessuna", - "1": "Chiaro", - "2": "Pioggia", - "3": "Parzialmente nuvoloso", - "4": "Nuvoloso", - "5": "Ventoso", - "6": "La neve", - "7": "Nebbia" - }, - "misc": { - "boosted": "potenziato" + "000": "Nessuna", + "001": "Chiaro", + "002": "Pioggia", + "003": "Parzialmente nuvoloso", + "004": "Nuvoloso", + "005": "Ventoso", + "006": "La neve", + "007": "Nebbia" } -} +} \ No newline at end of file diff --git a/locales/ko.json b/locales/ko.json index 24ff8fe56..e91e75fc7 100644 --- a/locales/ko.json +++ b/locales/ko.json @@ -1,58 +1,99 @@ { - "leaders": { - "0": "\uc70c\ub85c\uc6b0\ubc15\uc0ac", - "1": "\ube14\ub791\uc26c", - "2": "\uce78\ub378\ub77c", - "3": "\uc2a4\ud30c\ud06c" - }, - "sizes": { - "1": "\uc791\uc740", - "2": "\uc791\uc740", - "3": "\ud45c\uc900", - "4": "\ud070", - "5": "\uac70\ub300\ud55c" - }, "costumes": { - "25": { - "1": "\ucd95\uc81c \ubaa8\uc790", - "2": "\ud30c\ud2f0 \ubaa8\uc790", - "3": "Ash \ubaa8\uc790", - "4": "\ub9c8\ub140 \ubaa8\uc790" - }, - "26": { - "1": "\ucd95\uc81c \ubaa8\uc790", - "2": "\ud30c\ud2f0 \ubaa8\uc790", - "3": "Ash \ubaa8\uc790", - "4": "\ub9c8\ub140 \ubaa8\uc790" - }, + "025": { + "001": "\ucd95\uc81c \ubaa8\uc790", + "002": "\ud30c\ud2f0 \ubaa8\uc790", + "003": "Ash \ubaa8\uc790", + "004": "\ub9c8\ub140 \ubaa8\uc790" + }, + "026": { + "001": "\ucd95\uc81c \ubaa8\uc790", + "002": "\ud30c\ud2f0 \ubaa8\uc790", + "003": "Ash \ubaa8\uc790", + "004": "\ub9c8\ub140 \ubaa8\uc790" + }, "172": { - "1": "\ucd95\uc81c \ubaa8\uc790", - "2": "\ud30c\ud2f0 \ubaa8\uc790", - "3": "Ash \ubaa8\uc790", - "4": "\ub9c8\ub140 \ubaa8\uc790" + "001": "\ucd95\uc81c \ubaa8\uc790", + "002": "\ud30c\ud2f0 \ubaa8\uc790", + "003": "Ash \ubaa8\uc790", + "004": "\ub9c8\ub140 \ubaa8\uc790" } - }, - "types": { - "1": "\ubcf4\ud1b5", - "2": "\ud30c\uc774\ud305", - "3": "\ud50c\ub77c\uc789", - "4": "\ub3c5", - "5": "\ubc14\ub2e5", - "6": "\ub85d", - "7": "\ubc84\uadf8", - "8": "\uc720\ub839", - "9": "\uc2a4\ud2f8", - "10": "\ubd88", - "11": "\ubb3c", - "12": "\uc794\ub514", - "13": "\uc804\uae30", - "14": "\uc2ec\ub839", - "15": "\uc5bc\uc74c", - "16": "\ub4dc\ub798\uace4", - "17": "\uc694\uc815", - "18": "\uc5b4\ub460" - }, + }, + "leaders": { + "000": "\uc70c\ub85c\uc6b0\ubc15\uc0ac", + "001": "\ube14\ub791\uc26c", + "002": "\uce78\ub378\ub77c", + "003": "\uc2a4\ud30c\ud06c" + }, + "misc": { + "boosted": "\ubd80\uc591 \ub41c" + }, "moves": { + "013": "\uae40\ubc25\ub9d0\uc774", + "014": "\ud30c\uad34\uad11\uc120", + "016": "\uc545\uc758\ud30c\ub3d9", + "018": "\uc624\ubb3c\uacf5\uaca9", + "020": "\ucc1d\uae30", + "021": "\ud654\uc5fc\uc790\ub3d9\ucc28", + "022": "\uba54\uac00\ud3f0", + "024": "\ud654\uc5fc\ubc29\uc0ac", + "026": "\uad6c\uba4d\ud30c\uae30", + "028": "\ud06c\ub85c\uc2a4\ucd19", + "030": "\ud658\uc0c1\ube54", + "031": "\uc9c0\uc9c4", + "032": "\uc2a4\ud1a4\uc5d0\uc9c0", + "033": "\ub0c9\ub3d9\ud380\uce58", + "034": "\ud558\ud2b8\uc2a4\ud0ec\ud504", + "035": "\ubc29\uc804", + "036": "\ub7ec\uc2a4\ud130\uce90\ub17c", + "038": "\ud68c\uc804\ubd80\ub9ac", + "039": "\ub0c9\ub3d9\ube54", + "040": "\ub208\ubcf4\ub77c", + "042": "\uc5f4\ud48d", + "045": "\uc81c\ube44\ubc18\ud658", + "046": "\ub4dc\ub9b4\ub77c\uc774\ub108", + "047": "\uaf43\ubcf4\ub77c", + "048": "\uba54\uac00\ub4dc\ub808\uc778", + "049": "\ubc8c\ub808\uc758\uc57c\ub2e8\ubc95\uc11d", + "050": "\ub3c5\uc5c4\ub2c8", + "051": "\uae5c\uc9dd\ubca0\uae30", + "053": "\uac70\ud488\uad11\uc120", + "054": "\uc9c0\uc625\uc758\ubc14\ud034", + "056": "\ub85c\ud0a5", + "057": "\uc544\ucfe0\uc544\uc81c\ud2b8", + "058": "\uc544\ucfe0\uc544\ud14c\uc77c", + "059": "\uc528\ud3ed\ud0c4", + "060": "\uc0ac\uc774\ucf54\uc1fc\ud06c", + "062": "\uc6d0\uc2dc\uc758\ud798", + "063": "\uc554\uc11d\ubd09\uc778", + "064": "\uc2a4\ud1a4\uc0e4\uc6cc", + "065": "\ud30c\uc6cc\uc82c", + "066": "\uc57c\uc2b5", + "067": "\uc100\ub3c4\ud380\uce58", + "069": "\uad34\uc0c1\ud55c\ubc14\ub78c", + "070": "\uc100\ub3c4\ubcfc", + "072": "\ub9c8\uadf8\ub137\ubd04", + "074": "\uc544\uc774\uc5b8\ud5e4\ub4dc", + "075": "\ud30c\ub77c\ubcfc\ub77c\ucc28\uc9c0", + "077": "\ubc88\uac1c\ud380\uce58", + "078": "\ubc88\uac1c", + "079": "10\ub9cc\ubcfc\ud2b8", + "080": "\ud68c\uc624\ub9ac", + "082": "\uc6a9\uc758\ud30c\ub3d9", + "083": "\ub4dc\ub798\uace4\ud06c\ub8e8", + "084": "\ucc28\ubc0d\ubcf4\uc774\uc2a4", + "085": "\ub4dc\ub808\uc778\ud0a4\uc2a4", + "086": "\ub9e4\uc9c0\uceec\uc0e4\uc778", + "087": "\ubb38\ud3ec\uc2a4", + "088": "\uce58\uadfc\uac70\ub9ac\uae30", + "089": "\ud06c\ub85c\uc2a4\ud3ec\uc774\uc98c", + "090": "\uc624\ubb3c\ud3ed\ud0c4", + "091": "\uc624\ubb3c\uc6e8\uc774\ube0c", + "092": "\ub354\uc2a4\ud2b8\uc288\ud2b8", + "094": "\ubf08\ub2e4\uadc0\uce58\uae30", + "095": "\ub545\uace0\ub974\uae30", + "096": "\uc9c4\ud759\ud3ed\ud0c4", + "099": "\uc2dc\uadf8\ub110\ube54", "100": "\uc2dc\uc800\ud06c\ub85c\uc2a4", "101": "\ub2c8\ud2b8\ub85c\ucc28\uc9c0", "102": "\ubd88\uaf43\ud280\uae30\uae30", @@ -76,14 +117,9 @@ "126": "\ubfd4\ucc0c\ub974\uae30", "127": "\uc9d3\ubc1f\uae30", "129": "\ud544\uc0b4\uc55e\ub2c8", - "13": "\uae40\ubc25\ub9d0\uc774", "131": "\ub204\ub974\uae30", "132": "\uc7a0\uc790\uae30", "133": "\ubc1c\ubc84\ub465", - "14": "\ud30c\uad34\uad11\uc120", - "16": "\uc545\uc758\ud30c\ub3d9", - "18": "\uc624\ubb3c\uacf5\uaca9", - "20": "\ucc1d\uae30", "200": "\uc5f0\uc18d\uc790\ub974\uae30", "201": "\ubc8c\ub808\uba39\uc74c", "202": "\ubb3c\uae30", @@ -94,7 +130,6 @@ "207": "\uc548\ub2e4\ub9ac\uac78\uae30", "208": "\ud0dc\uad8c\ub2f9\uc218", "209": "\ubd88\uaf43\uc138\ub840", - "21": "\ud654\uc5fc\uc790\ub3d9\ucc28", "210": "\ub0a0\uac1c\uce58\uae30", "211": "\ucabc\uae30", "212": "\ud565\uae30", @@ -105,7 +140,6 @@ "217": "\uc5bc\uc74c\ubb49\uce58", "218": "\uc5bc\uc74c\uc228\uacb0", "219": "\uc804\uad11\uc11d\ud654", - "22": "\uba54\uac00\ud3f0", "220": "\ud560\ud034\uae30", "221": "\ubab8\ud1b5\ubc15\uce58\uae30", "222": "\ub9c9\uce58\uae30", @@ -125,71 +159,110 @@ "237": "\uac70\ud488", "238": "\uc18d\uc5ec\ub54c\ub9ac\uae30", "239": "\uac15\ucca0\ub0a0\uac1c", - "24": "\ud654\uc5fc\ubc29\uc0ac", "240": "\ubd88\uaf43\uc5c4\ub2c8", "241": "\ubc14\uc704\uae68\uae30", - "242": "\ubcc0\uc2e0", - "26": "\uad6c\uba4d\ud30c\uae30", - "28": "\ud06c\ub85c\uc2a4\ucd19", - "30": "\ud658\uc0c1\ube54", - "31": "\uc9c0\uc9c4", - "32": "\uc2a4\ud1a4\uc5d0\uc9c0", - "33": "\ub0c9\ub3d9\ud380\uce58", - "34": "\ud558\ud2b8\uc2a4\ud0ec\ud504", - "35": "\ubc29\uc804", - "36": "\ub7ec\uc2a4\ud130\uce90\ub17c", - "38": "\ud68c\uc804\ubd80\ub9ac", - "39": "\ub0c9\ub3d9\ube54", - "40": "\ub208\ubcf4\ub77c", - "42": "\uc5f4\ud48d", - "45": "\uc81c\ube44\ubc18\ud658", - "46": "\ub4dc\ub9b4\ub77c\uc774\ub108", - "47": "\uaf43\ubcf4\ub77c", - "48": "\uba54\uac00\ub4dc\ub808\uc778", - "49": "\ubc8c\ub808\uc758\uc57c\ub2e8\ubc95\uc11d", - "50": "\ub3c5\uc5c4\ub2c8", - "51": "\uae5c\uc9dd\ubca0\uae30", - "53": "\uac70\ud488\uad11\uc120", - "54": "\uc9c0\uc625\uc758\ubc14\ud034", - "56": "\ub85c\ud0a5", - "57": "\uc544\ucfe0\uc544\uc81c\ud2b8", - "58": "\uc544\ucfe0\uc544\ud14c\uc77c", - "59": "\uc528\ud3ed\ud0c4", - "60": "\uc0ac\uc774\ucf54\uc1fc\ud06c", - "62": "\uc6d0\uc2dc\uc758\ud798", - "63": "\uc554\uc11d\ubd09\uc778", - "64": "\uc2a4\ud1a4\uc0e4\uc6cc", - "65": "\ud30c\uc6cc\uc82c", - "66": "\uc57c\uc2b5", - "67": "\uc100\ub3c4\ud380\uce58", - "69": "\uad34\uc0c1\ud55c\ubc14\ub78c", - "70": "\uc100\ub3c4\ubcfc", - "72": "\ub9c8\uadf8\ub137\ubd04", - "74": "\uc544\uc774\uc5b8\ud5e4\ub4dc", - "75": "\ud30c\ub77c\ubcfc\ub77c\ucc28\uc9c0", - "77": "\ubc88\uac1c\ud380\uce58", - "78": "\ubc88\uac1c", - "79": "10\ub9cc\ubcfc\ud2b8", - "80": "\ud68c\uc624\ub9ac", - "82": "\uc6a9\uc758\ud30c\ub3d9", - "83": "\ub4dc\ub798\uace4\ud06c\ub8e8", - "84": "\ucc28\ubc0d\ubcf4\uc774\uc2a4", - "85": "\ub4dc\ub808\uc778\ud0a4\uc2a4", - "86": "\ub9e4\uc9c0\uceec\uc0e4\uc778", - "87": "\ubb38\ud3ec\uc2a4", - "88": "\uce58\uadfc\uac70\ub9ac\uae30", - "89": "\ud06c\ub85c\uc2a4\ud3ec\uc774\uc98c", - "90": "\uc624\ubb3c\ud3ed\ud0c4", - "91": "\uc624\ubb3c\uc6e8\uc774\ube0c", - "92": "\ub354\uc2a4\ud2b8\uc288\ud2b8", - "94": "\ubf08\ub2e4\uadc0\uce58\uae30", - "95": "\ub545\uace0\ub974\uae30", - "96": "\uc9c4\ud759\ud3ed\ud0c4", - "99": "\uc2dc\uadf8\ub110\ube54" + "242": "\ubcc0\uc2e0" }, "pokemon": { - "1": "\uc774\uc0c1\ud574\uc528", - "10": "\uce90\ud130\ud53c", + "001": "\uc774\uc0c1\ud574\uc528", + "002": "\uc774\uc0c1\ud574\ud480", + "003": "\uc774\uc0c1\ud574\uaf43", + "004": "\ud30c\uc774\ub9ac", + "005": "\ub9ac\uc790\ub4dc", + "006": "\ub9ac\uc790\ubabd", + "007": "\uaf2c\ubd80\uae30", + "008": "\uc5b4\ub2c8\ubd80\uae30", + "009": "\uac70\ubd81\uc655", + "010": "\uce90\ud130\ud53c", + "011": "\ub2e8\ub370\uae30", + "012": "\ubc84\ud130\ud50c", + "013": "\ubfd4\ucda9\uc774", + "014": "\ub531\ucda9\uc774", + "015": "\ub3c5\uce68\ubd95", + "016": "\uad6c\uad6c", + "017": "\ud53c\uc8e4", + "018": "\ud53c\uc8e4\ud22c", + "019": "\uaf2c\ub81b", + "020": "\ub808\ud2b8\ub77c", + "021": "\uae68\ube44\ucc38", + "022": "\uae68\ube44\ub4dc\ub9b4\uc870", + "023": "\uc544\ubcf4", + "024": "\uc544\ubcf4\ud06c", + "025": "\ud53c\uce74\uce04", + "026": "\ub77c\uc774\uce04", + "027": "\ubaa8\ub798\ub450\uc9c0", + "028": "\uace0\uc9c0", + "029": "\ub2c8\ub4dc\ub7f0\u2640", + "030": "\ub2c8\ub4dc\ub9ac\ub098", + "031": "\ub2c8\ub4dc\ud038", + "032": "\ub2c8\ub4dc\ub7f0\u2642", + "033": "\ub2c8\ub4dc\ub9ac\ub178", + "034": "\ub2c8\ub4dc\ud0b9", + "035": "\uc090\uc090", + "036": "\ud53d\uc2dc", + "037": "\uc2dd\uc2a4\ud14c\uc77c", + "038": "\ub098\uc778\ud14c\uc77c", + "039": "\ud478\ub9b0", + "040": "\ud478\ud06c\ub9b0", + "041": "\uc8fc\ubc43", + "042": "\uace8\ubc43", + "043": "\ub69c\ubc85\ucd78", + "044": "\ub0c4\uc0c8\uaf2c", + "045": "\ub77c\ud50c\ub808\uc2dc\uc544", + "046": "\ud30c\ub77c\uc2a4", + "047": "\ud30c\ub77c\uc139\ud2b8", + "048": "\ucf58\ud321", + "049": "\ub3c4\ub098\ub9ac", + "050": "\ub514\uadf8\ub2e4", + "051": "\ub2e5\ud2b8\ub9ac\uc624", + "052": "\ub098\uc639", + "053": "\ud398\ub974\uc2dc\uc628", + "054": "\uace0\ub77c\ud30c\ub355", + "055": "\uace8\ub355", + "056": "\ub9dd\ud0a4", + "057": "\uc131\uc6d0\uc22d", + "058": "\uac00\ub514", + "059": "\uc708\ub514", + "060": "\ubc1c\ucc59\uc774", + "061": "\uc288\ub959\ucc59\uc774", + "062": "\uac15\ucc59\uc774", + "063": "\uce90\uc774\uc2dc", + "064": "\uc724\uac94\ub77c", + "065": "\ud6c4\ub518", + "066": "\uc54c\ud1b5\ubaac", + "067": "\uadfc\uc721\ubaac", + "068": "\uad34\ub825\ubaac", + "069": "\ubaa8\ub2e4\ud53c", + "070": "\uc6b0\uce20\ub3d9", + "071": "\uc6b0\uce20\ubcf4\ud2b8", + "072": "\uc655\ub208\ud574", + "073": "\ub3c5\ud30c\ub9ac", + "074": "\uaf2c\ub9c8\ub3cc", + "075": "\ub370\uad6c\ub9ac", + "076": "\ub531\uad6c\ub9ac", + "077": "\ud3ec\ub2c8\ud0c0", + "078": "\ub0a0\uc329\ub9c8", + "079": "\uc57c\ub3c8", + "080": "\uc57c\ub3c4\ub780", + "081": "\ucf54\uc77c", + "082": "\ub808\uc5b4\ucf54\uc77c", + "083": "\ud30c\uc624\ub9ac", + "084": "\ub450\ub450", + "085": "\ub450\ud2b8\ub9ac\uc624", + "086": "\uc96c\uc96c", + "087": "\uc96c\ub808\uace4", + "088": "\uc9c8\ud37d\uc774", + "089": "\uc9c8\ubed0\uae30", + "090": "\uc140\ub7ec", + "091": "\ud30c\ub974\uc140", + "092": "\uace0\uc624\uc2a4", + "093": "\uace0\uc6b0\uc2a4\ud2b8", + "094": "\ud32c\ud140", + "095": "\ub871\uc2a4\ud1a4", + "096": "\uc2ac\ub9ac\ud504", + "097": "\uc2ac\ub9ac\ud37c", + "098": "\ud06c\ub7a9", + "099": "\ud0b9\ud06c\ub7a9", "100": "\ucc0c\ub9ac\ub9ac\uacf5", "101": "\ubd90\ubcfc", "102": "\uc544\ub77c\ub9ac", @@ -200,7 +273,6 @@ "107": "\ud64d\uc218\ubaac", "108": "\ub0b4\ub8e8\ubbf8", "109": "\ub610\uac00\uc2a4", - "11": "\ub2e8\ub370\uae30", "110": "\ub610\ub3c4\uac00\uc2a4", "111": "\ubfd4\uce74\ub178", "112": "\ucf54\ubfcc\ub9ac", @@ -211,7 +283,6 @@ "117": "\uc2dc\ub4dc\ub77c", "118": "\ucf58\uce58", "119": "\uc655\ucf58\uce58", - "12": "\ubc84\ud130\ud50c", "120": "\ubcc4\uac00\uc0ac\ub9ac", "121": "\uc544\ucfe0\uc2a4\ud0c0", "122": "\ub9c8\uc784\ub9e8", @@ -222,7 +293,6 @@ "127": "\uc058\uc0ac\uc774\uc800", "128": "\ucf04\ud0c0\ub85c\uc2a4", "129": "\uc789\uc5b4\ud0b9", - "13": "\ubfd4\ucda9\uc774", "130": "\uac38\ub77c\ub3c4\uc2a4", "131": "\ub77c\ud504\ub77c\uc2a4", "132": "\uba54\ud0c0\ubabd", @@ -233,7 +303,6 @@ "137": "\ud3f4\ub9ac\uace4", "138": "\uc554\ub098\uc774\ud2b8", "139": "\uc554\uc2a4\ud0c0", - "14": "\ub531\ucda9\uc774", "140": "\ud22c\uad6c", "141": "\ud22c\uad6c\ud478\uc2a4", "142": "\ud504\ud14c\ub77c", @@ -244,7 +313,6 @@ "147": "\ubbf8\ub1fd", "148": "\uc2e0\ub1fd", "149": "\ub9dd\ub098\ub1fd", - "15": "\ub3c5\uce68\ubd95", "150": "\ubba4\uce20", "151": "\ubba4", "152": "\uce58\ucf54\ub9ac\ud0c0", @@ -255,7 +323,6 @@ "157": "\ube14\ub808\uc774\ubc94", "158": "\ub9ac\uc544\ucf54", "159": "\uc5d8\ub9ac\uac8c\uc774", - "16": "\uad6c\uad6c", "160": "\uc7a5\ud06c\ub85c\ub2e4\uc77c", "161": "\uaf2c\ub9ac\uc120", "162": "\ub2e4\uaf2c\ub9ac", @@ -266,7 +333,6 @@ "167": "\ud398\uc774\uac80", "168": "\uc544\ub9ac\uc544\ub3c4\uc2a4", "169": "\ud06c\ub85c\ubc43", - "17": "\ud53c\uc8e4", "170": "\ucd08\ub77c\uae30", "171": "\ub79c\ud134", "172": "\ud53c\uce04", @@ -277,7 +343,6 @@ "177": "\ub124\uc774\ud2f0", "178": "\ub124\uc774\ud2f0\uc624", "179": "\uba54\ub9ac\ud504", - "18": "\ud53c\uc8e4\ud22c", "180": "\ubcf4\uc1a1\uc1a1", "181": "\uc804\ub8e1", "182": "\uc544\ub974\ucf54", @@ -288,7 +353,6 @@ "187": "\ud1b5\ud1b5\ucf54", "188": "\ub450\ucf54", "189": "\uc19c\uc19c\ucf54", - "19": "\uaf2c\ub81b", "190": "\uc5d0\uc774\ud31c", "191": "\ud574\ub108\uce20", "192": "\ud574\ub8e8\ubbf8", @@ -299,8 +363,6 @@ "197": "\ube14\ub798\ud0a4", "198": "\ub2c8\ub85c\uc6b0", "199": "\uc57c\ub3c4\ud0b9", - "2": "\uc774\uc0c1\ud574\ud480", - "20": "\ub808\ud2b8\ub77c", "200": "\ubb34\uc6b0\ub9c8", "201": "\uc548\ub18d", "202": "\ub9c8\uc790\uc6a9", @@ -311,7 +373,6 @@ "207": "\uae00\ub77c\uc774\uac70", "208": "\uac15\ucca0\ud1a4", "209": "\ube14\ub8e8", - "21": "\uae68\ube44\ucc38", "210": "\uadf8\ub791\ube14\ub8e8", "211": "\uce68\ubc14\ub8e8", "212": "\ud56b\uc0bc", @@ -322,7 +383,6 @@ "217": "\ub9c1\uacf0", "218": "\ub9c8\uadf8\ub9c8\uadf8", "219": "\ub9c8\uadf8\uce74\ub974\uace0", - "22": "\uae68\ube44\ub4dc\ub9b4\uc870", "220": "\uafb8\uafb8\ub9ac", "221": "\uba54\uafb8\ub9ac", "222": "\ucf54\uc0b0\ud638", @@ -333,7 +393,6 @@ "227": "\ubb34\uc7a5\uc870", "228": "\ub378\ube4c", "229": "\ud5ec\uac00", - "23": "\uc544\ubcf4", "230": "\ud0b9\ub4dc\ub77c", "231": "\ucf54\ucf54\ub9ac", "232": "\ucf54\ub9ac\uac11", @@ -344,7 +403,6 @@ "237": "\uce74\ud3ec\uc5d0\ub77c", "238": "\ubf40\ubf40\ub77c", "239": "\uc5d0\ub808\ud0a4\ub4dc", - "24": "\uc544\ubcf4\ud06c", "240": "\ub9c8\uadf8\ube44", "241": "\ubc00\ud0f1\ud06c", "242": "\ud574\ud53c\ub108\uc2a4", @@ -355,7 +413,6 @@ "247": "\ub370\uae30\ub77c\uc2a4", "248": "\ub9c8\uae30\ub77c\uc2a4", "249": "\ub8e8\uae30\uc544", - "25": "\ud53c\uce74\uce04", "250": "\uce60\uc0c9\uc870", "251": "\uc138\ub808\ube44", "252": "\ub098\ubb34\uc9c0\uae30", @@ -366,7 +423,6 @@ "257": "\ubc88\uce58\ucf54", "258": "\ubb3c\uc9f1\uc774", "259": "\ub2aa\uc9f1\uc774", - "26": "\ub77c\uc774\uce04", "260": "\ub300\uc9f1\uc774", "261": "\ud3ec\ucc60\ub098", "262": "\uadf8\ub77c\uc5d0\ub098", @@ -377,7 +433,6 @@ "267": "\ubdf0\ud2f0\ud50c\ub77c\uc774", "268": "\uce74\uc2a4\ucfe4", "269": "\ub3c5\ucf00\uc77c", - "27": "\ubaa8\ub798\ub450\uc9c0", "270": "\uc5f0\uaf43\ubaac", "271": "\ub85c\ud1a0\uc2a4", "272": "\ub85c\ud30c\ud30c", @@ -388,7 +443,6 @@ "277": "\uc2a4\uc648\ub85c", "278": "\uac08\ubaa8\ub9e4", "279": "\ud328\ub9ac\ud37c", - "28": "\uace0\uc9c0", "280": "\ub784\ud1a0\uc2a4", "281": "\ud0ac\ub9ac\uc544", "282": "\uac00\ub514\uc548", @@ -399,7 +453,6 @@ "287": "\uac8c\uc744\ub85c", "288": "\ubc1c\ubc14\ub85c", "289": "\uac8c\uc744\ud0b9", - "29": "\ub2c8\ub4dc\ub7f0\u2640", "290": "\ud1a0\uc911\ubaac", "291": "\uc544\uc774\uc2a4\ud06c", "292": "\uaecd\uc9c8\ubaac", @@ -410,8 +463,6 @@ "297": "\ud558\ub9ac\ubb49", "298": "\ub8e8\ub9ac\ub9ac", "299": "\ucf54\ucf54\ud30c\uc2a4", - "3": "\uc774\uc0c1\ud574\uaf43", - "30": "\ub2c8\ub4dc\ub9ac\ub098", "300": "\uc5d0\ub098\ube44", "301": "\ub378\ucf00\ud2f0", "302": "\uae5c\uae4c\ubbf8", @@ -422,7 +473,6 @@ "307": "\uc694\uac00\ub791", "308": "\uc694\uac00\ub7a8", "309": "\uc36c\ub354\ub77c\uc774", - "31": "\ub2c8\ub4dc\ud038", "310": "\uc36c\ub354\ubcfc\ud2b8", "311": "\ud50c\ub7ec\uc2dc", "312": "\ub9c8\uc774\ub18d", @@ -433,7 +483,6 @@ "317": "\uafc0\uaebd\ubaac", "318": "\uc0e4\ud504\ub2c8\uc544", "319": "\uc0e4\ud06c\ub2c8\uc544", - "32": "\ub2c8\ub4dc\ub7f0\u2642", "320": "\uace0\ub798\uc655\uc790", "321": "\uace0\ub798\uc655", "322": "\ub454\ud0c0", @@ -444,7 +493,6 @@ "327": "\uc5bc\ub8e8\uae30", "328": "\ud1b1\uce58", "329": "\ube44\ube0c\ub77c\ubc14", - "33": "\ub2c8\ub4dc\ub9ac\ub178", "330": "\ud50c\ub77c\uc774\uace4", "331": "\uc120\uc778\uc655", "332": "\ubc24\uc120\uc778", @@ -455,7 +503,6 @@ "337": "\ub8e8\ub098\ud1a4", "338": "\uc194\ub85d", "339": "\ubbf8\uafb8\ub9ac", - "34": "\ub2c8\ub4dc\ud0b9", "340": "\uba54\uae45", "341": "\uac00\uc7ac\uad70", "342": "\uac00\uc7ac\uc7a5\uad70", @@ -466,7 +513,6 @@ "347": "\uc544\ub178\ub525\uc2a4", "348": "\uc544\ub9d0\ub3c4", "349": "\ube48\ud2f0\ub098", - "35": "\uc090\uc090", "350": "\ubc00\ub85c\ud2f1", "351": "\uce90\uc2a4\ud401", "352": "\ucf08\ub9ac\ubaac", @@ -477,7 +523,6 @@ "357": "\ud2b8\ub85c\ud53c\uc6b0\uc2a4", "358": "\uce58\ub801", "359": "\uc571\uc194", - "36": "\ud53d\uc2dc", "360": "\ub9c8\uc790", "361": "\ub208\uaf2c\ub9c8", "362": "\uc5bc\uc74c\uadc0\uc2e0", @@ -488,7 +533,6 @@ "367": "\ud5cc\ud14c\uc77c", "368": "\ubd84\ud64d\uc7a5\uc774", "369": "\uc2dc\ub77c\uce78", - "37": "\uc2dd\uc2a4\ud14c\uc77c", "370": "\uc0ac\ub791\ub3d9\uc774", "371": "\uc544\uacf5\uc774", "372": "\uc258\uace4", @@ -499,7 +543,6 @@ "377": "\ub808\uc9c0\ub77d", "378": "\ub808\uc9c0\uc544\uc774\uc2a4", "379": "\ub808\uc9c0\uc2a4\ud2f8", - "38": "\ub098\uc778\ud14c\uc77c", "380": "\ub77c\ud2f0\uc544\uc2a4", "381": "\ub77c\ud2f0\uc624\uc2a4", "382": "\uac00\uc774\uc624\uac00", @@ -510,7 +553,6 @@ "387": "\ubaa8\ubd80\uae30", "388": "\uc218\ud480\ubd80\uae30", "389": "\ud1a0\ub300\ubd80\uae30", - "39": "\ud478\ub9b0", "390": "\ubd88\uaf43\uc22d\uc774", "391": "\ud30c\uc774\uc22d\uc774", "392": "\ucd08\uc5fc\ubabd", @@ -521,8 +563,6 @@ "397": "\ucc0c\ub974\ubc84\ub4dc", "398": "\ucc0c\ub974\ud638\ud06c", "399": "\ube44\ubc84\ub2c8", - "4": "\ud30c\uc774\ub9ac", - "40": "\ud478\ud06c\ub9b0", "400": "\ube44\ubc84\ud1b5", "401": "\uadc0\ub6a4\ub69c\uae30", "402": "\uadc0\ub6a4\ud1a1\ud06c", @@ -533,7 +573,6 @@ "407": "\ub85c\uc988\ub808\uc774\ub4dc", "408": "\ub450\uac1c\ub3c4\uc2a4", "409": "\ub7a8\ud384\ub4dc", - "41": "\uc8fc\ubc43", "410": "\ubc29\ud328\ud1b1\uc2a4", "411": "\ubc14\ub9ac\ud1b1\uc2a4", "412": "\ub3c4\ub871\ucda9\uc774", @@ -544,7 +583,6 @@ "417": "\ud30c\uce58\ub9ac\uc2a4", "418": "\ube0c\uc774\uc824", "419": "\ud50c\ub85c\uc824", - "42": "\uace8\ubc43", "420": "\uccb4\ub9ac\ubc84", "421": "\uccb4\ub9ac\uaf2c", "422": "\uae5d\uc9c8\ubb34", @@ -555,7 +593,6 @@ "427": "\uc774\uc5b4\ub864", "428": "\uc774\uc5b4\ub86d", "429": "\ubb34\uc6b0\ub9c8\uc9c1", - "43": "\ub69c\ubc85\ucd78", "430": "\ub3c8\ud06c\ub85c\uc6b0", "431": "\ub098\uc639\ub9c8", "432": "\ubaac\ub0e5\uc774", @@ -566,7 +603,6 @@ "437": "\ub3d9\ud0c1\uad70", "438": "\uaf2c\uc9c0\uc9c0", "439": "\ud749\ub0b4\ub0b4", - "44": "\ub0c4\uc0c8\uaf2c", "440": "\ud551\ubcf5", "441": "\ud398\ub77c\ud398", "442": "\ud654\uac15\ub3cc", @@ -577,7 +613,6 @@ "447": "\ub9ac\uc624\ub974", "448": "\ub8e8\uce74\ub9ac\uc624", "449": "\ud788\ud3ec\ud3ec\ud0c0\uc2a4", - "45": "\ub77c\ud50c\ub808\uc2dc\uc544", "450": "\ud558\ub9c8\ub3c8", "451": "\uc2a4\ucf5c\ud53c", "452": "\ub4dc\ub798\ud53c\uc628", @@ -588,7 +623,6 @@ "457": "\ub124\uc624\ub77c\uc774\ud2b8", "458": "\ud0c0\ub9cc\ud0c0", "459": "\ub208\uc4f0\uac1c", - "46": "\ud30c\ub77c\uc2a4", "460": "\ub208\uc124\uc655", "461": "\ud3ec\ud478\ub2c8\ub77c", "462": "\uc790\ud3ec\ucf54\uc77c", @@ -599,7 +633,6 @@ "467": "\ub9c8\uadf8\ub9c8\ubc88", "468": "\ud1a0\uac8c\ud0a4\uc2a4", "469": "\uba54\uac00\uc790\ub9ac", - "47": "\ud30c\ub77c\uc139\ud2b8", "470": "\ub9ac\ud53c\uc544", "471": "\uae00\ub808\uc774\uc2dc\uc544", "472": "\uae00\ub77c\uc774\uc628", @@ -610,7 +643,6 @@ "477": "\uc57c\ub290\uc640\ub974\ubabd", "478": "\ub208\uc5ec\uc544", "479": "\ub85c\ud1a0\ubb34", - "48": "\ucf58\ud321", "480": "\uc720\ud06c\uc2dc", "481": "\uc5e0\ub77c\uc774\ud2b8", "482": "\uc544\uadf8\ub188", @@ -621,7 +653,6 @@ "487": "\uae30\ub77c\ud2f0\ub098", "488": "\ud06c\ub808\uc138\ub9ac\uc544", "489": "\ud53c\uc624\ub124", - "49": "\ub3c4\ub098\ub9ac", "490": "\ub9c8\ub098\ud53c", "491": "\ub2e4\ud06c\ub77c\uc774", "492": "\uc250\uc774\ubbf8", @@ -632,8 +663,6 @@ "497": "\uc0e4\ub85c\ub2e4", "498": "\ub69c\uafb8\ub9ac", "499": "\ucc28\uc624\uafc0", - "5": "\ub9ac\uc790\ub4dc", - "50": "\ub514\uadf8\ub2e4", "500": "\uc5fc\ubb34\uc655", "501": "\uc218\ub315\uc774", "502": "\uc30d\uac80\uc790\ube44", @@ -644,7 +673,6 @@ "507": "\ud558\ub370\ub9ac\uc5b4", "508": "\ubc14\ub79c\ub4dc", "509": "\uc314\ube44\ub0e5", - "51": "\ub2e5\ud2b8\ub9ac\uc624", "510": "\ub808\ud30c\ub974\ub2e4\uc2a4", "511": "\uc57c\ub098\ud504", "512": "\uc57c\ub098\ud0a4", @@ -655,7 +683,6 @@ "517": "\ubabd\ub098", "518": "\ubabd\uc58c\ub098", "519": "\ucf69\ub458\uae30", - "52": "\ub098\uc639", "520": "\uc720\ud1a0\ube0c", "521": "\ucf04\ud638\ub85c\uc6b0", "522": "\uc904\ubba4\ub9c8", @@ -666,7 +693,6 @@ "527": "\ub610\ub974\ubc15\uc950", "528": "\ub9d8\ubc15\uc950", "529": "\ub450\ub354\ub958", - "53": "\ud398\ub974\uc2dc\uc628", "530": "\ubab0\ub4dc\ub958", "531": "\ub2e4\ubd80\ub2c8", "532": "\uc73c\ub78f\ucc28", @@ -677,7 +703,6 @@ "537": "\ub450\ube45\uad74", "538": "\ub358\uc9c0\ubbf8", "539": "\ud0c0\uaca9\uadc0", - "54": "\uace0\ub77c\ud30c\ub355", "540": "\ub450\ub974\ubcf4", "541": "\ub450\ub974\ucfe4", "542": "\ubaa8\uc544\uba38", @@ -688,7 +713,6 @@ "547": "\uc5d8\ud48d", "548": "\uce58\ub9b4\ub9ac", "549": "\ub4dc\ub808\ub514\uc5b4", - "55": "\uace8\ub355", "550": "\ubc30\uc4f0\ub098\uc774", "551": "\uae5c\ub208\ud06c", "552": "\uc545\ube44\ub974", @@ -699,7 +723,6 @@ "557": "\ub3cc\uc0b4\uc774", "558": "\uc554\ud330\ub9ac\uc2a4", "559": "\uace4\uc728\ub7ad", - "56": "\ub9dd\ud0a4", "560": "\uace4\uc728\uac70\ub2c8", "561": "\uc2ec\ubcf4\ub7ec", "562": "\ub370\uc2a4\ub9c8\uc2a4", @@ -710,7 +733,6 @@ "567": "\uc544\ucf00\uc624\uc2a4", "568": "\uae68\ubd09\uc774", "569": "\ub354\uc2a4\ud2b8\ub098", - "57": "\uc131\uc6d0\uc22d", "570": "\uc870\ub85c\uc544", "571": "\uc870\ub85c\uc544\ud06c", "572": "\uce58\ub77c\ubbf8", @@ -721,7 +743,6 @@ "577": "\uc720\ub2c8\ub780", "578": "\ub4c0\ub780", "579": "\ub780\ucfe8\ub8e8\uc2a4", - "58": "\uac00\ub514", "580": "\uaf2c\uc9c0\ubcf4\ub9ac", "581": "\uc2a4\uc644\ub098", "582": "\ubc14\ub2d0\ud504\ud2f0", @@ -732,7 +753,6 @@ "587": "\uc5d0\ubabd\uac00", "588": "\ub531\uc815\uace4", "589": "\uc288\ubc14\ub974\uace0", - "59": "\uc708\ub514", "590": "\uae5c\ub180\ubc84\uc2ac", "591": "\ubf40\ub85d\ub098", "592": "\ud0f1\uadf8\ub9b4", @@ -743,8 +763,6 @@ "597": "\ucca0\uc2dc\ub4dc", "598": "\ub108\ud2b8\ub839", "599": "\uae30\uc5b4\ub974", - "6": "\ub9ac\uc790\ubabd", - "60": "\ubc1c\ucc59\uc774", "600": "\uae30\uae30\uc5b4\ub974", "601": "\uae30\uae30\uae30\uc5b4\ub974", "602": "\uc800\ub9ac\uc5b4", @@ -755,7 +773,6 @@ "607": "\ubd88\ucf1c\ubbf8", "608": "\ub7a8\ud504\ub77c", "609": "\uc0f9\ub378\ub77c", - "61": "\uc288\ub959\ucc59\uc774", "610": "\ud130\uac80\ub2c8", "611": "\uc561\uc2a8\ub3c4", "612": "\uc561\uc2a4\ub77c\uc774\uc988", @@ -766,7 +783,6 @@ "617": "\uc5b4\uc9c0\ub9ac\ub354", "618": "\uba54\ub354", "619": "\ube44\uc870\ud478", - "62": "\uac15\ucc59\uc774", "620": "\ube44\uc870\ub3c4", "621": "\ud06c\ub9ac\ub9cc", "622": "\uace8\ube44\ub78c", @@ -777,7 +793,6 @@ "627": "\uc218\ub9ac\ub465\ubcf4", "628": "\uc6cc\uae00", "629": "\ubc8c\ucc28\uc774", - "63": "\uce90\uc774\uc2dc", "630": "\ubc84\ub79c\uc9c0\ub098", "631": "\uc564\ud2f0\uace8", "632": "\uc544\uc774\uc564\ud2b8", @@ -788,7 +803,6 @@ "637": "\ubd88\uce74\ubaa8\uc2a4", "638": "\ucf54\ubc14\ub974\uc628", "639": "\ud14c\ub77c\ud0a4\uc628", - "64": "\uc724\uac94\ub77c", "640": "\ube44\ub9ac\ub514\uc628", "641": "\ud1a0\ub124\ub85c\uc2a4", "642": "\ubcfc\ud2b8\ub85c\uc2a4", @@ -799,7 +813,6 @@ "647": "\ucf00\ub974\ub514\uc624", "648": "\uba54\ub85c\uc5e3\ud0c0", "649": "\uac8c\ub178\uc138\ud06c\ud2b8", - "65": "\ud6c4\ub518", "650": "\ub3c4\uce58\ub9c8\ub860", "651": "\ub3c4\uce58\ubcf4\uad6c", "652": "\ube0c\ub9ac\uac00\ub860", @@ -810,7 +823,6 @@ "657": "\uac1c\uad74\ubc18\uc7a5", "658": "\uac1c\uad74\ub2cc\uc790", "659": "\ud30c\ub974\ube57", - "66": "\uc54c\ud1b5\ubaac", "660": "\ud30c\ub974\ud1a0", "661": "\ud654\uc0b4\uaf2c\ube48", "662": "\ubd88\ud654\uc0b4\ube48", @@ -821,7 +833,6 @@ "667": "\ub808\uc624\uaf2c", "668": "\ud654\uc5fc\ub808\uc624", "669": "\ud50c\ub77c\ubca0\ubca0", - "67": "\uadfc\uc721\ubaac", "670": "\ud50c\ub77c\uc5e3\ud14c", "671": "\ud50c\ub77c\uc81c\uc2a4", "672": "\uba54\uc774\ud074", @@ -832,7 +843,6 @@ "677": "\ub0d0\uc2a4\ud37c", "678": "\ub0d0\uc624\ub2c9\uc2a4", "679": "\ub2e8\uce7c\ube59", - "68": "\uad34\ub825\ubaac", "680": "\uc30d\uac80\ud0ac", "681": "\ud0ac\uac00\ub974\ub3c4", "682": "\uc288\uc058", @@ -843,7 +853,6 @@ "687": "\uce7c\ub77c\ub9c8\ub124\ub85c", "688": "\uac70\ubd81\uc190\uc190", "689": "\uac70\ubd81\uc190\ub370\uc2a4", - "69": "\ubaa8\ub2e4\ud53c", "690": "\uc218\ub808\uae30", "691": "\ub4dc\ub798\uce84", "692": "\uc644\ucca0\ud3ec", @@ -854,8 +863,6 @@ "697": "\uacac\uace0\ub77c\uc2a4", "698": "\uc544\ub9c8\ub8e8\uc2a4", "699": "\uc544\ub9c8\ub8e8\ub974\uac00", - "7": "\uaf2c\ubd80\uae30", - "70": "\uc6b0\uce20\ub3d9", "700": "\ub2d8\ud53c\uc544", "701": "\ub8e8\ucc28\ubd88", "702": "\ub370\ub374\ub124", @@ -866,7 +873,6 @@ "707": "\ud074\ub808\ud53c", "708": "\ub098\ubaa9\ub839", "709": "\ub300\ub85c\ud2b8", - "71": "\uc6b0\uce20\ubcf4\ud2b8", "710": "\ud638\ubc14\uadc0", "711": "\ud38c\ud0a8\uc778", "712": "\uaf41\uc5b4\ub984", @@ -877,56 +883,50 @@ "717": "\uc774\ubca8\ud0c0\ub974", "718": "\uc9c0\uac00\ub974\ub370", "719": "\ub514\uc548\uc2dc", - "72": "\uc655\ub208\ud574", "720": "\ud6c4\ud30c", - "721": "\ubcfc\ucf00\ub2c8\uc628", - "73": "\ub3c5\ud30c\ub9ac", - "74": "\uaf2c\ub9c8\ub3cc", - "75": "\ub370\uad6c\ub9ac", - "76": "\ub531\uad6c\ub9ac", - "77": "\ud3ec\ub2c8\ud0c0", - "78": "\ub0a0\uc329\ub9c8", - "79": "\uc57c\ub3c8", - "8": "\uc5b4\ub2c8\ubd80\uae30", - "80": "\uc57c\ub3c4\ub780", - "81": "\ucf54\uc77c", - "82": "\ub808\uc5b4\ucf54\uc77c", - "83": "\ud30c\uc624\ub9ac", - "84": "\ub450\ub450", - "85": "\ub450\ud2b8\ub9ac\uc624", - "86": "\uc96c\uc96c", - "87": "\uc96c\ub808\uace4", - "88": "\uc9c8\ud37d\uc774", - "89": "\uc9c8\ubed0\uae30", - "9": "\uac70\ubd81\uc655", - "90": "\uc140\ub7ec", - "91": "\ud30c\ub974\uc140", - "92": "\uace0\uc624\uc2a4", - "93": "\uace0\uc6b0\uc2a4\ud2b8", - "94": "\ud32c\ud140", - "95": "\ub871\uc2a4\ud1a4", - "96": "\uc2ac\ub9ac\ud504", - "97": "\uc2ac\ub9ac\ud37c", - "98": "\ud06c\ub7a9", - "99": "\ud0b9\ud06c\ub7a9" + "721": "\ubcfc\ucf00\ub2c8\uc628" + }, + "sizes": { + "001": "\uc791\uc740", + "002": "\uc791\uc740", + "003": "\ud45c\uc900", + "004": "\ud070", + "005": "\uac70\ub300\ud55c" }, "teams": { - "0": "\uc911\ub9bd(\uc18c\uc18d\uc5c6\uc74c)", - "1": "\ubbf8\uc2a4\ud2f1(\ube14\ub8e8)", - "2": "\ubc1c\ub85c(\ub808\ub4dc)", - "3": "\uc778\uc2a4\ud305\ud2b8(\uc610\ub85c\uc6b0)" - }, + "000": "\uc911\ub9bd(\uc18c\uc18d\uc5c6\uc74c)", + "001": "\ubbf8\uc2a4\ud2f1(\ube14\ub8e8)", + "002": "\ubc1c\ub85c(\ub808\ub4dc)", + "003": "\uc778\uc2a4\ud305\ud2b8(\uc610\ub85c\uc6b0)" + }, + "types": { + "001": "\ubcf4\ud1b5", + "002": "\ud30c\uc774\ud305", + "003": "\ud50c\ub77c\uc789", + "004": "\ub3c5", + "005": "\ubc14\ub2e5", + "006": "\ub85d", + "007": "\ubc84\uadf8", + "008": "\uc720\ub839", + "009": "\uc2a4\ud2f8", + "010": "\ubd88", + "011": "\ubb3c", + "012": "\uc794\ub514", + "013": "\uc804\uae30", + "014": "\uc2ec\ub839", + "015": "\uc5bc\uc74c", + "016": "\ub4dc\ub798\uace4", + "017": "\uc694\uc815", + "018": "\uc5b4\ub460" + }, "weather": { - "0": "\uc5c6\uc74c", - "1": "\uba85\ud655\ud55c", - "2": "\ube44", - "3": "\uc57d\uac04 \ud750\ub9bc", - "4": "\ud750\ub9b0", - "5": "\uae5c\uc9dd \ub180\ub780", - "6": "\ub208", - "7": "\uc548\uac1c" - }, - "misc": { - "boosted": "\uBD80\uC591 \uB41C" + "000": "\uc5c6\uc74c", + "001": "\uba85\ud655\ud55c", + "002": "\ube44", + "003": "\uc57d\uac04 \ud750\ub9bc", + "004": "\ud750\ub9b0", + "005": "\uae5c\uc9dd \ub180\ub780", + "006": "\ub208", + "007": "\uc548\uac1c" } -} +} \ No newline at end of file diff --git a/locales/pt.json b/locales/pt.json index 91fec97b4..77530dfa7 100644 --- a/locales/pt.json +++ b/locales/pt.json @@ -1,1018 +1,1018 @@ { - "leaders": { - "0": "Professor Willow", - "1": "Blanche", - "2": "Candela", - "3": "Spark" - }, - "sizes": { - "1": "min\u00FAsculo", - "2": "pequeno", - "3": "normal", - "4": "grande", - "5": "enorme" - }, "costumes": { - "25": { - "1": "Chap\u00E9u Festiva", - "2": "Chap\u00E9u de Festa", - "3": "Chap\u00E9u de Ash", - "4": "Chap\u00E9u da Bruxa" - }, - "26": { - "1": "Chap\u00E9u Festiva", - "2": "Chap\u00E9u de Festa", - "3": "Chap\u00E9u de Ash", - "4": "Chap\u00E9u da Bruxa" - }, + "025": { + "001": "Chap\u00e9u Festiva", + "002": "Chap\u00e9u de Festa", + "003": "Chap\u00e9u de Ash", + "004": "Chap\u00e9u da Bruxa" + }, + "026": { + "001": "Chap\u00e9u Festiva", + "002": "Chap\u00e9u de Festa", + "003": "Chap\u00e9u de Ash", + "004": "Chap\u00e9u da Bruxa" + }, "172": { - "1": "Chap\u00E9u Festiva", - "2": "Chap\u00E9u de Festa", - "3": "Chap\u00E9u de Ash", - "4": "Chap\u00E9u da Bruxa" + "001": "Chap\u00e9u Festiva", + "002": "Chap\u00e9u de Festa", + "003": "Chap\u00e9u de Ash", + "004": "Chap\u00e9u da Bruxa" } }, - "types": { - "1": "Normal", - "2": "Lutar", - "3": "Voando", - "4": "Veneno", - "5": "Terra", - "6": "Rocha", - "7": "Bicho", - "8": "Fantasma", - "9": "A\u00E7o", - "10": "Fogo", - "11": "\u00C1gua", - "12": "Grama", - "13": "El\u00E9trico", - "14": "Ps\u00EDquico", - "15": "Gelo", - "16": "Drag\u00E3o", - "17": "Fada", - "18": "Escuro" - }, + "leaders": { + "000": "Professor Willow", + "001": "Blanche", + "002": "Candela", + "003": "Spark" + }, + "misc": { + "boosted": "impulsionado" + }, "moves": { - "1": "Trovoada de Choques", - "2": "Ataque R\u00e1pido", - "3": "Arranh\u00e3o", - "4": "Brasa", - "5": "Chicote de Vinha", - "6": "Investida", - "7": "Folha Navalha", - "8": "Desmantelar", - "9": "Rev\u00f3lver d'\u00c1gua", - "10": "Mordida", - "11": "Pancada", - "12": "Tapa Duplo", - "13": "Embrulho", - "14": "Hiper-raio", - "15": "Lambida", - "16": "Pulso Sombrio", - "17": "Nevoeiro de Fuma\u00e7a", - "18": "Lodo", - "19": "Garra de Metal", - "20": "Agarramento Viciado", - "21": "Roda de Fogo", - "22": "Megachifre", - "23": "Ataque de Asa", - "24": "Lan\u00e7a-chamas", - "25": "Soco Enganador", - "26": "Cavar", - "27": "Rasteira", - "28": "Golpe Cruzado", - "29": "Corte Ps\u00edquico", - "30": "Feixe Ps\u00edquico", - "31": "Terremoto", - "32": "Gume de Pedra", - "33": "Soco de Gelo", - "34": "Estampa de Cora\u00e7\u00e3o", - "35": "Descarga", - "36": "Canh\u00e3o de Flash", - "37": "Bicada", - "38": "Bico Broca", - "39": "Raio Congelante", - "40": "Nevasca", - "41": "Golpe de Ar", - "42": "Onda de Calor", - "43": "Agulha Dupla", - "44": "Golpe Envenenado", - "45": "\u00c1s dos Ares", - "46": "Fura\u00e7\u00e3o", - "47": "Nevasca de P\u00e9talas", - "48": "Megadreno", - "49": "Zumbido de Inseto", - "50": "Presa Venenosa", - "51": "Talho Noturno", - "52": "Talho", - "53": "Jato de Bolhas", - "54": "Submiss\u00e3o", - "55": "Golpe de Carat\u00ea", - "56": "Movimento Baixo", - "57": "Aqua Jato", - "58": "Aqua Cauda", - "59": "Bomba de Sementes", - "60": "Choque Ps\u00edquico", - "61": "Lan\u00e7amento de Rocha", - "62": "Poder Ancestral", - "63": "Tumba de Rochas", - "64": "Deslize de Pedras", - "65": "Gema Poderosa", - "66": "Furtividade nas Sombras", - "67": "Soco Sombrio", - "68": "Garra Sombria", - "69": "Vento Ominoso", - "70": "Bola Sombria", - "71": "Soco Proj\u00e9til", - "72": "Bomba \u00edm\u00e3", - "73": "Asa de A\u00e7o", - "74": "Cabe\u00e7a de Ferro", - "75": "Ataque Parab\u00f3lico", - "76": "Fa\u00edsca", - "77": "Soco Trovoada", - "78": "Trov\u00e3o", - "79": "Rel\u00e2mpago", - "80": "Twister", - "81": "Sopro do Drag\u00e3o", - "82": "Pulso do Drag\u00e3o", - "83": "Garra de Drag\u00e3o", - "84": "Voz Desarmante", - "85": "Beijo Drenante", - "86": "Clar\u00e3o Deslumbrante", - "87": "Explos\u00e3o Lunar", - "88": "Jogo Duro", - "89": "Corte-veneno", - "90": "Bomba de Lodo", - "91": "Onda de Lama", - "92": "Tiro de Sujeira", - "93": "Tiro de Lama", - "94": "Bast\u00e3o de Osso", - "95": "Tremor", - "96": "Bomba de Lama", - "97": "Cortador de Fúria", - "98": "Picada", - "99": "Feixe Sinalizador", - "100": "Tesoura X", - "101": "Ataque de Chamas", - "102": "Rajada de Chamas", - "103": "Rajada de Fogo", - "104": "Salmoura", - "105": "Pulso d'\u00c1gua", - "106": "Escaldada", - "107": "Jato d'\u00c1gua", - "108": "Ps\u00edquico", - "109": "Ataque Ps\u00edquico", - "110": "Caco de Gelo", - "111": "Vento Congelante", - "112": "Respira\u00e7\u00e3o de Gelo", - "113": "Absor\u00e7\u00e3o", - "114": "Gigadreno", - "115": "Soco de Fogo", - "116": "Raio Solar", - "117": "L\u00e2mina de Folha", - "118": "Chicote Poderoso", - "119": "Borrifada", - "120": "\u00c1cido", - "121": "Cortador de Ar", - "122": "Furac\u00e3o", - "123": "Quebra-telha", - "124": "Cortar", - "125": "Ataque Veloz", - "126": "Ataque de Chifre", - "127": "Pisotear", - "128": "Cabe\u00e7ada", - "129": "Hiperpresa", - "130": "Pancada Brusca", - "131": "Pancada Corporal", - "132": "Descansar", - "133": "Insist\u00eancia", - "134": "Escaldada", - "135": "Jato d'\u00c1gua", - "136": "Embrulho", - "137": "Embrulho", - "200": "Cortador de Fúria", - "201": "Picada", - "202": "Mordida", - "203": "Soco Enganador", - "204": "Sopro do Drag\u00e3o", - "205": "Trovoada de Choques", - "206": "Fa\u00edsca", - "207": "Rasteira", - "208": "Golpe de Carat\u00ea", - "209": "Brasa", - "210": "Ataque de Asa", - "211": "Bicada", - "212": "Lambida", - "213": "Garra Sombria", - "214": "Chicote de Vinha", - "215": "Folha Navalha", - "216": "Tiro de Lama", - "217": "Caco de Gelo", - "218": "Respira\u00e7\u00e3o de Gelo", - "219": "Ataque R\u00e1pido", - "220": "Arranh\u00e3o", - "221": "Investida", - "222": "Pancada", - "223": "Cortar", - "224": "Golpe Envenenado", - "225": "\u00c1cido", - "226": "Corte Ps\u00edquico", - "227": "Lan\u00e7amento de Rocha", - "228": "Garra de Metal", - "229": "Soco Proj\u00e9til", - "230": "Rev\u00f3lver d'\u00c1gua", - "231": "Borrifada", - "232": "Rev\u00f3lver d'\u00c1gua", - "233": "Tapa de Lama", - "234": "Cabe\u00e7ada Zen", - "235": "Confus\u00e3o", - "236": "Ferr\u00e3o Venenoso", - "237": "Bolha", - "238": "Ataque Dissimulado", - "239": "Asa de A\u00e7o", - "240": "Presas de Fogo", - "241": "Esmagamento de Pedras", - "242": "Transforma\u00e7\u00e3o", - "243": "Contra-atacar", - "244": "Neve em P\u00f3", - "245": "Corpo-a-corpo", - "246": "Soco Din\u00e2mico", - "247": "Explos\u00e3o Focalizada", - "248": "Raio Aurora", - "249": "Carga de Raio", - "250": "Troca El\u00e9trica", - "251": "Ataque Selvagem", - "252": "Canh\u00e3o Zap", - "253": "Cauda do Drag\u00e3o", - "254": "Avalanche", - "255": "Golpe de Ar", - "256": "P\u00e1ssaro Bravo", - "257": "Ataque do C\u00e9u", - "258": "Fosso de Areia", - "259": "Explos\u00e3o de Rocha", - "260": "Infesta\u00e7\u00e3o", - "261": "Ira de Inseto", - "262": "Vento Prateado", - "263": "Abismar", - "264": "Feiti\u00e7o", - "265": "Sombra Noturna", - "266": "Cauda de Ferro", - "267": "Girobola", - "268": "Golpe Pesado", - "269": "Chama Furac\u00e3o", - "270": "Superaquecimento", - "271": "Proj\u00e9til de Semente", - "272": "N\u00f3 de Grama", - "273": "Bola de Energia", - "274": "Extrassensorial", - "275": "Vis\u00e3o do Futuro", - "276": "Casaco Espelhado", - "277": "Ultraje", - "278": "Rosnado", - "279": "Mastigada", - "280": "Jogo Sujo", + "001": "Trovoada de Choques", + "002": "Ataque R\u00e1pido", + "003": "Arranh\u00e3o", + "004": "Brasa", + "005": "Chicote de Vinha", + "006": "Investida", + "007": "Folha Navalha", + "008": "Desmantelar", + "009": "Rev\u00f3lver d'\u00c1gua", + "010": "Mordida", + "011": "Pancada", + "012": "Tapa Duplo", + "013": "Embrulho", + "014": "Hiper-raio", + "015": "Lambida", + "016": "Pulso Sombrio", + "017": "Nevoeiro de Fuma\u00e7a", + "018": "Lodo", + "019": "Garra de Metal", + "020": "Agarramento Viciado", + "021": "Roda de Fogo", + "022": "Megachifre", + "023": "Ataque de Asa", + "024": "Lan\u00e7a-chamas", + "025": "Soco Enganador", + "026": "Cavar", + "027": "Rasteira", + "028": "Golpe Cruzado", + "029": "Corte Ps\u00edquico", + "030": "Feixe Ps\u00edquico", + "031": "Terremoto", + "032": "Gume de Pedra", + "033": "Soco de Gelo", + "034": "Estampa de Cora\u00e7\u00e3o", + "035": "Descarga", + "036": "Canh\u00e3o de Flash", + "037": "Bicada", + "038": "Bico Broca", + "039": "Raio Congelante", + "040": "Nevasca", + "041": "Golpe de Ar", + "042": "Onda de Calor", + "043": "Agulha Dupla", + "044": "Golpe Envenenado", + "045": "\u00c1s dos Ares", + "046": "Fura\u00e7\u00e3o", + "047": "Nevasca de P\u00e9talas", + "048": "Megadreno", + "049": "Zumbido de Inseto", + "050": "Presa Venenosa", + "051": "Talho Noturno", + "052": "Talho", + "053": "Jato de Bolhas", + "054": "Submiss\u00e3o", + "055": "Golpe de Carat\u00ea", + "056": "Movimento Baixo", + "057": "Aqua Jato", + "058": "Aqua Cauda", + "059": "Bomba de Sementes", + "060": "Choque Ps\u00edquico", + "061": "Lan\u00e7amento de Rocha", + "062": "Poder Ancestral", + "063": "Tumba de Rochas", + "064": "Deslize de Pedras", + "065": "Gema Poderosa", + "066": "Furtividade nas Sombras", + "067": "Soco Sombrio", + "068": "Garra Sombria", + "069": "Vento Ominoso", + "070": "Bola Sombria", + "071": "Soco Proj\u00e9til", + "072": "Bomba \u00edm\u00e3", + "073": "Asa de A\u00e7o", + "074": "Cabe\u00e7a de Ferro", + "075": "Ataque Parab\u00f3lico", + "076": "Fa\u00edsca", + "077": "Soco Trovoada", + "078": "Trov\u00e3o", + "079": "Rel\u00e2mpago", + "080": "Twister", + "081": "Sopro do Drag\u00e3o", + "082": "Pulso do Drag\u00e3o", + "083": "Garra de Drag\u00e3o", + "084": "Voz Desarmante", + "085": "Beijo Drenante", + "086": "Clar\u00e3o Deslumbrante", + "087": "Explos\u00e3o Lunar", + "088": "Jogo Duro", + "089": "Corte-veneno", + "090": "Bomba de Lodo", + "091": "Onda de Lama", + "092": "Tiro de Sujeira", + "093": "Tiro de Lama", + "094": "Bast\u00e3o de Osso", + "095": "Tremor", + "096": "Bomba de Lama", + "097": "Cortador de F\u00faria", + "098": "Picada", + "099": "Feixe Sinalizador", + "100": "Tesoura X", + "101": "Ataque de Chamas", + "102": "Rajada de Chamas", + "103": "Rajada de Fogo", + "104": "Salmoura", + "105": "Pulso d'\u00c1gua", + "106": "Escaldada", + "107": "Jato d'\u00c1gua", + "108": "Ps\u00edquico", + "109": "Ataque Ps\u00edquico", + "110": "Caco de Gelo", + "111": "Vento Congelante", + "112": "Respira\u00e7\u00e3o de Gelo", + "113": "Absor\u00e7\u00e3o", + "114": "Gigadreno", + "115": "Soco de Fogo", + "116": "Raio Solar", + "117": "L\u00e2mina de Folha", + "118": "Chicote Poderoso", + "119": "Borrifada", + "120": "\u00c1cido", + "121": "Cortador de Ar", + "122": "Furac\u00e3o", + "123": "Quebra-telha", + "124": "Cortar", + "125": "Ataque Veloz", + "126": "Ataque de Chifre", + "127": "Pisotear", + "128": "Cabe\u00e7ada", + "129": "Hiperpresa", + "130": "Pancada Brusca", + "131": "Pancada Corporal", + "132": "Descansar", + "133": "Insist\u00eancia", + "134": "Escaldada", + "135": "Jato d'\u00c1gua", + "136": "Embrulho", + "137": "Embrulho", + "200": "Cortador de F\u00faria", + "201": "Picada", + "202": "Mordida", + "203": "Soco Enganador", + "204": "Sopro do Drag\u00e3o", + "205": "Trovoada de Choques", + "206": "Fa\u00edsca", + "207": "Rasteira", + "208": "Golpe de Carat\u00ea", + "209": "Brasa", + "210": "Ataque de Asa", + "211": "Bicada", + "212": "Lambida", + "213": "Garra Sombria", + "214": "Chicote de Vinha", + "215": "Folha Navalha", + "216": "Tiro de Lama", + "217": "Caco de Gelo", + "218": "Respira\u00e7\u00e3o de Gelo", + "219": "Ataque R\u00e1pido", + "220": "Arranh\u00e3o", + "221": "Investida", + "222": "Pancada", + "223": "Cortar", + "224": "Golpe Envenenado", + "225": "\u00c1cido", + "226": "Corte Ps\u00edquico", + "227": "Lan\u00e7amento de Rocha", + "228": "Garra de Metal", + "229": "Soco Proj\u00e9til", + "230": "Rev\u00f3lver d'\u00c1gua", + "231": "Borrifada", + "232": "Rev\u00f3lver d'\u00c1gua", + "233": "Tapa de Lama", + "234": "Cabe\u00e7ada Zen", + "235": "Confus\u00e3o", + "236": "Ferr\u00e3o Venenoso", + "237": "Bolha", + "238": "Ataque Dissimulado", + "239": "Asa de A\u00e7o", + "240": "Presas de Fogo", + "241": "Esmagamento de Pedras", + "242": "Transforma\u00e7\u00e3o", + "243": "Contra-atacar", + "244": "Neve em P\u00f3", + "245": "Corpo-a-corpo", + "246": "Soco Din\u00e2mico", + "247": "Explos\u00e3o Focalizada", + "248": "Raio Aurora", + "249": "Carga de Raio", + "250": "Troca El\u00e9trica", + "251": "Ataque Selvagem", + "252": "Canh\u00e3o Zap", + "253": "Cauda do Drag\u00e3o", + "254": "Avalanche", + "255": "Golpe de Ar", + "256": "P\u00e1ssaro Bravo", + "257": "Ataque do C\u00e9u", + "258": "Fosso de Areia", + "259": "Explos\u00e3o de Rocha", + "260": "Infesta\u00e7\u00e3o", + "261": "Ira de Inseto", + "262": "Vento Prateado", + "263": "Abismar", + "264": "Feiti\u00e7o", + "265": "Sombra Noturna", + "266": "Cauda de Ferro", + "267": "Girobola", + "268": "Golpe Pesado", + "269": "Chama Furac\u00e3o", + "270": "Superaquecimento", + "271": "Proj\u00e9til de Semente", + "272": "N\u00f3 de Grama", + "273": "Bola de Energia", + "274": "Extrassensorial", + "275": "Vis\u00e3o do Futuro", + "276": "Casaco Espelhado", + "277": "Ultraje", + "278": "Rosnado", + "279": "Mastigada", + "280": "Jogo Sujo", "281": "Poder Oculto" }, "pokemon": { - "1": "Bulbasaur", - "2": "Ivysaur", - "3": "Venusaur", - "4": "Charmander", - "5": "Charmeleon", - "6": "Charizard", - "7": "Squirtle", - "8": "Wartortle", - "9": "Blastoise", - "10": "Caterpie", - "11": "Metapod", - "12": "Butterfree", - "13": "Weedle", - "14": "Kakuna", - "15": "Beedrill", - "16": "Pidgey", - "17": "Pidgeotto", - "18": "Pidgeot", - "19": "Rattata", - "20": "Raticate", - "21": "Spearow", - "22": "Fearow", - "23": "Ekans", - "24": "Arbok", - "25": "Pikachu", - "26": "Raichu", - "27": "Sandshrew", - "28": "Sandslash", - "29": "Nidoran♀", - "30": "Nidorina", - "31": "Nidoqueen", - "32": "Nidoran♂", - "33": "Nidorino", - "34": "Nidoking", - "35": "Clefairy", - "36": "Clefable", - "37": "Vulpix", - "38": "Ninetales", - "39": "Jigglypuff", - "40": "Wigglytuff", - "41": "Zubat", - "42": "Golbat", - "43": "Oddish", - "44": "Gloom", - "45": "Vileplume", - "46": "Paras", - "47": "Parasect", - "48": "Venonat", - "49": "Venomoth", - "50": "Diglett", - "51": "Dugtrio", - "52": "Meowth", - "53": "Persian", - "54": "Psyduck", - "55": "Golduck", - "56": "Mankey", - "57": "Primeape", - "58": "Growlithe", - "59": "Arcanine", - "60": "Poliwag", - "61": "Poliwhirl", - "62": "Poliwrath", - "63": "Abra", - "64": "Kadabra", - "65": "Alakazam", - "66": "Machop", - "67": "Machoke", - "68": "Machamp", - "69": "Bellsprout", - "70": "Weepinbell", - "71": "Victreebel", - "72": "Tentacool", - "73": "Tentacruel", - "74": "Geodude", - "75": "Graveler", - "76": "Golem", - "77": "Ponyta", - "78": "Rapidash", - "79": "Slowpoke", - "80": "Slowbro", - "81": "Magnemite", - "82": "Magneton", - "83": "Farfetch'd", - "84": "Doduo", - "85": "Dodrio", - "86": "Seel", - "87": "Dewgong", - "88": "Grimer", - "89": "Muk", - "90": "Shellder", - "91": "Cloyster", - "92": "Gastly", - "93": "Haunter", - "94": "Gengar", - "95": "Onix", - "96": "Drowzee", - "97": "Hypno", - "98": "Krabby", - "99": "Kingler", - "100": "Voltorb", - "101": "Electrode", - "102": "Exeggcute", - "103": "Exeggutor", - "104": "Cubone", - "105": "Marowak", - "106": "Hitmonlee", - "107": "Hitmonchan", - "108": "Lickitung", - "109": "Koffing", - "110": "Weezing", - "111": "Rhyhorn", - "112": "Rhydon", - "113": "Chansey", - "114": "Tangela", - "115": "Kangaskhan", - "116": "Horsea", - "117": "Seadra", - "118": "Goldeen", - "119": "Seaking", - "120": "Staryu", - "121": "Starmie", - "122": "Mr. Mime", - "123": "Scyther", - "124": "Jynx", - "125": "Electabuzz", - "126": "Magmar", - "127": "Pinsir", - "128": "Tauros", - "129": "Magikarp", - "130": "Gyarados", - "131": "Lapras", - "132": "Ditto", - "133": "Eevee", - "134": "Vaporeon", - "135": "Jolteon", - "136": "Flareon", - "137": "Porygon", - "138": "Omanyte", - "139": "Omastar", - "140": "Kabuto", - "141": "Kabutops", - "142": "Aerodactyl", - "143": "Snorlax", - "144": "Articuno", - "145": "Zapdos", - "146": "Moltres", - "147": "Dratini", - "148": "Dragonair", - "149": "Dragonite", - "150": "Mewtwo", - "151": "Mew", - "152": "Chikorita", - "153": "Bayleef", - "154": "Meganium", - "155": "Cyndaquil", - "156": "Quilava", - "157": "Typhlosion", - "158": "Totodile", - "159": "Croconaw", - "160": "Feraligatr", - "161": "Sentret", - "162": "Furret", - "163": "Hoothoot", - "164": "Noctowl", - "165": "Ledyba", - "166": "Ledian", - "167": "Spinarak", - "168": "Ariados", - "169": "Crobat", - "170": "Chinchou", - "171": "Lanturn", - "172": "Pichu", - "173": "Cleffa", - "174": "Igglybuff", - "175": "Togepi", - "176": "Togetic", - "177": "Natu", - "178": "Xatu", - "179": "Mareep", - "180": "Flaaffy", - "181": "Ampharos", - "182": "Bellossom", - "183": "Marill", - "184": "Azumarill", - "185": "Sudowoodo", - "186": "Politoed", - "187": "Hoppip", - "188": "Skiploom", - "189": "Jumpluff", - "190": "Aipom", - "191": "Sunkern", - "192": "Sunflora", - "193": "Yanma", - "194": "Wooper", - "195": "Quagsire", - "196": "Espeon", - "197": "Umbreon", - "198": "Murkrow", - "199": "Slowking", - "200": "Misdreavus", - "201": "Unown", - "202": "Wobbuffet", - "203": "Girafarig", - "204": "Pineco", - "205": "Forretress", - "206": "Dunsparce", - "207": "Gligar", - "208": "Steelix", - "209": "Snubbull", - "210": "Granbull", - "211": "Qwilfish", - "212": "Scizor", - "213": "Shuckle", - "214": "Heracross", - "215": "Sneasel", - "216": "Teddiursa", - "217": "Ursaring", - "218": "Slugma", - "219": "Magcargo", - "220": "Swinub", - "221": "Piloswine", - "222": "Corsola", - "223": "Remoraid", - "224": "Octillery", - "225": "Delibird", - "226": "Mantine", - "227": "Skarmory", - "228": "Houndour", - "229": "Houndoom", - "230": "Kingdra", - "231": "Phanpy", - "232": "Donphan", - "233": "Porygon2", - "234": "Stantler", - "235": "Smeargle", - "236": "Tyrogue", - "237": "Hitmontop", - "238": "Smoochum", - "239": "Elekid", - "240": "Magby", - "241": "Miltank", - "242": "Blissey", - "243": "Raikou", - "244": "Entei", - "245": "Suicune", - "246": "Larvitar", - "247": "Pupitar", - "248": "Tyranitar", - "249": "Lugia", - "250": "Ho-Oh", - "251": "Celebi", - "252": "Treecko", - "253": "Grovyle", - "254": "Sceptile", - "255": "Torchic", - "256": "Combusken", - "257": "Blaziken", - "258": "Mudkip", - "259": "Marshtomp", - "260": "Swampert", - "261": "Poochyena", - "262": "Mightyena", - "263": "Zigzagoon", - "264": "Linoone", - "265": "Wurmple", - "266": "Silcoon", - "267": "Beautifly", - "268": "Cascoon", - "269": "Dustox", - "270": "Lotad", - "271": "Lombre", - "272": "Ludicolo", - "273": "Seedot", - "274": "Nuzleaf", - "275": "Shiftry", - "276": "Taillow", - "277": "Swellow", - "278": "Wingull", - "279": "Pelipper", - "280": "Ralts", - "281": "Kirlia", - "282": "Gardevoir", - "283": "Surskit", - "284": "Masquerain", - "285": "Shroomish", - "286": "Breloom", - "287": "Slakoth", - "288": "Vigoroth", - "289": "Slaking", - "290": "Nincada", - "291": "Ninjask", - "292": "Shedinja", - "293": "Whismur", - "294": "Loudred", - "295": "Exploud", - "296": "Makuhita", - "297": "Hariyama", - "298": "Azurill", - "299": "Nosepass", - "300": "Skitty", - "301": "Delcatty", - "302": "Sableye", - "303": "Mawile", - "304": "Aron", - "305": "Lairon", - "306": "Aggron", - "307": "Meditite", - "308": "Medicham", - "309": "Electrike", - "310": "Manectric", - "311": "Plusle", - "312": "Minun", - "313": "Volbeat", - "314": "Illumise", - "315": "Roselia", - "316": "Gulpin", - "317": "Swalot", - "318": "Carvanha", - "319": "Sharpedo", - "320": "Wailmer", - "321": "Wailord", - "322": "Numel", - "323": "Camerupt", - "324": "Torkoal", - "325": "Spoink", - "326": "Grumpig", - "327": "Spinda", - "328": "Trapinch", - "329": "Vibrava", - "330": "Flygon", - "331": "Cacnea", - "332": "Cacturne", - "333": "Swablu", - "334": "Altaria", - "335": "Zangoose", - "336": "Seviper", - "337": "Lunatone", - "338": "Solrock", - "339": "Barboach", - "340": "Whiscash", - "341": "Corphish", - "342": "Crawdaunt", - "343": "Baltoy", - "344": "Claydol", - "345": "Lileep", - "346": "Cradily", - "347": "Anorith", - "348": "Armaldo", - "349": "Feebas", - "350": "Milotic", - "351": "Castform", - "352": "Kecleon", - "353": "Shuppet", - "354": "Banette", - "355": "Duskull", - "356": "Dusclops", - "357": "Tropius", - "358": "Chimecho", - "359": "Absol", - "360": "Wynaut", - "361": "Snorunt", - "362": "Glalie", - "363": "Spheal", - "364": "Sealeo", - "365": "Walrein", - "366": "Clamperl", - "367": "Huntail", - "368": "Gorebyss", - "369": "Relicanth", - "370": "Luvdisc", - "371": "Bagon", - "372": "Shelgon", - "373": "Salamence", - "374": "Beldum", - "375": "Metang", - "376": "Metagross", - "377": "Regirock", - "378": "Regice", - "379": "Registeel", - "380": "Latias", - "381": "Latios", - "382": "Kyogre", - "383": "Groudon", - "384": "Rayquaza", - "385": "Jirachi", - "386": "Deoxys", - "387": "Turtwig", - "388": "Grotle", - "389": "Torterra", - "390": "Chimchar", - "391": "Monferno", - "392": "Infernape", - "393": "Piplup", - "394": "Prinplup", - "395": "Empoleon", - "396": "Starly", - "397": "Staravia", - "398": "Staraptor", - "399": "Bidoof", - "400": "Bibarel", - "401": "Kricketot", - "402": "Kricketune", - "403": "Shinx", - "404": "Luxio", - "405": "Luxray", - "406": "Budew", - "407": "Roserade", - "408": "Cranidos", - "409": "Rampardos", - "410": "Shieldon", - "411": "Bastiodon", - "412": "Burmy", - "413": "Wormadam", - "414": "Mothim", - "415": "Combee", - "416": "Vespiquen", - "417": "Pachirisu", - "418": "Buizel", - "419": "Floatzel", - "420": "Cherubi", - "421": "Cherrim", - "422": "Shellos", - "423": "Gastrodon", - "424": "Ambipom", - "425": "Drifloon", - "426": "Drifblim", - "427": "Buneary", - "428": "Lopunny", - "429": "Mismagius", - "430": "Honchkrow", - "431": "Glameow", - "432": "Purugly", - "433": "Chingling", - "434": "Stunky", - "435": "Skuntank", - "436": "Bronzor", - "437": "Bronzong", - "438": "Bonsly", - "439": "Mime Jr.", - "440": "Happiny", - "441": "Chatot", - "442": "Spiritomb", - "443": "Gible", - "444": "Gabite", - "445": "Garchomp", - "446": "Munchlax", - "447": "Riolu", - "448": "Lucario", - "449": "Hippopotas", - "450": "Hippowdon", - "451": "Skorupi", - "452": "Drapion", - "453": "Croagunk", - "454": "Toxicroak", - "455": "Carnivine", - "456": "Finneon", - "457": "Lumineon", - "458": "Mantyke", - "459": "Snover", - "460": "Abomasnow", - "461": "Weavile", - "462": "Magnezone", - "463": "Lickilicky", - "464": "Rhyperior", - "465": "Tangrowth", - "466": "Electivire", - "467": "Magmortar", - "468": "Togekiss", - "469": "Yanmega", - "470": "Leafeon", - "471": "Glaceon", - "472": "Gliscor", - "473": "Mamoswine", - "474": "Porygon-Z", - "475": "Gallade", - "476": "Probopass", - "477": "Dusknoir", - "478": "Froslass", - "479": "Rotom", - "480": "Uxie", - "481": "Mesprit", - "482": "Azelf", - "483": "Dialga", - "484": "Palkia", - "485": "Heatran", - "486": "Regigigas", - "487": "Giratina", - "488": "Cresselia", - "489": "Phione", - "490": "Manaphy", - "491": "Darkrai", - "492": "Shaymin", - "493": "Arceus", - "494": "Victini", - "495": "Snivy", - "496": "Servine", - "497": "Serperior", - "498": "Tepig", - "499": "Pignite", - "500": "Emboar", - "501": "Oshawott", - "502": "Dewott", - "503": "Samurott", - "504": "Patrat", - "505": "Watchog", - "506": "Lillipup", - "507": "Herdier", - "508": "Stoutland", - "509": "Purrloin", - "510": "Liepard", - "511": "Pansage", - "512": "Simisage", - "513": "Pansear", - "514": "Simisear", - "515": "Panpour", - "516": "Simipour", - "517": "Munna", - "518": "Musharna", - "519": "Pidove", - "520": "Tranquill", - "521": "Unfezant", - "522": "Blitzle", - "523": "Zebstrika", - "524": "Roggenrola", - "525": "Boldore", - "526": "Gigalith", - "527": "Woobat", - "528": "Swoobat", - "529": "Drilbur", - "530": "Excadrill", - "531": "Audino", - "532": "Timburr", - "533": "Gurdurr", - "534": "Conkeldurr", - "535": "Tympole", - "536": "Palpitoad", - "537": "Seismitoad", - "538": "Throh", - "539": "Sawk", - "540": "Sewaddle", - "541": "Swadloon", - "542": "Leavanny", - "543": "Venipede", - "544": "Whirlipede", - "545": "Scolipede", - "546": "Cottonee", - "547": "Whimsicott", - "548": "Petilil", - "549": "Lilligant", - "550": "Basculin", - "551": "Sandile", - "552": "Krokorok", - "553": "Krookodile", - "554": "Darumaka", - "555": "Darmanitan", - "556": "Maractus", - "557": "Dwebble", - "558": "Crustle", - "559": "Scraggy", - "560": "Scrafty", - "561": "Sigilyph", - "562": "Yamask", - "563": "Cofagrigus", - "564": "Tirtouga", - "565": "Carracosta", - "566": "Archen", - "567": "Archeops", - "568": "Trubbish", - "569": "Garbodor", - "570": "Zorua", - "571": "Zoroark", - "572": "Minccino", - "573": "Cinccino", - "574": "Gothita", - "575": "Gothorita", - "576": "Gothitelle", - "577": "Solosis", - "578": "Duosion", - "579": "Reuniclus", - "580": "Ducklett", - "581": "Swanna", - "582": "Vanillite", - "583": "Vanillish", - "584": "Vanilluxe", - "585": "Deerling", - "586": "Sawsbuck", - "587": "Emolga", - "588": "Karrablast", - "589": "Escavalier", - "590": "Foongus", - "591": "Amoonguss", - "592": "Frillish", - "593": "Jellicent", - "594": "Alomomola", - "595": "Joltik", - "596": "Galvantula", - "597": "Ferroseed", - "598": "Ferrothorn", - "599": "Klink", - "600": "Klang", - "601": "Klinklang", - "602": "Tynamo", - "603": "Eelektrik", - "604": "Eelektross", - "605": "Elgyem", - "606": "Beheeyem", - "607": "Litwick", - "608": "Lampent", - "609": "Chandelure", - "610": "Axew", - "611": "Fraxure", - "612": "Haxorus", - "613": "Cubchoo", - "614": "Beartic", - "615": "Cryogonal", - "616": "Shelmet", - "617": "Accelgor", - "618": "Stunfisk", - "619": "Mienfoo", - "620": "Mienshao", - "621": "Druddigon", - "622": "Golett", - "623": "Golurk", - "624": "Pawniard", - "625": "Bisharp", - "626": "Bouffalant", - "627": "Rufflet", - "628": "Braviary", - "629": "Vullaby", - "630": "Mandibuzz", - "631": "Heatmor", - "632": "Durant", - "633": "Deino", - "634": "Zweilous", - "635": "Hydreigon", - "636": "Larvesta", - "637": "Volcarona", - "638": "Cobalion", - "639": "Terrakion", - "640": "Virizion", - "641": "Tornadus", - "642": "Thundurus", - "643": "Reshiram", - "644": "Zekrom", - "645": "Landorus", - "646": "Kyurem", - "647": "Keldeo", - "648": "Meloetta", - "649": "Genesect", - "650": "Chespin", - "651": "Quilladin", - "652": "Chesnaught", - "653": "Fennekin", - "654": "Braixen", - "655": "Delphox", - "656": "Froakie", - "657": "Frogadier", - "658": "Greninja", - "659": "Bunnelby", - "660": "Diggersby", - "661": "Fletchling", - "662": "Fletchinder", - "663": "Talonflame", - "664": "Scatterbug", - "665": "Spewpa", - "666": "Vivillon", - "667": "Litleo", - "668": "Pyroar", - "669": "Flab\u00E9b\u00E9", - "670": "Floette", - "671": "Florges", - "672": "Skiddo", - "673": "Gogoat", - "674": "Pancham", - "675": "Pangoro", - "676": "Furfrou", - "677": "Espurr", - "678": "Meowstic", - "679": "Honedge", - "680": "Doublade", - "681": "Aegislash", - "682": "Spritzee", - "683": "Aromatisse", - "684": "Swirlix", - "685": "Slurpuff", - "686": "Inkay", - "687": "Malamar", - "688": "Binacle", - "689": "Barbaracle", - "690": "Skrelp", - "691": "Dragalge", - "692": "Clauncher", - "693": "Clawitzer", - "694": "Helioptile", - "695": "Heliolisk", - "696": "Tyrunt", - "697": "Tyrantrum", - "698": "Amaura", - "699": "Aurorus", - "700": "Sylveon", - "701": "Hawlucha", - "702": "Dedenne", - "703": "Carbink", - "704": "Goomy", - "705": "Sliggoo", - "706": "Goodra", - "707": "Klefki", - "708": "Phantump", - "709": "Trevenant", - "710": "Pumpkaboo", - "711": "Gourgeist", - "712": "Bergmite", - "713": "Avalugg", - "714": "Noibat", - "715": "Noivern", - "716": "Xerneas", - "717": "Yveltal", - "718": "Zygarde", - "719": "Diancie", - "720": "Hoopa", + "001": "Bulbasaur", + "002": "Ivysaur", + "003": "Venusaur", + "004": "Charmander", + "005": "Charmeleon", + "006": "Charizard", + "007": "Squirtle", + "008": "Wartortle", + "009": "Blastoise", + "010": "Caterpie", + "011": "Metapod", + "012": "Butterfree", + "013": "Weedle", + "014": "Kakuna", + "015": "Beedrill", + "016": "Pidgey", + "017": "Pidgeotto", + "018": "Pidgeot", + "019": "Rattata", + "020": "Raticate", + "021": "Spearow", + "022": "Fearow", + "023": "Ekans", + "024": "Arbok", + "025": "Pikachu", + "026": "Raichu", + "027": "Sandshrew", + "028": "Sandslash", + "029": "Nidoran\u2640", + "030": "Nidorina", + "031": "Nidoqueen", + "032": "Nidoran\u2642", + "033": "Nidorino", + "034": "Nidoking", + "035": "Clefairy", + "036": "Clefable", + "037": "Vulpix", + "038": "Ninetales", + "039": "Jigglypuff", + "040": "Wigglytuff", + "041": "Zubat", + "042": "Golbat", + "043": "Oddish", + "044": "Gloom", + "045": "Vileplume", + "046": "Paras", + "047": "Parasect", + "048": "Venonat", + "049": "Venomoth", + "050": "Diglett", + "051": "Dugtrio", + "052": "Meowth", + "053": "Persian", + "054": "Psyduck", + "055": "Golduck", + "056": "Mankey", + "057": "Primeape", + "058": "Growlithe", + "059": "Arcanine", + "060": "Poliwag", + "061": "Poliwhirl", + "062": "Poliwrath", + "063": "Abra", + "064": "Kadabra", + "065": "Alakazam", + "066": "Machop", + "067": "Machoke", + "068": "Machamp", + "069": "Bellsprout", + "070": "Weepinbell", + "071": "Victreebel", + "072": "Tentacool", + "073": "Tentacruel", + "074": "Geodude", + "075": "Graveler", + "076": "Golem", + "077": "Ponyta", + "078": "Rapidash", + "079": "Slowpoke", + "080": "Slowbro", + "081": "Magnemite", + "082": "Magneton", + "083": "Farfetch'd", + "084": "Doduo", + "085": "Dodrio", + "086": "Seel", + "087": "Dewgong", + "088": "Grimer", + "089": "Muk", + "090": "Shellder", + "091": "Cloyster", + "092": "Gastly", + "093": "Haunter", + "094": "Gengar", + "095": "Onix", + "096": "Drowzee", + "097": "Hypno", + "098": "Krabby", + "099": "Kingler", + "100": "Voltorb", + "101": "Electrode", + "102": "Exeggcute", + "103": "Exeggutor", + "104": "Cubone", + "105": "Marowak", + "106": "Hitmonlee", + "107": "Hitmonchan", + "108": "Lickitung", + "109": "Koffing", + "110": "Weezing", + "111": "Rhyhorn", + "112": "Rhydon", + "113": "Chansey", + "114": "Tangela", + "115": "Kangaskhan", + "116": "Horsea", + "117": "Seadra", + "118": "Goldeen", + "119": "Seaking", + "120": "Staryu", + "121": "Starmie", + "122": "Mr. Mime", + "123": "Scyther", + "124": "Jynx", + "125": "Electabuzz", + "126": "Magmar", + "127": "Pinsir", + "128": "Tauros", + "129": "Magikarp", + "130": "Gyarados", + "131": "Lapras", + "132": "Ditto", + "133": "Eevee", + "134": "Vaporeon", + "135": "Jolteon", + "136": "Flareon", + "137": "Porygon", + "138": "Omanyte", + "139": "Omastar", + "140": "Kabuto", + "141": "Kabutops", + "142": "Aerodactyl", + "143": "Snorlax", + "144": "Articuno", + "145": "Zapdos", + "146": "Moltres", + "147": "Dratini", + "148": "Dragonair", + "149": "Dragonite", + "150": "Mewtwo", + "151": "Mew", + "152": "Chikorita", + "153": "Bayleef", + "154": "Meganium", + "155": "Cyndaquil", + "156": "Quilava", + "157": "Typhlosion", + "158": "Totodile", + "159": "Croconaw", + "160": "Feraligatr", + "161": "Sentret", + "162": "Furret", + "163": "Hoothoot", + "164": "Noctowl", + "165": "Ledyba", + "166": "Ledian", + "167": "Spinarak", + "168": "Ariados", + "169": "Crobat", + "170": "Chinchou", + "171": "Lanturn", + "172": "Pichu", + "173": "Cleffa", + "174": "Igglybuff", + "175": "Togepi", + "176": "Togetic", + "177": "Natu", + "178": "Xatu", + "179": "Mareep", + "180": "Flaaffy", + "181": "Ampharos", + "182": "Bellossom", + "183": "Marill", + "184": "Azumarill", + "185": "Sudowoodo", + "186": "Politoed", + "187": "Hoppip", + "188": "Skiploom", + "189": "Jumpluff", + "190": "Aipom", + "191": "Sunkern", + "192": "Sunflora", + "193": "Yanma", + "194": "Wooper", + "195": "Quagsire", + "196": "Espeon", + "197": "Umbreon", + "198": "Murkrow", + "199": "Slowking", + "200": "Misdreavus", + "201": "Unown", + "202": "Wobbuffet", + "203": "Girafarig", + "204": "Pineco", + "205": "Forretress", + "206": "Dunsparce", + "207": "Gligar", + "208": "Steelix", + "209": "Snubbull", + "210": "Granbull", + "211": "Qwilfish", + "212": "Scizor", + "213": "Shuckle", + "214": "Heracross", + "215": "Sneasel", + "216": "Teddiursa", + "217": "Ursaring", + "218": "Slugma", + "219": "Magcargo", + "220": "Swinub", + "221": "Piloswine", + "222": "Corsola", + "223": "Remoraid", + "224": "Octillery", + "225": "Delibird", + "226": "Mantine", + "227": "Skarmory", + "228": "Houndour", + "229": "Houndoom", + "230": "Kingdra", + "231": "Phanpy", + "232": "Donphan", + "233": "Porygon2", + "234": "Stantler", + "235": "Smeargle", + "236": "Tyrogue", + "237": "Hitmontop", + "238": "Smoochum", + "239": "Elekid", + "240": "Magby", + "241": "Miltank", + "242": "Blissey", + "243": "Raikou", + "244": "Entei", + "245": "Suicune", + "246": "Larvitar", + "247": "Pupitar", + "248": "Tyranitar", + "249": "Lugia", + "250": "Ho-Oh", + "251": "Celebi", + "252": "Treecko", + "253": "Grovyle", + "254": "Sceptile", + "255": "Torchic", + "256": "Combusken", + "257": "Blaziken", + "258": "Mudkip", + "259": "Marshtomp", + "260": "Swampert", + "261": "Poochyena", + "262": "Mightyena", + "263": "Zigzagoon", + "264": "Linoone", + "265": "Wurmple", + "266": "Silcoon", + "267": "Beautifly", + "268": "Cascoon", + "269": "Dustox", + "270": "Lotad", + "271": "Lombre", + "272": "Ludicolo", + "273": "Seedot", + "274": "Nuzleaf", + "275": "Shiftry", + "276": "Taillow", + "277": "Swellow", + "278": "Wingull", + "279": "Pelipper", + "280": "Ralts", + "281": "Kirlia", + "282": "Gardevoir", + "283": "Surskit", + "284": "Masquerain", + "285": "Shroomish", + "286": "Breloom", + "287": "Slakoth", + "288": "Vigoroth", + "289": "Slaking", + "290": "Nincada", + "291": "Ninjask", + "292": "Shedinja", + "293": "Whismur", + "294": "Loudred", + "295": "Exploud", + "296": "Makuhita", + "297": "Hariyama", + "298": "Azurill", + "299": "Nosepass", + "300": "Skitty", + "301": "Delcatty", + "302": "Sableye", + "303": "Mawile", + "304": "Aron", + "305": "Lairon", + "306": "Aggron", + "307": "Meditite", + "308": "Medicham", + "309": "Electrike", + "310": "Manectric", + "311": "Plusle", + "312": "Minun", + "313": "Volbeat", + "314": "Illumise", + "315": "Roselia", + "316": "Gulpin", + "317": "Swalot", + "318": "Carvanha", + "319": "Sharpedo", + "320": "Wailmer", + "321": "Wailord", + "322": "Numel", + "323": "Camerupt", + "324": "Torkoal", + "325": "Spoink", + "326": "Grumpig", + "327": "Spinda", + "328": "Trapinch", + "329": "Vibrava", + "330": "Flygon", + "331": "Cacnea", + "332": "Cacturne", + "333": "Swablu", + "334": "Altaria", + "335": "Zangoose", + "336": "Seviper", + "337": "Lunatone", + "338": "Solrock", + "339": "Barboach", + "340": "Whiscash", + "341": "Corphish", + "342": "Crawdaunt", + "343": "Baltoy", + "344": "Claydol", + "345": "Lileep", + "346": "Cradily", + "347": "Anorith", + "348": "Armaldo", + "349": "Feebas", + "350": "Milotic", + "351": "Castform", + "352": "Kecleon", + "353": "Shuppet", + "354": "Banette", + "355": "Duskull", + "356": "Dusclops", + "357": "Tropius", + "358": "Chimecho", + "359": "Absol", + "360": "Wynaut", + "361": "Snorunt", + "362": "Glalie", + "363": "Spheal", + "364": "Sealeo", + "365": "Walrein", + "366": "Clamperl", + "367": "Huntail", + "368": "Gorebyss", + "369": "Relicanth", + "370": "Luvdisc", + "371": "Bagon", + "372": "Shelgon", + "373": "Salamence", + "374": "Beldum", + "375": "Metang", + "376": "Metagross", + "377": "Regirock", + "378": "Regice", + "379": "Registeel", + "380": "Latias", + "381": "Latios", + "382": "Kyogre", + "383": "Groudon", + "384": "Rayquaza", + "385": "Jirachi", + "386": "Deoxys", + "387": "Turtwig", + "388": "Grotle", + "389": "Torterra", + "390": "Chimchar", + "391": "Monferno", + "392": "Infernape", + "393": "Piplup", + "394": "Prinplup", + "395": "Empoleon", + "396": "Starly", + "397": "Staravia", + "398": "Staraptor", + "399": "Bidoof", + "400": "Bibarel", + "401": "Kricketot", + "402": "Kricketune", + "403": "Shinx", + "404": "Luxio", + "405": "Luxray", + "406": "Budew", + "407": "Roserade", + "408": "Cranidos", + "409": "Rampardos", + "410": "Shieldon", + "411": "Bastiodon", + "412": "Burmy", + "413": "Wormadam", + "414": "Mothim", + "415": "Combee", + "416": "Vespiquen", + "417": "Pachirisu", + "418": "Buizel", + "419": "Floatzel", + "420": "Cherubi", + "421": "Cherrim", + "422": "Shellos", + "423": "Gastrodon", + "424": "Ambipom", + "425": "Drifloon", + "426": "Drifblim", + "427": "Buneary", + "428": "Lopunny", + "429": "Mismagius", + "430": "Honchkrow", + "431": "Glameow", + "432": "Purugly", + "433": "Chingling", + "434": "Stunky", + "435": "Skuntank", + "436": "Bronzor", + "437": "Bronzong", + "438": "Bonsly", + "439": "Mime Jr.", + "440": "Happiny", + "441": "Chatot", + "442": "Spiritomb", + "443": "Gible", + "444": "Gabite", + "445": "Garchomp", + "446": "Munchlax", + "447": "Riolu", + "448": "Lucario", + "449": "Hippopotas", + "450": "Hippowdon", + "451": "Skorupi", + "452": "Drapion", + "453": "Croagunk", + "454": "Toxicroak", + "455": "Carnivine", + "456": "Finneon", + "457": "Lumineon", + "458": "Mantyke", + "459": "Snover", + "460": "Abomasnow", + "461": "Weavile", + "462": "Magnezone", + "463": "Lickilicky", + "464": "Rhyperior", + "465": "Tangrowth", + "466": "Electivire", + "467": "Magmortar", + "468": "Togekiss", + "469": "Yanmega", + "470": "Leafeon", + "471": "Glaceon", + "472": "Gliscor", + "473": "Mamoswine", + "474": "Porygon-Z", + "475": "Gallade", + "476": "Probopass", + "477": "Dusknoir", + "478": "Froslass", + "479": "Rotom", + "480": "Uxie", + "481": "Mesprit", + "482": "Azelf", + "483": "Dialga", + "484": "Palkia", + "485": "Heatran", + "486": "Regigigas", + "487": "Giratina", + "488": "Cresselia", + "489": "Phione", + "490": "Manaphy", + "491": "Darkrai", + "492": "Shaymin", + "493": "Arceus", + "494": "Victini", + "495": "Snivy", + "496": "Servine", + "497": "Serperior", + "498": "Tepig", + "499": "Pignite", + "500": "Emboar", + "501": "Oshawott", + "502": "Dewott", + "503": "Samurott", + "504": "Patrat", + "505": "Watchog", + "506": "Lillipup", + "507": "Herdier", + "508": "Stoutland", + "509": "Purrloin", + "510": "Liepard", + "511": "Pansage", + "512": "Simisage", + "513": "Pansear", + "514": "Simisear", + "515": "Panpour", + "516": "Simipour", + "517": "Munna", + "518": "Musharna", + "519": "Pidove", + "520": "Tranquill", + "521": "Unfezant", + "522": "Blitzle", + "523": "Zebstrika", + "524": "Roggenrola", + "525": "Boldore", + "526": "Gigalith", + "527": "Woobat", + "528": "Swoobat", + "529": "Drilbur", + "530": "Excadrill", + "531": "Audino", + "532": "Timburr", + "533": "Gurdurr", + "534": "Conkeldurr", + "535": "Tympole", + "536": "Palpitoad", + "537": "Seismitoad", + "538": "Throh", + "539": "Sawk", + "540": "Sewaddle", + "541": "Swadloon", + "542": "Leavanny", + "543": "Venipede", + "544": "Whirlipede", + "545": "Scolipede", + "546": "Cottonee", + "547": "Whimsicott", + "548": "Petilil", + "549": "Lilligant", + "550": "Basculin", + "551": "Sandile", + "552": "Krokorok", + "553": "Krookodile", + "554": "Darumaka", + "555": "Darmanitan", + "556": "Maractus", + "557": "Dwebble", + "558": "Crustle", + "559": "Scraggy", + "560": "Scrafty", + "561": "Sigilyph", + "562": "Yamask", + "563": "Cofagrigus", + "564": "Tirtouga", + "565": "Carracosta", + "566": "Archen", + "567": "Archeops", + "568": "Trubbish", + "569": "Garbodor", + "570": "Zorua", + "571": "Zoroark", + "572": "Minccino", + "573": "Cinccino", + "574": "Gothita", + "575": "Gothorita", + "576": "Gothitelle", + "577": "Solosis", + "578": "Duosion", + "579": "Reuniclus", + "580": "Ducklett", + "581": "Swanna", + "582": "Vanillite", + "583": "Vanillish", + "584": "Vanilluxe", + "585": "Deerling", + "586": "Sawsbuck", + "587": "Emolga", + "588": "Karrablast", + "589": "Escavalier", + "590": "Foongus", + "591": "Amoonguss", + "592": "Frillish", + "593": "Jellicent", + "594": "Alomomola", + "595": "Joltik", + "596": "Galvantula", + "597": "Ferroseed", + "598": "Ferrothorn", + "599": "Klink", + "600": "Klang", + "601": "Klinklang", + "602": "Tynamo", + "603": "Eelektrik", + "604": "Eelektross", + "605": "Elgyem", + "606": "Beheeyem", + "607": "Litwick", + "608": "Lampent", + "609": "Chandelure", + "610": "Axew", + "611": "Fraxure", + "612": "Haxorus", + "613": "Cubchoo", + "614": "Beartic", + "615": "Cryogonal", + "616": "Shelmet", + "617": "Accelgor", + "618": "Stunfisk", + "619": "Mienfoo", + "620": "Mienshao", + "621": "Druddigon", + "622": "Golett", + "623": "Golurk", + "624": "Pawniard", + "625": "Bisharp", + "626": "Bouffalant", + "627": "Rufflet", + "628": "Braviary", + "629": "Vullaby", + "630": "Mandibuzz", + "631": "Heatmor", + "632": "Durant", + "633": "Deino", + "634": "Zweilous", + "635": "Hydreigon", + "636": "Larvesta", + "637": "Volcarona", + "638": "Cobalion", + "639": "Terrakion", + "640": "Virizion", + "641": "Tornadus", + "642": "Thundurus", + "643": "Reshiram", + "644": "Zekrom", + "645": "Landorus", + "646": "Kyurem", + "647": "Keldeo", + "648": "Meloetta", + "649": "Genesect", + "650": "Chespin", + "651": "Quilladin", + "652": "Chesnaught", + "653": "Fennekin", + "654": "Braixen", + "655": "Delphox", + "656": "Froakie", + "657": "Frogadier", + "658": "Greninja", + "659": "Bunnelby", + "660": "Diggersby", + "661": "Fletchling", + "662": "Fletchinder", + "663": "Talonflame", + "664": "Scatterbug", + "665": "Spewpa", + "666": "Vivillon", + "667": "Litleo", + "668": "Pyroar", + "669": "Flab\u00e9b\u00e9", + "670": "Floette", + "671": "Florges", + "672": "Skiddo", + "673": "Gogoat", + "674": "Pancham", + "675": "Pangoro", + "676": "Furfrou", + "677": "Espurr", + "678": "Meowstic", + "679": "Honedge", + "680": "Doublade", + "681": "Aegislash", + "682": "Spritzee", + "683": "Aromatisse", + "684": "Swirlix", + "685": "Slurpuff", + "686": "Inkay", + "687": "Malamar", + "688": "Binacle", + "689": "Barbaracle", + "690": "Skrelp", + "691": "Dragalge", + "692": "Clauncher", + "693": "Clawitzer", + "694": "Helioptile", + "695": "Heliolisk", + "696": "Tyrunt", + "697": "Tyrantrum", + "698": "Amaura", + "699": "Aurorus", + "700": "Sylveon", + "701": "Hawlucha", + "702": "Dedenne", + "703": "Carbink", + "704": "Goomy", + "705": "Sliggoo", + "706": "Goodra", + "707": "Klefki", + "708": "Phantump", + "709": "Trevenant", + "710": "Pumpkaboo", + "711": "Gourgeist", + "712": "Bergmite", + "713": "Avalugg", + "714": "Noibat", + "715": "Noivern", + "716": "Xerneas", + "717": "Yveltal", + "718": "Zygarde", + "719": "Diancie", + "720": "Hoopa", "721": "Volcanion" }, + "sizes": { + "001": "min\u00fasculo", + "002": "pequeno", + "003": "normal", + "004": "grande", + "005": "enorme" + }, "teams": { - "0": "Neutro", - "1": "M\u00edstico", - "2": "Valentia", - "3": "Instinto" - }, + "000": "Neutro", + "001": "M\u00edstico", + "002": "Valentia", + "003": "Instinto" + }, + "types": { + "001": "Normal", + "002": "Lutar", + "003": "Voando", + "004": "Veneno", + "005": "Terra", + "006": "Rocha", + "007": "Bicho", + "008": "Fantasma", + "009": "A\u00e7o", + "010": "Fogo", + "011": "\u00c1gua", + "012": "Grama", + "013": "El\u00e9trico", + "014": "Ps\u00edquico", + "015": "Gelo", + "016": "Drag\u00e3o", + "017": "Fada", + "018": "Escuro" + }, "weather": { - "0": "Nenhum", - "1": "Claro", - "2": "Chuva", - "3": "Parcialmente nublado", - "4": "Nublado", - "5": "Ventoso", - "6": "Neve", - "7": "Névoa" - }, - "misc": { - "boosted": "impulsionado" + "000": "Nenhum", + "001": "Claro", + "002": "Chuva", + "003": "Parcialmente nublado", + "004": "Nublado", + "005": "Ventoso", + "006": "Neve", + "007": "N\u00e9voa" } -} +} \ No newline at end of file diff --git a/locales/zh_hk.json b/locales/zh_hk.json index b7ed5c0ca..f3e54a073 100644 --- a/locales/zh_hk.json +++ b/locales/zh_hk.json @@ -1,965 +1,965 @@ { "leaders": { - "0": "Professor Willow (\u7dad\u7f85\u535a)", - "1": "Blanche (\u5e03\u862d)", - "2": "Candela (\u574e\u8fea)", - "3": "Spark (\u53f2\u5e15)" - }, - "sizes": { - "1": "\u8ff7\u4f60", - "2": "\u5c0f", - "3": "\u6b63\u5e38", - "4": "\u5927", - "5": "\u5de8\u5927" - }, - "types": { - "1": "\u4e00\u822c", - "2": "\u683c\u9b25", - "3": "\u98db\u884c", - "4": "\u6bd2", - "5": "\u5730\u9762", - "6": "\u5ca9\u77f3", - "7": "\u87f2", - "8": "\u5e7d\u9748", - "9": "\u92fc", - "10": "\u706b", - "11": "\u6c34", - "12": "\u8349", - "13": "\u96fb", - "14": "\u8d85\u80fd\u529b", - "15": "\u51b0", - "16": "\u9f8d", - "17": "\u5996\u7cbe", - "18": "\u60e1" - }, + "000": "Professor Willow (\u7dad\u7f85\u535a)", + "001": "Blanche (\u5e03\u862d)", + "002": "Candela (\u574e\u8fea)", + "003": "Spark (\u53f2\u5e15)" + }, + "misc": { + "boosted": "\u63d0\u632f" + }, "moves": { - "13": "Wrap (\u7dca\u675f)", - "14": "Hyper Beam (\u7834\u58de\u5149\u7dda)", - "16": "Dark Pulse (\u60e1\u4e4b\u6ce2\u52d5)", - "18": "Sludge (\u6c61\u6ce5\u653b\u64ca)", - "20": "Vice Grip (\u593e\u4f4f)", - "21": "Flame Wheel (\u706b\u7130\u8f2a)", - "22": "Megahorn (\u8d85\u7d1a\u89d2\u64ca)", - "24": "Flamethrower (\u5674\u5c04\u706b\u7130)", - "26": "Dig (\u6316\u6d1e)", - "28": "Cross Chop (\u5341\u5b57\u5288)", - "30": "Psybeam (\u5e7b\u8c61\u5149\u7dda)", - "31": "Earthquake (\u5730\u9707)", - "32": "Stone Edge (\u5c16\u77f3\u653b\u64ca)", - "33": "Ice Punch (\u51b0\u51cd\u62f3)", - "34": "Heart Stamp (\u611b\u5fc3\u5370\u7ae0)", - "35": "Discharge (\u653e\u96fb)", - "36": "Flash Cannon (\u52a0\u8fb2\u5149\u70ae)", - "38": "Drill Peck (\u5544\u947d)", - "39": "Ice Beam (\u51b0\u51cd\u5149\u675f)", - "40": "Blizzard (\u66b4\u98a8\u96ea)", - "42": "Heat Wave (\u71b1\u98a8)", - "45": "Aerial Ace (\u71d5\u8fd4)", - "46": "Drill Run (\u76f4\u885d\u947d)", - "47": "Petal Blizzard (\u843d\u82f1\u7e7d\u7d1b)", - "48": "Mega Drain (\u8d85\u7d1a\u5438\u53d6)", - "49": "Bug Buzz (\u87f2\u9cf4)", - "50": "Poison Fang (\u5287\u6bd2\u7259)", - "51": "Night Slash (\u6697\u8972\u8981\u5bb3)", - "53": "Bubble Beam (\u6ce1\u6cab\u5149\u7dda)", - "54": "Submission (\u5730\u7344\u7ffb\u6efe)", - "56": "Low Sweep (\u4e0b\u76e4\u8e22)", - "57": "Aqua Jet (\u6c34\u6d41\u5674\u5c04)", - "58": "Aqua Tail (\u6c34\u6d41\u5c3e)", - "59": "Seed Bomb (\u7a2e\u5b50\u70b8\u5f48)", - "60": "Psyshock (\u7cbe\u795e\u885d\u64ca)", - "62": "Ancient Power (\u539f\u59cb\u4e4b\u529b)", - "63": "Rock Tomb (\u5ca9\u77f3\u5c01\u9396)", - "64": "Rock Slide (\u5ca9\u5d29)", - "65": "Power Gem (\u529b\u91cf\u5bf6\u77f3)", - "66": "Shadow Sneak (\u5f71\u5b50\u5077\u8972)", - "67": "Shadow Punch (\u6697\u5f71\u62f3)", - "69": "Ominous Wind (\u5947\u7570\u4e4b\u98a8)", - "70": "Shadow Ball (\u6697\u5f71\u7403)", - "72": "Magnet Bomb (\u78c1\u9435\u70b8\u5f48)", - "74": "Iron Head (\u9435\u982d)", - "75": "Parabolic Charge (\u62cb\u7269\u9762\u5145\u96fb)", - "77": "Thunder Punch (\u96f7\u96fb\u62f3)", - "78": "Thunder (\u6253\u96f7)", - "79": "Thunderbolt (\u5341\u842c\u4f0f\u7279)", - "80": "Twister (\u9f8d\u6372\u98a8)", - "82": "Dragon Pulse (\u9f8d\u4e4b\u6ce2\u52d5)", - "83": "Dragon Claw (\u9f8d\u722a)", - "84": "Disarming Voice (\u9b45\u60d1\u4e4b\u8072)", - "85": "Draining Kiss (\u5438\u53d6\u4e4b\u543b)", - "86": "Dazzling Gleam (\u9b54\u6cd5\u9583\u8000)", - "87": "Moonblast (\u6708\u4eae\u4e4b\u529b)", - "88": "Play Rough (\u5b09\u9b27)", - "89": "Cross Poison (\u5341\u5b57\u6bd2\u5203)", - "90": "Sludge Bomb (\u6c61\u6ce5\u70b8\u5f48)", - "91": "Sludge Wave (\u6c61\u6ce5\u6ce2)", - "92": "Gunk Shot (\u5783\u573e\u5c04\u64ca)", - "94": "Bone Club (\u9aa8\u68d2)", - "95": "Bulldoze (\u91cd\u8e0f)", - "96": "Mud Bomb (\u6ce5\u5df4\u70b8\u5f48)", - "99": "Signal Beam (\u4fe1\u865f\u5149\u675f)", - "100": "X-Scissor (\u5341\u5b57\u526a)", - "101": "Flame Charge (\u84c4\u80fd\u7130\u8972)", - "102": "Flame Burst (\u70c8\u7130\u6ffa\u5c04)", - "103": "Fire Blast (\u5927\u5b57\u7206\u708e)", - "104": "Brine (\u9e7d\u6c34)", - "105": "Water Pulse (\u6c34\u4e4b\u6ce2\u52d5)", - "106": "Scald (\u71b1\u6c34)", - "107": "Hydro Pump (\u6c34\u70ae)", - "108": "Psychic (\u7cbe\u795e\u5f37\u5ff5)", - "109": "Psystrike (\u7cbe\u795e\u64ca\u7834)", - "111": "Icy Wind (\u51b0\u51cd\u4e4b\u98a8)", - "114": "Giga Drain (\u7d42\u6975\u5438\u53d6)", - "115": "Fire Punch (\u706b\u7130\u62f3)", - "116": "Solar Beam (\u65e5\u5149\u675f)", - "117": "Leaf Blade (\u8449\u5203)", - "118": "Power Whip (\u5f37\u529b\u97ad\u6253)", - "121": "Air Cutter (\u7a7a\u6c23\u5229\u5203)", - "122": "Hurricane (\u66b4\u98a8)", - "123": "Brick Break (\u5288\u74e6)", - "125": "Swift (\u9ad8\u901f\u661f\u661f)", - "126": "Horn Attack (\u89d2\u649e)", - "127": "Stomp (\u8e29\u8e0f)", - "129": "Hyper Fang (\u5fc5\u6bba\u9580\u7259)", - "131": "Body Slam (\u6cf0\u5c71\u58d3\u9802)", - "132": "Rest (\u7761\u89ba)", - "133": "Struggle (\u6399\u624e)", - "134": "Scald (Blastoise) (\u71b1\u6c34)", - "135": "Hydro Pump (Blastoise) (\u6c34\u70ae)", - "136": "Wrap (Green) (\u7dca\u675f)", - "137": "Wrap (Pink) (\u7dca\u675f)", - "200": "Fury Cutter (\u9023\u65ac)", - "201": "Bug Bite (\u87f2\u54ac)", - "202": "Bite (\u54ac\u4f4f)", - "203": "Sucker Punch (\u7a81\u8972)", - "204": "Dragon Breath (\u9f8d\u606f)", - "205": "Thunder Shock (\u96fb\u64ca)", - "206": "Spark (\u96fb\u5149)", - "207": "Low Kick (\u8e22\u5012)", - "208": "Karate Chop (\u7a7a\u624b\u5288)", - "209": "Ember (\u706b\u82b1)", - "210": "Wing Attack (\u7fc5\u8180\u653b\u64ca)", - "211": "Peck (\u5544)", - "212": "Lick (\u820c\u8214)", - "213": "Shadow Claw (\u6697\u5f71\u722a)", - "214": "Vine Whip (\u85e4\u97ad)", - "215": "Razor Leaf (\u98db\u8449\u5feb\u5200)", - "216": "Mud Shot (\u6ce5\u5df4\u5c04\u64ca)", - "217": "Ice Shard (\u51b0\u792b)", - "218": "Frost Breath (\u51b0\u606f)", - "219": "Quick Attack (\u96fb\u5149\u4e00\u9583)", - "220": "Scratch (\u6293)", - "221": "Tackle (\u649e\u64ca)", - "222": "Pound (\u62cd\u64ca)", - "223": "Cut (\u5c45\u5408\u65ac)", - "224": "Poison Jab (\u6bd2\u64ca)", - "225": "Acid (\u6eb6\u89e3\u6db2)", - "226": "Psycho Cut (\u7cbe\u795e\u5229\u5203)", - "227": "Rock Throw (\u843d\u77f3)", - "228": "Metal Claw (\u91d1\u5c6c\u722a)", - "229": "Bullet Punch (\u5b50\u5f48\u62f3)", - "230": "Water Gun (\u6c34\u69cd)", - "231": "Splash (\u8e8d\u8d77)", - "233": "Mud Slap (\u64f2\u6ce5)", - "234": "Zen Headbutt (\u610f\u5ff5\u982d\u9318)", - "235": "Confusion (\u5ff5\u529b)", - "236": "Poison Sting (\u6bd2\u91dd)", - "237": "Bubble (\u6ce1\u6cab)", - "238": "Feint Attack (\u51fa\u5947\u4e00\u64ca)", - "239": "Steel Wing (\u92fc\u7ffc)", - "240": "Fire Fang (\u706b\u7130\u7259)", - "241": "Rock Smash (\u788e\u5ca9)", - "242": "Transform (\u8b8a\u8eab)", - "243": "Counter (\u96d9\u500d\u5949\u9084)", - "244": "Powder Snow (\u7d30\u96ea)", - "245": "Close Combat (\u8fd1\u8eab\u6230)", - "246": "Dynamic Punch (\u7206\u88c2\u62f3)", - "247": "Focus Blast (\u771f\u6c23\u5f48)", - "248": "Aurora Beam (\u6975\u5149\u675f)", - "249": "Charge Beam (\u5145\u96fb\u5149\u675f)", - "250": "Volt Switch (\u4f0f\u7279\u66ff\u63db)", - "251": "Wild Charge (\u760b\u72c2\u4f0f\u7279)", - "252": "Zap Cannon (\u96fb\u78c1\u70ae)", - "253": "Dragon Tail (\u9f8d\u5c3e)", - "254": "Avalanche (\u96ea\u5d29)", - "255": "Air Slash (\u7a7a\u6c23\u65ac)", - "256": "Brave Bird (\u52c7\u9ce5\u731b\u653b)", - "257": "Sky Attack (\u795e\u9ce5\u731b\u64ca)", - "258": "Sand Tomb (\u6d41\u6c99\u5730\u7344)", - "259": "Rock Blast (\u5ca9\u77f3\u7206\u64ca)", - "260": "Infestation (\u6b7b\u7e8f\u721b\u6253)", - "261": "Struggle Bug (\u87f2\u4e4b\u62b5\u6297)", - "262": "Silver Wind (\u9280\u8272\u65cb\u98a8)", - "263": "Astonish (\u9a5a\u5687)", - "264": "Hex (\u798d\u4e0d\u55ae\u884c)", - "265": "Night Shade (\u9ed1\u591c\u9b54\u5f71)", - "266": "Iron Tail (\u9435\u5c3e)", - "267": "Gyro Ball (\u9640\u87ba\u7403)", - "268": "Heavy Slam (\u91cd\u78c5\u885d\u649e)", - "269": "Fire Spin (\u706b\u7130\u65cb\u6e26)", - "270": "Overheat (\u904e\u71b1)", - "271": "Bullet Seed (\u7a2e\u5b50\u6a5f\u95dc\u69cd)", - "272": "Grass Knot (\u6253\u8349\u7d50)", - "273": "Energy Ball (\u80fd\u91cf\u7403)", - "274": "Extrasensory (\u795e\u901a\u529b)", - "275": "Future Sight (\u9810\u77e5\u672a\u4f86)", - "276": "Mirror Coat (\u93e1\u9762\u53cd\u5c04)", - "277": "Outrage (\u9006\u9e9f)", - "278": "Snarl (\u5927\u8072\u5486\u54ee)", - "279": "Crunch (\u54ac\u788e)", - "280": "Foul Play (\u6b3a\u8a50)", - "281": "Hidden Power (\u89ba\u9192\u529b\u91cf)", - "282": "Take Down (\u731b\u649e)", - "283": "Waterfall (\u6500\u7011)", - "284": "Surf (\u885d\u6d6a)", - "285": "Draco Meteor (\u6d41\u661f\u7fa4)", - "286": "Doom Desire (\u7834\u6ec5\u4e4b\u9858)", - "287": "Yawn (\u54c8\u6b20)", - "288": "Psycho Boost (\u7cbe\u795e\u7a81\u9032)", - "289": "Origin Pulse (\u6839\u6e90\u6ce2\u52d5)", - "290": "Precipice Blades (\u65b7\u5d16\u4e4b\u528d)", + "013": "Wrap (\u7dca\u675f)", + "014": "Hyper Beam (\u7834\u58de\u5149\u7dda)", + "016": "Dark Pulse (\u60e1\u4e4b\u6ce2\u52d5)", + "018": "Sludge (\u6c61\u6ce5\u653b\u64ca)", + "020": "Vice Grip (\u593e\u4f4f)", + "021": "Flame Wheel (\u706b\u7130\u8f2a)", + "022": "Megahorn (\u8d85\u7d1a\u89d2\u64ca)", + "024": "Flamethrower (\u5674\u5c04\u706b\u7130)", + "026": "Dig (\u6316\u6d1e)", + "028": "Cross Chop (\u5341\u5b57\u5288)", + "030": "Psybeam (\u5e7b\u8c61\u5149\u7dda)", + "031": "Earthquake (\u5730\u9707)", + "032": "Stone Edge (\u5c16\u77f3\u653b\u64ca)", + "033": "Ice Punch (\u51b0\u51cd\u62f3)", + "034": "Heart Stamp (\u611b\u5fc3\u5370\u7ae0)", + "035": "Discharge (\u653e\u96fb)", + "036": "Flash Cannon (\u52a0\u8fb2\u5149\u70ae)", + "038": "Drill Peck (\u5544\u947d)", + "039": "Ice Beam (\u51b0\u51cd\u5149\u675f)", + "040": "Blizzard (\u66b4\u98a8\u96ea)", + "042": "Heat Wave (\u71b1\u98a8)", + "045": "Aerial Ace (\u71d5\u8fd4)", + "046": "Drill Run (\u76f4\u885d\u947d)", + "047": "Petal Blizzard (\u843d\u82f1\u7e7d\u7d1b)", + "048": "Mega Drain (\u8d85\u7d1a\u5438\u53d6)", + "049": "Bug Buzz (\u87f2\u9cf4)", + "050": "Poison Fang (\u5287\u6bd2\u7259)", + "051": "Night Slash (\u6697\u8972\u8981\u5bb3)", + "053": "Bubble Beam (\u6ce1\u6cab\u5149\u7dda)", + "054": "Submission (\u5730\u7344\u7ffb\u6efe)", + "056": "Low Sweep (\u4e0b\u76e4\u8e22)", + "057": "Aqua Jet (\u6c34\u6d41\u5674\u5c04)", + "058": "Aqua Tail (\u6c34\u6d41\u5c3e)", + "059": "Seed Bomb (\u7a2e\u5b50\u70b8\u5f48)", + "060": "Psyshock (\u7cbe\u795e\u885d\u64ca)", + "062": "Ancient Power (\u539f\u59cb\u4e4b\u529b)", + "063": "Rock Tomb (\u5ca9\u77f3\u5c01\u9396)", + "064": "Rock Slide (\u5ca9\u5d29)", + "065": "Power Gem (\u529b\u91cf\u5bf6\u77f3)", + "066": "Shadow Sneak (\u5f71\u5b50\u5077\u8972)", + "067": "Shadow Punch (\u6697\u5f71\u62f3)", + "069": "Ominous Wind (\u5947\u7570\u4e4b\u98a8)", + "070": "Shadow Ball (\u6697\u5f71\u7403)", + "072": "Magnet Bomb (\u78c1\u9435\u70b8\u5f48)", + "074": "Iron Head (\u9435\u982d)", + "075": "Parabolic Charge (\u62cb\u7269\u9762\u5145\u96fb)", + "077": "Thunder Punch (\u96f7\u96fb\u62f3)", + "078": "Thunder (\u6253\u96f7)", + "079": "Thunderbolt (\u5341\u842c\u4f0f\u7279)", + "080": "Twister (\u9f8d\u6372\u98a8)", + "082": "Dragon Pulse (\u9f8d\u4e4b\u6ce2\u52d5)", + "083": "Dragon Claw (\u9f8d\u722a)", + "084": "Disarming Voice (\u9b45\u60d1\u4e4b\u8072)", + "085": "Draining Kiss (\u5438\u53d6\u4e4b\u543b)", + "086": "Dazzling Gleam (\u9b54\u6cd5\u9583\u8000)", + "087": "Moonblast (\u6708\u4eae\u4e4b\u529b)", + "088": "Play Rough (\u5b09\u9b27)", + "089": "Cross Poison (\u5341\u5b57\u6bd2\u5203)", + "090": "Sludge Bomb (\u6c61\u6ce5\u70b8\u5f48)", + "091": "Sludge Wave (\u6c61\u6ce5\u6ce2)", + "092": "Gunk Shot (\u5783\u573e\u5c04\u64ca)", + "094": "Bone Club (\u9aa8\u68d2)", + "095": "Bulldoze (\u91cd\u8e0f)", + "096": "Mud Bomb (\u6ce5\u5df4\u70b8\u5f48)", + "099": "Signal Beam (\u4fe1\u865f\u5149\u675f)", + "100": "X-Scissor (\u5341\u5b57\u526a)", + "101": "Flame Charge (\u84c4\u80fd\u7130\u8972)", + "102": "Flame Burst (\u70c8\u7130\u6ffa\u5c04)", + "103": "Fire Blast (\u5927\u5b57\u7206\u708e)", + "104": "Brine (\u9e7d\u6c34)", + "105": "Water Pulse (\u6c34\u4e4b\u6ce2\u52d5)", + "106": "Scald (\u71b1\u6c34)", + "107": "Hydro Pump (\u6c34\u70ae)", + "108": "Psychic (\u7cbe\u795e\u5f37\u5ff5)", + "109": "Psystrike (\u7cbe\u795e\u64ca\u7834)", + "111": "Icy Wind (\u51b0\u51cd\u4e4b\u98a8)", + "114": "Giga Drain (\u7d42\u6975\u5438\u53d6)", + "115": "Fire Punch (\u706b\u7130\u62f3)", + "116": "Solar Beam (\u65e5\u5149\u675f)", + "117": "Leaf Blade (\u8449\u5203)", + "118": "Power Whip (\u5f37\u529b\u97ad\u6253)", + "121": "Air Cutter (\u7a7a\u6c23\u5229\u5203)", + "122": "Hurricane (\u66b4\u98a8)", + "123": "Brick Break (\u5288\u74e6)", + "125": "Swift (\u9ad8\u901f\u661f\u661f)", + "126": "Horn Attack (\u89d2\u649e)", + "127": "Stomp (\u8e29\u8e0f)", + "129": "Hyper Fang (\u5fc5\u6bba\u9580\u7259)", + "131": "Body Slam (\u6cf0\u5c71\u58d3\u9802)", + "132": "Rest (\u7761\u89ba)", + "133": "Struggle (\u6399\u624e)", + "134": "Scald (Blastoise) (\u71b1\u6c34)", + "135": "Hydro Pump (Blastoise) (\u6c34\u70ae)", + "136": "Wrap (Green) (\u7dca\u675f)", + "137": "Wrap (Pink) (\u7dca\u675f)", + "200": "Fury Cutter (\u9023\u65ac)", + "201": "Bug Bite (\u87f2\u54ac)", + "202": "Bite (\u54ac\u4f4f)", + "203": "Sucker Punch (\u7a81\u8972)", + "204": "Dragon Breath (\u9f8d\u606f)", + "205": "Thunder Shock (\u96fb\u64ca)", + "206": "Spark (\u96fb\u5149)", + "207": "Low Kick (\u8e22\u5012)", + "208": "Karate Chop (\u7a7a\u624b\u5288)", + "209": "Ember (\u706b\u82b1)", + "210": "Wing Attack (\u7fc5\u8180\u653b\u64ca)", + "211": "Peck (\u5544)", + "212": "Lick (\u820c\u8214)", + "213": "Shadow Claw (\u6697\u5f71\u722a)", + "214": "Vine Whip (\u85e4\u97ad)", + "215": "Razor Leaf (\u98db\u8449\u5feb\u5200)", + "216": "Mud Shot (\u6ce5\u5df4\u5c04\u64ca)", + "217": "Ice Shard (\u51b0\u792b)", + "218": "Frost Breath (\u51b0\u606f)", + "219": "Quick Attack (\u96fb\u5149\u4e00\u9583)", + "220": "Scratch (\u6293)", + "221": "Tackle (\u649e\u64ca)", + "222": "Pound (\u62cd\u64ca)", + "223": "Cut (\u5c45\u5408\u65ac)", + "224": "Poison Jab (\u6bd2\u64ca)", + "225": "Acid (\u6eb6\u89e3\u6db2)", + "226": "Psycho Cut (\u7cbe\u795e\u5229\u5203)", + "227": "Rock Throw (\u843d\u77f3)", + "228": "Metal Claw (\u91d1\u5c6c\u722a)", + "229": "Bullet Punch (\u5b50\u5f48\u62f3)", + "230": "Water Gun (\u6c34\u69cd)", + "231": "Splash (\u8e8d\u8d77)", + "233": "Mud Slap (\u64f2\u6ce5)", + "234": "Zen Headbutt (\u610f\u5ff5\u982d\u9318)", + "235": "Confusion (\u5ff5\u529b)", + "236": "Poison Sting (\u6bd2\u91dd)", + "237": "Bubble (\u6ce1\u6cab)", + "238": "Feint Attack (\u51fa\u5947\u4e00\u64ca)", + "239": "Steel Wing (\u92fc\u7ffc)", + "240": "Fire Fang (\u706b\u7130\u7259)", + "241": "Rock Smash (\u788e\u5ca9)", + "242": "Transform (\u8b8a\u8eab)", + "243": "Counter (\u96d9\u500d\u5949\u9084)", + "244": "Powder Snow (\u7d30\u96ea)", + "245": "Close Combat (\u8fd1\u8eab\u6230)", + "246": "Dynamic Punch (\u7206\u88c2\u62f3)", + "247": "Focus Blast (\u771f\u6c23\u5f48)", + "248": "Aurora Beam (\u6975\u5149\u675f)", + "249": "Charge Beam (\u5145\u96fb\u5149\u675f)", + "250": "Volt Switch (\u4f0f\u7279\u66ff\u63db)", + "251": "Wild Charge (\u760b\u72c2\u4f0f\u7279)", + "252": "Zap Cannon (\u96fb\u78c1\u70ae)", + "253": "Dragon Tail (\u9f8d\u5c3e)", + "254": "Avalanche (\u96ea\u5d29)", + "255": "Air Slash (\u7a7a\u6c23\u65ac)", + "256": "Brave Bird (\u52c7\u9ce5\u731b\u653b)", + "257": "Sky Attack (\u795e\u9ce5\u731b\u64ca)", + "258": "Sand Tomb (\u6d41\u6c99\u5730\u7344)", + "259": "Rock Blast (\u5ca9\u77f3\u7206\u64ca)", + "260": "Infestation (\u6b7b\u7e8f\u721b\u6253)", + "261": "Struggle Bug (\u87f2\u4e4b\u62b5\u6297)", + "262": "Silver Wind (\u9280\u8272\u65cb\u98a8)", + "263": "Astonish (\u9a5a\u5687)", + "264": "Hex (\u798d\u4e0d\u55ae\u884c)", + "265": "Night Shade (\u9ed1\u591c\u9b54\u5f71)", + "266": "Iron Tail (\u9435\u5c3e)", + "267": "Gyro Ball (\u9640\u87ba\u7403)", + "268": "Heavy Slam (\u91cd\u78c5\u885d\u649e)", + "269": "Fire Spin (\u706b\u7130\u65cb\u6e26)", + "270": "Overheat (\u904e\u71b1)", + "271": "Bullet Seed (\u7a2e\u5b50\u6a5f\u95dc\u69cd)", + "272": "Grass Knot (\u6253\u8349\u7d50)", + "273": "Energy Ball (\u80fd\u91cf\u7403)", + "274": "Extrasensory (\u795e\u901a\u529b)", + "275": "Future Sight (\u9810\u77e5\u672a\u4f86)", + "276": "Mirror Coat (\u93e1\u9762\u53cd\u5c04)", + "277": "Outrage (\u9006\u9e9f)", + "278": "Snarl (\u5927\u8072\u5486\u54ee)", + "279": "Crunch (\u54ac\u788e)", + "280": "Foul Play (\u6b3a\u8a50)", + "281": "Hidden Power (\u89ba\u9192\u529b\u91cf)", + "282": "Take Down (\u731b\u649e)", + "283": "Waterfall (\u6500\u7011)", + "284": "Surf (\u885d\u6d6a)", + "285": "Draco Meteor (\u6d41\u661f\u7fa4)", + "286": "Doom Desire (\u7834\u6ec5\u4e4b\u9858)", + "287": "Yawn (\u54c8\u6b20)", + "288": "Psycho Boost (\u7cbe\u795e\u7a81\u9032)", + "289": "Origin Pulse (\u6839\u6e90\u6ce2\u52d5)", + "290": "Precipice Blades (\u65b7\u5d16\u4e4b\u528d)", "291": "Present (\u79ae\u7269)" - }, + }, "pokemon": { - "1": "\u5947\u7570\u7a2e\u5b50", - "2": "\u5947\u7570\u8349", - "3": "\u5947\u7570\u82b1", - "4": "\u5c0f\u706b\u9f8d", - "5": "\u706b\u6050\u9f8d", - "6": "\u5674\u706b\u9f8d", - "7": "\u8eca\u5398\u9f9c", - "8": "\u5361\u7f8e\u9f9c", - "9": "\u6c34\u7bad\u9f9c", - "10": "\u7da0\u6bdb\u87f2", - "11": "\u9435\u7532\u87f2", - "12": "\u5df4\u4ed6\u8776", - "13": "\u7368\u89d2\u87f2", - "14": "\u9435\u6bbc\u86f9", - "15": "\u5927\u91dd\u8702", - "16": "\u6ce2\u6ce2", - "17": "\u6bd4\u6bd4\u9ce5", - "18": "\u5927\u6bd4\u9ce5", - "19": "\u5c0f\u54e5\u9054", - "20": "\u54e5\u9054", - "21": "\u9b3c\u96c0", - "22": "\u9b54\u96c0", - "23": "\u963f\u67cf\u86c7", - "24": "\u963f\u67cf\u602a", - "25": "\u6bd4\u5361\u8d85", - "26": "\u96f7\u8d85", - "27": "\u7a7f\u5c71\u9f20", - "28": "\u7a7f\u5c71\u738b", - "29": "\u5c3c\u7f8e\u862d", - "30": "\u5c3c\u7f8e\u863f", - "31": "\u5c3c\u7f8e\u540e", - "32": "\u5c3c\u591a\u90ce", - "33": "\u5c3c\u591a\u5229", - "34": "\u5c3c\u591a\u738b", - "35": "\u76ae\u76ae", - "36": "\u76ae\u53ef\u65af", - "37": "\u516d\u5c3e", - "38": "\u4e5d\u5c3e", - "39": "\u6ce2\u6ce2\u7403", - "40": "\u80a5\u6ce2\u7403", - "41": "\u6ce2\u97f3\u8760", - "42": "\u5927\u53e3\u8760", - "43": "\u884c\u8def\u8349", - "44": "\u602a\u5473\u82b1", - "45": "\u9738\u738b\u82b1", - "46": "\u8611\u83c7\u87f2", - "47": "\u5de8\u83c7\u87f2", - "48": "\u6bdb\u6bdb\u87f2", - "49": "\u9b54\u9b6f\u98a8", - "50": "\u5730\u9f20", - "51": "\u4e09\u982d\u5730\u9f20", - "52": "\u55b5\u55b5\u602a", - "53": "\u9ad8\u7ac7\u8c93", - "54": "\u50bb\u9d28", - "55": "\u9ad8\u8d85\u9d28", - "56": "\u7334\u602a", - "57": "\u706b\u7206\u7334", - "58": "\u8b77\u4e3b\u72ac", - "59": "\u5949\u795e\u72ac", - "60": "\u868a\u9999\u874c\u86aa", - "61": "\u868a\u9999\u86d9", - "62": "\u5927\u529b\u86d9", - "63": "\u5361\u65af", - "64": "\u5c24\u57fa\u7d0d", - "65": "\u5bcc\u8fea", - "66": "\u9435\u8155", - "67": "\u5927\u529b", - "68": "\u602a\u529b", - "69": "\u5587\u53ed\u82bd", - "70": "\u53e3\u5446\u82b1", - "71": "\u5927\u98df\u82b1", - "72": "\u5927\u773c\u6c34\u6bcd", - "73": "\u591a\u8173\u6c34\u6bcd", - "74": "\u5c0f\u62f3\u77f3", - "75": "\u6efe\u52d5\u77f3", - "76": "\u6efe\u52d5\u5ca9", - "77": "\u5c0f\u706b\u99ac", - "78": "\u70c8\u7130\u99ac", - "79": "\u5c0f\u5446\u7378", - "80": "\u5927\u5446\u7378", - "81": "\u5c0f\u78c1\u602a", - "82": "\u4e09\u5408\u4e00\u78c1\u602a", - "83": "\u706b\u8525\u9d28", - "84": "\u591a\u591a", - "85": "\u591a\u591a\u5229", - "86": "\u5c0f\u6d77\u7345", - "87": "\u767d\u6d77\u7345", - "88": "\u721b\u6ce5\u602a", - "89": "\u721b\u6ce5\u7378", - "90": "\u8c9d\u6bbc\u602a", - "91": "\u9435\u7532\u8c9d", - "92": "\u9b3c\u65af", - "93": "\u9b3c\u65af\u901a", - "94": "\u803f\u9b3c", - "95": "\u5927\u5ca9\u86c7", - "96": "\u98df\u5922\u7378", - "97": "\u50ac\u7720\u7378", - "98": "\u5927\u9257\u87f9", - "99": "\u5de8\u9257\u87f9", - "100": "\u9739\u9742\u86cb", - "101": "\u96f7\u9706\u86cb", - "102": "\u86cb\u86cb", - "103": "\u6930\u6a39\u7378", - "104": "\u5361\u62c9\u5361\u62c9", - "105": "\u683c\u62c9\u683c\u62c9", - "106": "\u6c99\u53e4\u62c9", - "107": "\u6bd4\u83ef\u62c9", - "108": "\u5927\u820c\u982d", - "109": "\u6bd2\u6c23\u4e38", - "110": "\u6bd2\u6c23\u96d9\u5b50", - "111": "\u9435\u7532\u7280\u725b", - "112": "\u9435\u7532\u66b4\u9f8d", - "113": "\u5409\u5229\u86cb", - "114": "\u9577\u7c50\u602a", - "115": "\u888b\u7378", - "116": "\u5674\u58a8\u6d77\u99ac", - "117": "\u98db\u523a\u6d77\u99ac", - "118": "\u7368\u89d2\u91d1\u9b5a", - "119": "\u91d1\u9b5a\u738b", - "120": "\u6d77\u661f\u661f", - "121": "\u5bf6\u77f3\u6d77\u661f", - "122": "\u5438\u76e4\u5c0f\u4e11", - "123": "\u98db\u5929\u87b3\u8782", - "124": "\u7d05\u5507\u5a03", - "125": "\u96fb\u64ca\u7378", - "126": "\u9d28\u5634\u706b\u9f8d", - "127": "\u9257\u5200\u7532\u87f2", - "128": "\u5927\u96bb\u725b", - "129": "\u9bc9\u9b5a\u738b", - "130": "\u9bc9\u9b5a\u9f8d", - "131": "\u80cc\u80cc\u9f8d", - "132": "\u767e\u8b8a\u602a", - "133": "\u4f0a\u8c9d", - "134": "\u6c34\u4f0a\u8c9d", - "135": "\u96f7\u4f0a\u8c9d", - "136": "\u706b\u4f0a\u8c9d", - "137": "\u7acb\u65b9\u7378", - "138": "\u83ca\u77f3\u7378", - "139": "\u591a\u523a\u83ca\u77f3\u7378", - "140": "\u842c\u5e74\u87f2", - "141": "\u942e\u5200\u87f2", - "142": "\u5316\u77f3\u98db\u9f8d", - "143": "\u5361\u6bd4\u7378", - "144": "\u6025\u51cd\u9ce5", - "145": "\u96f7\u9ce5", - "146": "\u706b\u9ce5", - "147": "\u8ff7\u4f60\u9f8d", - "148": "\u54c8\u53e4\u9f8d", - "149": "\u555f\u66b4\u9f8d", - "150": "\u8d85\u5922\u5922", - "151": "\u5922\u5922", - "152": "\u83ca\u8349\u8449", - "153": "\u6708\u6842\u8449", - "154": "\u5927\u83ca\u82b1", - "155": "\u706b\u7403\u9f20", - "156": "\u706b\u5ca9\u9f20", - "157": "\u706b\u66b4\u7378", - "158": "\u5c0f\u92f8\u9c77", - "159": "\u85cd\u9c77", - "160": "\u5927\u529b\u9c77", - "161": "\u5c3e\u7acb", - "162": "\u5927\u5c3e\u7acb", - "163": "\u5495\u5495", - "164": "\u8c93\u982d\u591c\u9df9", - "165": "\u82ad\u74e2\u87f2", - "166": "\u5b89\u74e2\u87f2", - "167": "\u7dda\u7403", - "168": "\u963f\u5229\u591a\u65af", - "169": "\u53c9\u5b57\u8760", - "170": "\u71c8\u7c60\u9b5a", - "171": "\u96fb\u71c8\u602a", - "172": "\u6bd4\u8d85", - "173": "\u76ae\u5bf6\u5bf6", - "174": "\u5c0f\u6ce2\u7403", - "175": "\u5c0f\u523a\u86cb", - "176": "\u6ce2\u514b\u57fa\u53e4", - "177": "\u5929\u7136\u96c0", - "178": "\u5929\u7136\u9ce5", - "179": "\u54a9\u5229\u7f8a", - "180": "\u7dbf\u7dbf", - "181": "\u96fb\u9f8d", - "182": "\u7f8e\u9e97\u82b1", - "183": "\u746a\u5229\u9732", - "184": "\u746a\u5229\u9732\u9e97", - "185": "\u80e1\u8aaa\u6a39", - "186": "\u725b\u86d9\u541b", - "187": "\u6bfd\u5b50\u8349", - "188": "\u6bfd\u5b50\u82b1", - "189": "\u6bfd\u5b50\u7dbf", - "190": "\u9577\u5c3e\u602a\u624b", - "191": "\u5411\u65e5\u7a2e\u5b50", - "192": "\u5411\u65e5\u82b1\u602a", - "193": "\u967d\u967d\u746a", - "194": "\u70cf\u6ce2", - "195": "\u6cbc\u738b", - "196": "\u592a\u967d\u4f0a\u8c9d", - "197": "\u6708\u4f0a\u8c9d", - "198": "\u9ed1\u6697\u9d09", - "199": "\u6cb3\u99ac\u738b", - "200": "\u5922\u5996", - "201": "\u672a\u77e5\u5716\u9a30", - "202": "\u679c\u7136\u7fc1", - "203": "\u9e92\u9e9f\u5947", - "204": "\u699b\u679c\u7403", - "205": "\u4f5b\u70c8\u8a17\u65af", - "206": "\u571f\u9f8d\u5f1f\u5f1f", - "207": "\u5929\u880d", - "208": "\u5927\u92fc\u86c7", - "209": "\u5e03\u9b6f", - "210": "\u5e03\u9b6f\u7687", - "211": "\u5343\u91dd\u9b5a", - "212": "\u5de8\u9257\u87b3\u8782", - "213": "\u58fa\u58fa", - "214": "\u8d6b\u62c9\u514b\u7f85\u65af", - "215": "\u72c3\u62c9", - "216": "\u718a\u5bf6\u5bf6", - "217": "\u5708\u5708\u718a", - "218": "\u7194\u5ca9\u87f2", - "219": "\u7194\u5ca9\u8778\u725b", - "220": "\u5c0f\u5c71\u8c6c", - "221": "\u9577\u6bdb\u8c6c", - "222": "\u592a\u967d\u73ca\u745a", - "223": "\u9435\u70ae\u9b5a", - "224": "\u7ae0\u9b5a\u6876", - "225": "\u4fe1\u4f7f\u9ce5", - "226": "\u5de8\u7fc5\u98db\u9b5a", - "227": "\u76d4\u7532\u9ce5", - "228": "\u6234\u9b6f\u6bd4", - "229": "\u9ed1\u9b6f\u52a0", - "230": "\u523a\u9f8d\u738b", - "231": "\u5c0f\u5c0f\u8c61", - "232": "\u51ac\u51e1", - "233": "\u7acb\u65b9\u7378\uff12", - "234": "\u9a5a\u89d2\u9e7f", - "235": "\u5716\u5716\u72ac", - "236": "\u5df4\u723e\u90ce", - "237": "\u67ef\u6ce2\u6717", - "238": "\u8ff7\u5507\u5a03", - "239": "\u96fb\u64ca\u602a", - "240": "\u5c0f\u9d28\u5634\u9f8d", - "241": "\u5927\u5976\u7f50", - "242": "\u5e78\u798f\u86cb", - "243": "\u96f7\u516c", - "244": "\u708e\u5e1d", - "245": "\u6c34\u541b", - "246": "\u7531\u57fa\u62c9", - "247": "\u6c99\u57fa\u62c9", - "248": "\u73ed\u5409\u62c9", - "249": "\u5229\u57fa\u4e9e", - "250": "\u9cf3\u51f0", - "251": "\u96ea\u62c9\u6bd4", - "252": "\u6728\u5b88\u5bae", - "253": "\u68ee\u6797\u8725\u8734", - "254": "\u8725\u8734\u738b", - "255": "\u706b\u7a1a\u96de", - "256": "\u529b\u58ef\u96de", - "257": "\u706b\u7130\u96de", - "258": "\u6c34\u8e8d\u9b5a", - "259": "\u6cbc\u8e8d\u9b5a", - "260": "\u5de8\u6cbc\u602a", - "261": "\u571f\u72fc\u72ac", - "262": "\u5927\u72fc\u72ac", - "263": "\u86c7\u7d0b\u718a", - "264": "\u76f4\u885d\u718a", - "265": "\u523a\u5c3e\u87f2", - "266": "\u7532\u6bbc\u86f9", - "267": "\u72e9\u7375\u9cf3\u8776", - "268": "\u76fe\u7532\u7e6d", - "269": "\u6bd2\u7c89\u8776", - "270": "\u84ee\u8449\u7ae5\u5b50", - "271": "\u84ee\u5e3d\u5c0f\u7ae5", - "272": "\u6a02\u5929\u6cb3\u7ae5", - "273": "\u6a61\u5be6\u679c", - "274": "\u9577\u9f3b\u8449", - "275": "\u72e1\u733e\u5929\u72d7", - "276": "\u50b2\u9aa8\u71d5", - "277": "\u5927\u738b\u71d5", - "278": "\u9577\u7fc5\u9dd7", - "279": "\u5927\u5634\u9dd7", - "280": "\u62c9\u9b6f\u62c9\u7d72", - "281": "\u5947\u9b6f\u8389\u5b89", - "282": "\u6c99\u5948\u6735", - "283": "\u6e9c\u6e9c\u7cd6\u7403", - "284": "\u96e8\u7fc5\u86fe", - "285": "\u8611\u8611\u83c7", - "286": "\u6597\u7b20\u83c7", - "287": "\u61f6\u4eba\u7fc1", - "288": "\u904e\u52d5\u733f", - "289": "\u8acb\u5047\u738b", - "290": "\u571f\u5c45\u5fcd\u58eb", - "291": "\u9435\u9762\u5fcd\u8005", - "292": "\u812b\u6bbc\u5fcd\u8005", - "293": "\u5495\u599e\u599e", - "294": "\u543c\u7206\u5f48", - "295": "\u7206\u97f3\u602a", - "296": "\u5e55\u4e0b\u529b\u58eb", - "297": "\u8d85\u529b\u738b", - "298": "\u9732\u529b\u9e97", - "299": "\u671d\u5317\u9f3b", - "300": "\u5411\u5c3e\u55b5", - "301": "\u512a\u96c5\u8c93", - "302": "\u52fe\u9b42\u773c", - "303": "\u5927\u5634\u5a03", - "304": "\u53ef\u53ef\u591a\u62c9", - "305": "\u53ef\u591a\u62c9", - "306": "\u6ce2\u58eb\u53ef\u591a\u62c9", - "307": "\u746a\u6c99\u90a3", - "308": "\u6070\u96f7\u59c6", - "309": "\u843d\u96f7\u7378", - "310": "\u96f7\u96fb\u7378", - "311": "\u6b63\u96fb\u62cd\u62cd", - "312": "\u8ca0\u96fb\u62cd\u62cd", - "313": "\u96fb\u87a2\u87f2", - "314": "\u751c\u751c\u87a2", - "315": "\u6bd2\u8594\u8587", - "316": "\u6eb6\u98df\u7378", - "317": "\u541e\u98df\u7378", - "318": "\u5229\u7259\u9b5a", - "319": "\u5de8\u7259\u9bca", - "320": "\u543c\u543c\u9be8", - "321": "\u543c\u9be8\u738b", - "322": "\u5446\u706b\u99dd", - "323": "\u5674\u706b\u99dd", - "324": "\u7164\u70ad\u9f9c", - "325": "\u8df3\u8df3\u8c6c", - "326": "\u5657\u5657\u8c6c", - "327": "\u6643\u6643\u6591", - "328": "\u5927\u984e\u87fb", - "329": "\u8d85\u97f3\u6ce2\u5e7c\u87f2", - "330": "\u6c99\u6f20\u873b\u8713", - "331": "\u6c99\u6f20\u5948\u4e9e", - "332": "\u5922\u6b4c\u5948\u4e9e", - "333": "\u9752\u7dbf\u9ce5", - "334": "\u4e03\u5915\u9752\u9ce5", - "335": "\u8c93\u9f2c\u65ac", - "336": "\u98ef\u5319\u86c7", - "337": "\u6708\u77f3", - "338": "\u592a\u967d\u5ca9", - "339": "\u6ce5\u6ce5\u9c0d", - "340": "\u9bf0\u9b5a\u738b", - "341": "\u9f8d\u8766\u5c0f\u5175", - "342": "\u9435\u87c4\u9f8d\u8766", - "343": "\u5929\u79e4\u5076", - "344": "\u5ff5\u529b\u571f\u5076", - "345": "\u89f8\u624b\u767e\u5408", - "346": "\u6416\u7c43\u767e\u5408", - "347": "\u592a\u53e4\u7fbd\u87f2", - "348": "\u592a\u53e4\u76d4\u7532", - "349": "\u7b28\u7b28\u9b5a", - "350": "\u7f8e\u7d0d\u65af", - "351": "\u6f02\u6d6e\u6ce1\u6ce1", - "352": "\u8b8a\u96b1\u9f8d", - "353": "\u6028\u5f71\u5a03\u5a03", - "354": "\u8a5b\u5492\u5a03\u5a03", - "355": "\u591c\u9ab7\u9acf", - "356": "\u591c\u5de8\u4eba", - "357": "\u71b1\u5e36\u9f8d", - "358": "\u98a8\u9234\u9234", - "359": "\u963f\u52c3\u68ad\u9b6f", - "360": "\u679c\u7136\u4ed4", - "361": "\u96ea\u7ae5\u5b50", - "362": "\u51b0\u9b3c\u8b77", - "363": "\u6d77\u8c79\u7403", - "364": "\u6d77\u9b54\u7345", - "365": "\u5e1d\u7259\u6d77\u7345", - "366": "\u73cd\u73e0\u8c9d", - "367": "\u7375\u6591\u9b5a", - "368": "\u6afb\u82b1\u9b5a", - "369": "\u53e4\u7a7a\u68d8\u9b5a", - "370": "\u611b\u5fc3\u9b5a", - "371": "\u5bf6\u8c9d\u9f8d", - "372": "\u7532\u6bbc\u9f8d", - "373": "\u66b4\u8811\u8788", - "374": "\u9435\u555e\u9234", - "375": "\u91d1\u5c6c\u602a", - "376": "\u5de8\u91d1\u602a", - "377": "\u96f7\u5409\u6d1b\u514b", - "378": "\u96f7\u5409\u827e\u65af", - "379": "\u96f7\u5409\u65af\u5947\u9b6f", - "380": "\u62c9\u5e1d\u4e9e\u65af", - "381": "\u62c9\u5e1d\u6b50\u65af", - "382": "\u84cb\u6b50\u5361", - "383": "\u56fa\u62c9\u591a", - "384": "\u70c8\u7a7a\u5750", - "385": "\u57fa\u62c9\u7948", - "386": "\u4ee3\u6b50\u5947\u5e0c\u65af", - "387": "\u8349\u82d7\u9f9c", - "388": "\u6a39\u6797\u9f9c", - "389": "\u571f\u53f0\u9f9c", - "390": "\u5c0f\u706b\u7130\u7334", - "391": "\u731b\u706b\u7334", - "392": "\u70c8\u7130\u7334", - "393": "\u6ce2\u52a0\u66fc", - "394": "\u6ce2\u7687\u5b50", - "395": "\u5e1d\u7687\u62ff\u6ce2", - "396": "\u59c6\u514b\u5152", - "397": "\u59c6\u514b\u9ce5", - "398": "\u59c6\u514b\u9df9", - "399": "\u5927\u7259\u72f8", - "400": "\u5927\u5c3e\u72f8", - "401": "\u5713\u6cd5\u5e2b", - "402": "\u97f3\u7bb1\u87c0", - "403": "\u5c0f\u8c93\u602a", - "404": "\u52d2\u514b\u8c93", - "405": "\u502b\u7434\u8c93", - "406": "\u542b\u7f9e\u82de", - "407": "\u7f85\u7d72\u96f7\u6735", - "408": "\u982d\u84cb\u9f8d", - "409": "\u6230\u69cc\u9f8d", - "410": "\u76fe\u7532\u9f8d", - "411": "\u8b77\u57ce\u9f8d", - "412": "\u7d50\u8349\u5152", - "413": "\u7d50\u8349\u8cb4\u5a66", - "414": "\u7d33\u58eb\u86fe", - "415": "\u4e09\u871c\u8702", - "416": "\u8702\u540e", - "417": "\u5e15\u5947\u5229\u8332", - "418": "\u6cf3\u6c23\u9f2c", - "419": "\u6d6e\u6f5b\u9f2c", - "420": "\u6afb\u82b1\u5bf6", - "421": "\u6afb\u82b1\u5152", - "422": "\u7121\u6bbc\u6d77\u725b", - "423": "\u6d77\u725b\u7378", - "424": "\u96d9\u5c3e\u602a\u624b", - "425": "\u98c4\u98c4\u7403", - "426": "\u9644\u548c\u6c23\u7403", - "427": "\u6372\u6372\u8033", - "428": "\u9577\u8033\u5154", - "429": "\u5922\u5996\u9b54", - "430": "\u70cf\u9d09\u982d\u982d", - "431": "\u9b45\u529b\u55b5", - "432": "\u6771\u65bd\u55b5", - "433": "\u9234\u5679\u97ff", - "434": "\u81ed\u9f2c\u5657", - "435": "\u5766\u514b\u81ed\u9f2c", - "436": "\u9285\u93e1\u602a", - "437": "\u9752\u9285\u9418", - "438": "\u611b\u54ed\u6a39", - "439": "\u9b54\u5c3c\u5c3c", - "440": "\u597d\u904b\u86cb", - "441": "\u8052\u566a\u9ce5", - "442": "\u82b1\u5ca9\u602a", - "443": "\u5713\u9678\u9bca", - "444": "\u5c16\u7259\u9678\u9bca", - "445": "\u70c8\u54ac\u9678\u9bca", - "446": "\u5c0f\u5361\u6bd4\u7378", - "447": "\u5229\u6b50\u8def", - "448": "\u8def\u5361\u5229\u5965", - "449": "\u602a\u6cb3\u99ac", - "450": "\u6cb3\u99ac\u7378", - "451": "\u7d2b\u5929\u880d", - "452": "\u9f8d\u738b\u880d", - "453": "\u4e0d\u826f\u86d9", - "454": "\u6bd2\u9ab7\u86d9", - "455": "\u5c16\u7259\u7c60", - "456": "\u87a2\u5149\u9b5a", - "457": "\u9713\u8679\u9b5a", - "458": "\u5c0f\u7403\u98db\u9b5a", - "459": "\u96ea\u7b20\u602a", - "460": "\u66b4\u96ea\u738b", - "461": "\u746a\u72c3\u62c9", - "462": "\u81ea\u7206\u78c1\u602a", - "463": "\u5927\u820c\u8214", - "464": "\u8d85\u9435\u66b4\u9f8d", - "465": "\u5de8\u8513\u85e4", - "466": "\u96fb\u64ca\u9b54\u7378", - "467": "\u9d28\u5634\u7130\u9f8d", - "468": "\u6ce2\u514b\u57fa\u65af", - "469": "\u6885\u5361\u967d\u746a", - "470": "\u8449\u4f0a\u8c9d", - "471": "\u51b0\u4f0a\u8c9d", - "472": "\u5929\u880d\u738b", - "473": "\u8c61\u7259\u8c6c", - "474": "\u7acb\u65b9\u7378Z", - "475": "\u827e\u8def\u96f7\u6735", - "476": "\u5927\u671d\u5317\u9f3b", - "477": "\u591c\u9ed1\u9b54\u4eba", - "478": "\u96ea\u5996\u5973", - "479": "\u6d1b\u6258\u59c6", - "480": "\u7531\u514b\u5e0c", - "481": "\u827e\u59c6\u5229\u591a", - "482": "\u4e9e\u514b\u8afe\u59c6", - "483": "\u5e1d\u7259\u76e7\u5361", - "484": "\u5e15\u8def\u5947\u72bd", - "485": "\u5e2d\u591a\u85cd\u6069", - "486": "\u96f7\u5409\u5947\u5361\u65af", - "487": "\u9a0e\u62c9\u5e1d\u7d0d", - "488": "\u514b\u96f7\u8272\u5229\u4e9e", - "489": "\u970f\u6b50\u7d0d", - "490": "\u746a\u7d0d\u970f", - "491": "\u9054\u514b\u840a\u4f0a", - "492": "\u6f54\u54aa", - "493": "\u963f\u723e\u5b99\u65af", - "494": "\u6bd4\u514b\u63d0\u5c3c", - "495": "\u85e4\u85e4\u86c7", - "496": "\u9752\u85e4\u86c7", - "497": "\u541b\u4e3b\u86c7", - "498": "\u6696\u6696\u8c6c", - "499": "\u7092\u7092\u8c6c", - "500": "\u708e\u6b66\u738b", - "501": "\u6c34\u6c34\u737a", - "502": "\u96d9\u5203\u4e38", - "503": "\u5927\u528d\u9b3c", - "504": "\u63a2\u63a2\u9f20", - "505": "\u6b65\u54e8\u9f20", - "506": "\u5c0f\u7d04\u514b", - "507": "\u54c8\u7d04\u514b", - "508": "\u9577\u6bdb\u72d7", - "509": "\u6252\u624b\u8c93", - "510": "\u9177\u8c79", - "511": "\u82b1\u6930\u7334", - "512": "\u82b1\u6930\u733f", - "513": "\u7206\u9999\u7334", - "514": "\u7206\u9999\u733f", - "515": "\u51b7\u6c34\u7334", - "516": "\u51b7\u6c34\u733f", - "517": "\u98df\u5922\u5922", - "518": "\u5922\u5922\u8755", - "519": "\u8c46\u8c46\u9d3f", - "520": "\u6ce2\u6ce2\u9d3f", - "521": "\u8f5f\u9686\u96c9\u96de", - "522": "\u6591\u6591\u99ac", - "523": "\u96f7\u96fb\u6591\u99ac", - "524": "\u77f3\u4e38\u5b50", - "525": "\u5730\u5e54\u5ca9", - "526": "\u9f90\u5ca9\u602a", - "527": "\u6efe\u6efe\u8759\u8760", - "528": "\u5fc3\u8759\u8760", - "529": "\u87ba\u91d8\u5730\u9f20", - "530": "\u9f8d\u982d\u5730\u9f20", - "531": "\u5dee\u4e0d\u591a\u5a03\u5a03", - "532": "\u642c\u904b\u5c0f\u5320", - "533": "\u9435\u9aa8\u571f\u4eba", - "534": "\u4fee\u7e55\u8001\u982d", - "535": "\u5713\u874c\u86aa", - "536": "\u85cd\u87fe\u870d", - "537": "\u87fe\u870d\u738b", - "538": "\u6295\u5c04\u9b3c", - "539": "\u6253\u64ca\u9b3c", - "540": "\u87f2\u5bf6\u5305", - "541": "\u5bf6\u5305\u7e6d", - "542": "\u4fdd\u6bcd\u87f2", - "543": "\u767e\u8db3\u8708\u86a3", - "544": "\u8eca\u8f2a\u6bec", - "545": "\u8708\u86a3\u738b", - "546": "\u6728\u68c9\u7403", - "547": "\u98a8\u5996\u7cbe", - "548": "\u767e\u5408\u6839\u5a03\u5a03", - "549": "\u88d9\u5152\u5c0f\u59d0", - "550": "\u52c7\u58eb\u9c78\u9b5a", - "551": "\u9ed1\u773c\u9c77", - "552": "\u6df7\u6df7\u9c77", - "553": "\u6d41\u6c13\u9c77", - "554": "\u706b\u7d05\u4e0d\u5012\u7fc1", - "555": "\u9054\u6469\u72d2\u72d2", - "556": "\u8857\u982d\u6c99\u9234", - "557": "\u77f3\u5c45\u87f9", - "558": "\u5ca9\u6bbf\u5c45\u87f9", - "559": "\u6ed1\u982d\u5c0f\u5b50", - "560": "\u982d\u5dfe\u6df7\u6df7", - "561": "\u8c61\u5fb5\u9ce5", - "562": "\u54ed\u54ed\u9762\u5177", - "563": "\u6b7b\u795e\u68fa", - "564": "\u539f\u84cb\u6d77\u9f9c", - "565": "\u808b\u9aa8\u6d77\u9f9c", - "566": "\u59cb\u7956\u5c0f\u9ce5", - "567": "\u59cb\u7956\u5927\u9ce5", - "568": "\u7834\u7834\u888b", - "569": "\u7070\u5875\u5c71", - "570": "\u7d22\u7f85\u4e9e", - "571": "\u7d22\u7f85\u4e9e\u514b", - "572": "\u6ce1\u6cab\u6817\u9f20", - "573": "\u5947\u8afe\u6817\u9f20", - "574": "\u54e5\u5fb7\u5bf6\u5bf6", - "575": "\u54e5\u5fb7\u5c0f\u7ae5", - "576": "\u54e5\u5fb7\u5c0f\u59d0", - "577": "\u55ae\u5375\u7d30\u80de\u7403", - "578": "\u96d9\u5375\u7d30\u80de\u7403", - "579": "\u4eba\u9020\u7d30\u80de\u5375", - "580": "\u9d28\u5bf6\u5bf6", - "581": "\u9996\u5e2d\u5929\u9d5d", - "582": "\u8ff7\u4f60\u51b0", - "583": "\u591a\u591a\u51b0", - "584": "\u96d9\u500d\u591a\u591a\u51b0", - "585": "\u56db\u5b63\u9e7f", - "586": "\u82bd\u5439\u9e7f", - "587": "\u5c0e\u96fb\u98db\u9f20", - "588": "\u84cb\u84cb\u87f2", - "589": "\u9a0e\u58eb\u8778\u725b", - "590": "\u7cbe\u9748\u7403\u83c7", - "591": "\u66b4\u9732\u83c7", - "592": "\u8f15\u98c4\u98c4", - "593": "\u80d6\u561f\u561f", - "594": "\u4fdd\u6bcd\u66fc\u6ce2", - "595": "\u96fb\u96fb\u87f2", - "596": "\u96fb\u8718\u86db", - "597": "\u7a2e\u5b50\u9435\u7403", - "598": "\u5805\u679c\u555e\u9234", - "599": "\u9f52\u8f2a\u5152", - "600": "\u9f52\u8f2a\u7d44", - "601": "\u9f52\u8f2a\u602a", - "602": "\u9ebb\u9ebb\u5c0f\u9b5a", - "603": "\u9ebb\u9ebb\u9c3b", - "604": "\u9ebb\u9ebb\u9c3b\u9b5a\u738b", - "605": "\u5c0f\u7070\u602a", - "606": "\u5927\u5b87\u602a", - "607": "\u71ed\u5149\u9748", - "608": "\u71c8\u706b\u5e7d\u9748", - "609": "\u6c34\u6676\u71c8\u706b\u9748", - "610": "\u7259\u7259", - "611": "\u65a7\u7259\u9f8d", - "612": "\u96d9\u65a7\u6230\u9f8d", - "613": "\u5674\u568f\u718a", - "614": "\u51cd\u539f\u718a", - "615": "\u5e7e\u4f55\u96ea\u82b1", - "616": "\u5c0f\u5634\u8778", - "617": "\u654f\u6377\u87f2", - "618": "\u6ce5\u5df4\u9b5a", - "619": "\u529f\u592b\u9f2c", - "620": "\u5e2b\u7236\u9f2c", - "621": "\u8d64\u9762\u9f8d", - "622": "\u6ce5\u5076\u5c0f\u4eba", - "623": "\u6ce5\u5076\u5de8\u4eba", - "624": "\u99d2\u5200\u5c0f\u5175", - "625": "\u5288\u65ac\u53f8\u4ee4", - "626": "\u7206\u7206\u982d\u6c34\u725b", - "627": "\u6bdb\u982d\u5c0f\u9df9", - "628": "\u52c7\u58eb\u9df9", - "629": "\u79bf\u9df9\u5c0f\u5b50", - "630": "\u79bf\u9df9\u5a1c", - "631": "\u98df\u87fb\u7210", - "632": "\u9435\u87fb", - "633": "\u55ae\u9996\u9f8d", - "634": "\u96d9\u982d\u9f8d", - "635": "\u4e09\u982d\u9f8d", - "636": "\u71c3\u71d2\u87f2", - "637": "\u706b\u795e\u87f2", - "638": "\u52fe\u5e15\u8def\u7fc1", - "639": "\u4ee3\u62c9\u57fa\u7fc1", - "640": "\u7562\u529b\u5409\u7fc1", - "641": "\u9f8d\u6372\u96f2", - "642": "\u96f7\u96fb\u96f2", - "643": "\u96f7\u5e0c\u62c9\u59c6", - "644": "\u6377\u514b\u7f85\u59c6", - "645": "\u571f\u5730\u96f2", - "646": "\u914b\u96f7\u59c6", - "647": "\u51f1\u8def\u8fea\u6b50", - "648": "\u7f8e\u6d1b\u8036\u5854", - "649": "\u84cb\u8afe\u8cfd\u514b\u7279", - "650": "\u54c8\u529b\u99ac\u9f8d", - "651": "\u80a5\u4ed4\u54c8\u529b", - "652": "\u5e03\u91cc\u5361\u9686", - "653": "\u706b\u72d0\u72f8", - "654": "\u9577\u5c3e\u706b\u72d0", - "655": "\u5996\u706b\u7d05\u72d0", - "656": "\u5471\u5471\u6ce1\u86d9", - "657": "\u5471\u982d\u86d9", - "658": "\u7532\u8cc0\u5fcd\u86d9", - "659": "\u6316\u6316\u5154", - "660": "\u6509\u5730\u5154", - "661": "\u5c0f\u7bad\u96c0", - "662": "\u706b\u7bad\u96c0", - "663": "\u70c8\u7bad\u9df9", - "664": "\u7c89\u86f9", - "665": "\u7c89\u8776\u86f9", - "666": "\u78a7\u7c89\u8776", - "667": "\u5c0f\u7345\u7345", - "668": "\u706b\u708e\u7345", - "669": "\u82b1\u84d3\u84d3", - "670": "\u82b1\u8449\u8482", - "671": "\u82b1\u6f54\u592b\u4eba", - "672": "\u54a9\u54a9\u7f8a", - "673": "\u6307\u8def\u7f8a", - "674": "\u9811\u76ae\u718a\u8c93", - "675": "\u6d41\u6c13\u718a\u8c93", - "676": "\u591a\u9e97\u7c73\u4e9e", - "677": "\u5999\u55b5", - "678": "\u8d85\u80fd\u5999\u55b5", - "679": "\u7368\u528d\u9798", - "680": "\u96d9\u528d\u9798", - "681": "\u5805\u76fe\u528d\u602a", - "682": "\u7c89\u9999\u9999", - "683": "\u82b3\u9999\u7cbe", - "684": "\u7dbf\u7dbf\u6ce1\u8299", - "685": "\u80d6\u751c\u59ae", - "686": "\u6beb\u5587\u9b77", - "687": "\u70cf\u8cca\u738b", - "688": "\u9f9c\u8173\u8173", - "689": "\u9f9c\u8db3\u5de8\u93a7", - "690": "\u5783\u5783\u85fb", - "691": "\u6bd2\u62c9\u871c\u59ae", - "692": "\u9435\u81c2\u69cd\u8766", - "693": "\u92fc\u7832\u81c2\u8766", - "694": "\u767c\u96fb\u8725", - "695": "\u96fb\u5098\u67e5\u7279", - "696": "\u66b4\u9f8d\u4ed4", - "697": "\u602a\u984e\u9f8d", - "698": "\u51b0\u96ea\u9f8d", - "699": "\u51b0\u96ea\u5de8\u9f8d", - "700": "\u4ed9\u5b50\u4f0a\u8c9d", - "701": "\u6230\u9b25\u98db\u9ce5", - "702": "\u549a\u549a\u9f20", - "703": "\u5c0f\u788e\u947d", - "704": "\u9ecf\u9ecf\u5bf6", - "705": "\u9ecf\u7f8e\u5152", - "706": "\u9ecf\u7f8e\u9f8d", - "707": "\u9396\u5708\u5152", - "708": "\u5c0f\u6728\u9748", - "709": "\u673d\u6728\u5996", - "710": "\u5357\u74dc\u7cbe", - "711": "\u5357\u74dc\u602a\u4eba", - "712": "\u51b0\u5bf6", - "713": "\u51b0\u5ca9\u602a", - "714": "\u55e1\u8760", - "715": "\u97f3\u6ce2\u98db\u9f8d", - "716": "\u54f2\u723e\u5c3c\u4e9e\u65af", - "717": "\u4f0a\u79d8\u9b6f\u5854\u8def", - "718": "\u57fa\u683c\u723e\u5fb7", - "719": "\u8482\u5b89\u5e0c", - "720": "\u80e1\u5e15", + "001": "\u5947\u7570\u7a2e\u5b50", + "002": "\u5947\u7570\u8349", + "003": "\u5947\u7570\u82b1", + "004": "\u5c0f\u706b\u9f8d", + "005": "\u706b\u6050\u9f8d", + "006": "\u5674\u706b\u9f8d", + "007": "\u8eca\u5398\u9f9c", + "008": "\u5361\u7f8e\u9f9c", + "009": "\u6c34\u7bad\u9f9c", + "010": "\u7da0\u6bdb\u87f2", + "011": "\u9435\u7532\u87f2", + "012": "\u5df4\u4ed6\u8776", + "013": "\u7368\u89d2\u87f2", + "014": "\u9435\u6bbc\u86f9", + "015": "\u5927\u91dd\u8702", + "016": "\u6ce2\u6ce2", + "017": "\u6bd4\u6bd4\u9ce5", + "018": "\u5927\u6bd4\u9ce5", + "019": "\u5c0f\u54e5\u9054", + "020": "\u54e5\u9054", + "021": "\u9b3c\u96c0", + "022": "\u9b54\u96c0", + "023": "\u963f\u67cf\u86c7", + "024": "\u963f\u67cf\u602a", + "025": "\u6bd4\u5361\u8d85", + "026": "\u96f7\u8d85", + "027": "\u7a7f\u5c71\u9f20", + "028": "\u7a7f\u5c71\u738b", + "029": "\u5c3c\u7f8e\u862d", + "030": "\u5c3c\u7f8e\u863f", + "031": "\u5c3c\u7f8e\u540e", + "032": "\u5c3c\u591a\u90ce", + "033": "\u5c3c\u591a\u5229", + "034": "\u5c3c\u591a\u738b", + "035": "\u76ae\u76ae", + "036": "\u76ae\u53ef\u65af", + "037": "\u516d\u5c3e", + "038": "\u4e5d\u5c3e", + "039": "\u6ce2\u6ce2\u7403", + "040": "\u80a5\u6ce2\u7403", + "041": "\u6ce2\u97f3\u8760", + "042": "\u5927\u53e3\u8760", + "043": "\u884c\u8def\u8349", + "044": "\u602a\u5473\u82b1", + "045": "\u9738\u738b\u82b1", + "046": "\u8611\u83c7\u87f2", + "047": "\u5de8\u83c7\u87f2", + "048": "\u6bdb\u6bdb\u87f2", + "049": "\u9b54\u9b6f\u98a8", + "050": "\u5730\u9f20", + "051": "\u4e09\u982d\u5730\u9f20", + "052": "\u55b5\u55b5\u602a", + "053": "\u9ad8\u7ac7\u8c93", + "054": "\u50bb\u9d28", + "055": "\u9ad8\u8d85\u9d28", + "056": "\u7334\u602a", + "057": "\u706b\u7206\u7334", + "058": "\u8b77\u4e3b\u72ac", + "059": "\u5949\u795e\u72ac", + "060": "\u868a\u9999\u874c\u86aa", + "061": "\u868a\u9999\u86d9", + "062": "\u5927\u529b\u86d9", + "063": "\u5361\u65af", + "064": "\u5c24\u57fa\u7d0d", + "065": "\u5bcc\u8fea", + "066": "\u9435\u8155", + "067": "\u5927\u529b", + "068": "\u602a\u529b", + "069": "\u5587\u53ed\u82bd", + "070": "\u53e3\u5446\u82b1", + "071": "\u5927\u98df\u82b1", + "072": "\u5927\u773c\u6c34\u6bcd", + "073": "\u591a\u8173\u6c34\u6bcd", + "074": "\u5c0f\u62f3\u77f3", + "075": "\u6efe\u52d5\u77f3", + "076": "\u6efe\u52d5\u5ca9", + "077": "\u5c0f\u706b\u99ac", + "078": "\u70c8\u7130\u99ac", + "079": "\u5c0f\u5446\u7378", + "080": "\u5927\u5446\u7378", + "081": "\u5c0f\u78c1\u602a", + "082": "\u4e09\u5408\u4e00\u78c1\u602a", + "083": "\u706b\u8525\u9d28", + "084": "\u591a\u591a", + "085": "\u591a\u591a\u5229", + "086": "\u5c0f\u6d77\u7345", + "087": "\u767d\u6d77\u7345", + "088": "\u721b\u6ce5\u602a", + "089": "\u721b\u6ce5\u7378", + "090": "\u8c9d\u6bbc\u602a", + "091": "\u9435\u7532\u8c9d", + "092": "\u9b3c\u65af", + "093": "\u9b3c\u65af\u901a", + "094": "\u803f\u9b3c", + "095": "\u5927\u5ca9\u86c7", + "096": "\u98df\u5922\u7378", + "097": "\u50ac\u7720\u7378", + "098": "\u5927\u9257\u87f9", + "099": "\u5de8\u9257\u87f9", + "100": "\u9739\u9742\u86cb", + "101": "\u96f7\u9706\u86cb", + "102": "\u86cb\u86cb", + "103": "\u6930\u6a39\u7378", + "104": "\u5361\u62c9\u5361\u62c9", + "105": "\u683c\u62c9\u683c\u62c9", + "106": "\u6c99\u53e4\u62c9", + "107": "\u6bd4\u83ef\u62c9", + "108": "\u5927\u820c\u982d", + "109": "\u6bd2\u6c23\u4e38", + "110": "\u6bd2\u6c23\u96d9\u5b50", + "111": "\u9435\u7532\u7280\u725b", + "112": "\u9435\u7532\u66b4\u9f8d", + "113": "\u5409\u5229\u86cb", + "114": "\u9577\u7c50\u602a", + "115": "\u888b\u7378", + "116": "\u5674\u58a8\u6d77\u99ac", + "117": "\u98db\u523a\u6d77\u99ac", + "118": "\u7368\u89d2\u91d1\u9b5a", + "119": "\u91d1\u9b5a\u738b", + "120": "\u6d77\u661f\u661f", + "121": "\u5bf6\u77f3\u6d77\u661f", + "122": "\u5438\u76e4\u5c0f\u4e11", + "123": "\u98db\u5929\u87b3\u8782", + "124": "\u7d05\u5507\u5a03", + "125": "\u96fb\u64ca\u7378", + "126": "\u9d28\u5634\u706b\u9f8d", + "127": "\u9257\u5200\u7532\u87f2", + "128": "\u5927\u96bb\u725b", + "129": "\u9bc9\u9b5a\u738b", + "130": "\u9bc9\u9b5a\u9f8d", + "131": "\u80cc\u80cc\u9f8d", + "132": "\u767e\u8b8a\u602a", + "133": "\u4f0a\u8c9d", + "134": "\u6c34\u4f0a\u8c9d", + "135": "\u96f7\u4f0a\u8c9d", + "136": "\u706b\u4f0a\u8c9d", + "137": "\u7acb\u65b9\u7378", + "138": "\u83ca\u77f3\u7378", + "139": "\u591a\u523a\u83ca\u77f3\u7378", + "140": "\u842c\u5e74\u87f2", + "141": "\u942e\u5200\u87f2", + "142": "\u5316\u77f3\u98db\u9f8d", + "143": "\u5361\u6bd4\u7378", + "144": "\u6025\u51cd\u9ce5", + "145": "\u96f7\u9ce5", + "146": "\u706b\u9ce5", + "147": "\u8ff7\u4f60\u9f8d", + "148": "\u54c8\u53e4\u9f8d", + "149": "\u555f\u66b4\u9f8d", + "150": "\u8d85\u5922\u5922", + "151": "\u5922\u5922", + "152": "\u83ca\u8349\u8449", + "153": "\u6708\u6842\u8449", + "154": "\u5927\u83ca\u82b1", + "155": "\u706b\u7403\u9f20", + "156": "\u706b\u5ca9\u9f20", + "157": "\u706b\u66b4\u7378", + "158": "\u5c0f\u92f8\u9c77", + "159": "\u85cd\u9c77", + "160": "\u5927\u529b\u9c77", + "161": "\u5c3e\u7acb", + "162": "\u5927\u5c3e\u7acb", + "163": "\u5495\u5495", + "164": "\u8c93\u982d\u591c\u9df9", + "165": "\u82ad\u74e2\u87f2", + "166": "\u5b89\u74e2\u87f2", + "167": "\u7dda\u7403", + "168": "\u963f\u5229\u591a\u65af", + "169": "\u53c9\u5b57\u8760", + "170": "\u71c8\u7c60\u9b5a", + "171": "\u96fb\u71c8\u602a", + "172": "\u6bd4\u8d85", + "173": "\u76ae\u5bf6\u5bf6", + "174": "\u5c0f\u6ce2\u7403", + "175": "\u5c0f\u523a\u86cb", + "176": "\u6ce2\u514b\u57fa\u53e4", + "177": "\u5929\u7136\u96c0", + "178": "\u5929\u7136\u9ce5", + "179": "\u54a9\u5229\u7f8a", + "180": "\u7dbf\u7dbf", + "181": "\u96fb\u9f8d", + "182": "\u7f8e\u9e97\u82b1", + "183": "\u746a\u5229\u9732", + "184": "\u746a\u5229\u9732\u9e97", + "185": "\u80e1\u8aaa\u6a39", + "186": "\u725b\u86d9\u541b", + "187": "\u6bfd\u5b50\u8349", + "188": "\u6bfd\u5b50\u82b1", + "189": "\u6bfd\u5b50\u7dbf", + "190": "\u9577\u5c3e\u602a\u624b", + "191": "\u5411\u65e5\u7a2e\u5b50", + "192": "\u5411\u65e5\u82b1\u602a", + "193": "\u967d\u967d\u746a", + "194": "\u70cf\u6ce2", + "195": "\u6cbc\u738b", + "196": "\u592a\u967d\u4f0a\u8c9d", + "197": "\u6708\u4f0a\u8c9d", + "198": "\u9ed1\u6697\u9d09", + "199": "\u6cb3\u99ac\u738b", + "200": "\u5922\u5996", + "201": "\u672a\u77e5\u5716\u9a30", + "202": "\u679c\u7136\u7fc1", + "203": "\u9e92\u9e9f\u5947", + "204": "\u699b\u679c\u7403", + "205": "\u4f5b\u70c8\u8a17\u65af", + "206": "\u571f\u9f8d\u5f1f\u5f1f", + "207": "\u5929\u880d", + "208": "\u5927\u92fc\u86c7", + "209": "\u5e03\u9b6f", + "210": "\u5e03\u9b6f\u7687", + "211": "\u5343\u91dd\u9b5a", + "212": "\u5de8\u9257\u87b3\u8782", + "213": "\u58fa\u58fa", + "214": "\u8d6b\u62c9\u514b\u7f85\u65af", + "215": "\u72c3\u62c9", + "216": "\u718a\u5bf6\u5bf6", + "217": "\u5708\u5708\u718a", + "218": "\u7194\u5ca9\u87f2", + "219": "\u7194\u5ca9\u8778\u725b", + "220": "\u5c0f\u5c71\u8c6c", + "221": "\u9577\u6bdb\u8c6c", + "222": "\u592a\u967d\u73ca\u745a", + "223": "\u9435\u70ae\u9b5a", + "224": "\u7ae0\u9b5a\u6876", + "225": "\u4fe1\u4f7f\u9ce5", + "226": "\u5de8\u7fc5\u98db\u9b5a", + "227": "\u76d4\u7532\u9ce5", + "228": "\u6234\u9b6f\u6bd4", + "229": "\u9ed1\u9b6f\u52a0", + "230": "\u523a\u9f8d\u738b", + "231": "\u5c0f\u5c0f\u8c61", + "232": "\u51ac\u51e1", + "233": "\u7acb\u65b9\u7378\uff12", + "234": "\u9a5a\u89d2\u9e7f", + "235": "\u5716\u5716\u72ac", + "236": "\u5df4\u723e\u90ce", + "237": "\u67ef\u6ce2\u6717", + "238": "\u8ff7\u5507\u5a03", + "239": "\u96fb\u64ca\u602a", + "240": "\u5c0f\u9d28\u5634\u9f8d", + "241": "\u5927\u5976\u7f50", + "242": "\u5e78\u798f\u86cb", + "243": "\u96f7\u516c", + "244": "\u708e\u5e1d", + "245": "\u6c34\u541b", + "246": "\u7531\u57fa\u62c9", + "247": "\u6c99\u57fa\u62c9", + "248": "\u73ed\u5409\u62c9", + "249": "\u5229\u57fa\u4e9e", + "250": "\u9cf3\u51f0", + "251": "\u96ea\u62c9\u6bd4", + "252": "\u6728\u5b88\u5bae", + "253": "\u68ee\u6797\u8725\u8734", + "254": "\u8725\u8734\u738b", + "255": "\u706b\u7a1a\u96de", + "256": "\u529b\u58ef\u96de", + "257": "\u706b\u7130\u96de", + "258": "\u6c34\u8e8d\u9b5a", + "259": "\u6cbc\u8e8d\u9b5a", + "260": "\u5de8\u6cbc\u602a", + "261": "\u571f\u72fc\u72ac", + "262": "\u5927\u72fc\u72ac", + "263": "\u86c7\u7d0b\u718a", + "264": "\u76f4\u885d\u718a", + "265": "\u523a\u5c3e\u87f2", + "266": "\u7532\u6bbc\u86f9", + "267": "\u72e9\u7375\u9cf3\u8776", + "268": "\u76fe\u7532\u7e6d", + "269": "\u6bd2\u7c89\u8776", + "270": "\u84ee\u8449\u7ae5\u5b50", + "271": "\u84ee\u5e3d\u5c0f\u7ae5", + "272": "\u6a02\u5929\u6cb3\u7ae5", + "273": "\u6a61\u5be6\u679c", + "274": "\u9577\u9f3b\u8449", + "275": "\u72e1\u733e\u5929\u72d7", + "276": "\u50b2\u9aa8\u71d5", + "277": "\u5927\u738b\u71d5", + "278": "\u9577\u7fc5\u9dd7", + "279": "\u5927\u5634\u9dd7", + "280": "\u62c9\u9b6f\u62c9\u7d72", + "281": "\u5947\u9b6f\u8389\u5b89", + "282": "\u6c99\u5948\u6735", + "283": "\u6e9c\u6e9c\u7cd6\u7403", + "284": "\u96e8\u7fc5\u86fe", + "285": "\u8611\u8611\u83c7", + "286": "\u6597\u7b20\u83c7", + "287": "\u61f6\u4eba\u7fc1", + "288": "\u904e\u52d5\u733f", + "289": "\u8acb\u5047\u738b", + "290": "\u571f\u5c45\u5fcd\u58eb", + "291": "\u9435\u9762\u5fcd\u8005", + "292": "\u812b\u6bbc\u5fcd\u8005", + "293": "\u5495\u599e\u599e", + "294": "\u543c\u7206\u5f48", + "295": "\u7206\u97f3\u602a", + "296": "\u5e55\u4e0b\u529b\u58eb", + "297": "\u8d85\u529b\u738b", + "298": "\u9732\u529b\u9e97", + "299": "\u671d\u5317\u9f3b", + "300": "\u5411\u5c3e\u55b5", + "301": "\u512a\u96c5\u8c93", + "302": "\u52fe\u9b42\u773c", + "303": "\u5927\u5634\u5a03", + "304": "\u53ef\u53ef\u591a\u62c9", + "305": "\u53ef\u591a\u62c9", + "306": "\u6ce2\u58eb\u53ef\u591a\u62c9", + "307": "\u746a\u6c99\u90a3", + "308": "\u6070\u96f7\u59c6", + "309": "\u843d\u96f7\u7378", + "310": "\u96f7\u96fb\u7378", + "311": "\u6b63\u96fb\u62cd\u62cd", + "312": "\u8ca0\u96fb\u62cd\u62cd", + "313": "\u96fb\u87a2\u87f2", + "314": "\u751c\u751c\u87a2", + "315": "\u6bd2\u8594\u8587", + "316": "\u6eb6\u98df\u7378", + "317": "\u541e\u98df\u7378", + "318": "\u5229\u7259\u9b5a", + "319": "\u5de8\u7259\u9bca", + "320": "\u543c\u543c\u9be8", + "321": "\u543c\u9be8\u738b", + "322": "\u5446\u706b\u99dd", + "323": "\u5674\u706b\u99dd", + "324": "\u7164\u70ad\u9f9c", + "325": "\u8df3\u8df3\u8c6c", + "326": "\u5657\u5657\u8c6c", + "327": "\u6643\u6643\u6591", + "328": "\u5927\u984e\u87fb", + "329": "\u8d85\u97f3\u6ce2\u5e7c\u87f2", + "330": "\u6c99\u6f20\u873b\u8713", + "331": "\u6c99\u6f20\u5948\u4e9e", + "332": "\u5922\u6b4c\u5948\u4e9e", + "333": "\u9752\u7dbf\u9ce5", + "334": "\u4e03\u5915\u9752\u9ce5", + "335": "\u8c93\u9f2c\u65ac", + "336": "\u98ef\u5319\u86c7", + "337": "\u6708\u77f3", + "338": "\u592a\u967d\u5ca9", + "339": "\u6ce5\u6ce5\u9c0d", + "340": "\u9bf0\u9b5a\u738b", + "341": "\u9f8d\u8766\u5c0f\u5175", + "342": "\u9435\u87c4\u9f8d\u8766", + "343": "\u5929\u79e4\u5076", + "344": "\u5ff5\u529b\u571f\u5076", + "345": "\u89f8\u624b\u767e\u5408", + "346": "\u6416\u7c43\u767e\u5408", + "347": "\u592a\u53e4\u7fbd\u87f2", + "348": "\u592a\u53e4\u76d4\u7532", + "349": "\u7b28\u7b28\u9b5a", + "350": "\u7f8e\u7d0d\u65af", + "351": "\u6f02\u6d6e\u6ce1\u6ce1", + "352": "\u8b8a\u96b1\u9f8d", + "353": "\u6028\u5f71\u5a03\u5a03", + "354": "\u8a5b\u5492\u5a03\u5a03", + "355": "\u591c\u9ab7\u9acf", + "356": "\u591c\u5de8\u4eba", + "357": "\u71b1\u5e36\u9f8d", + "358": "\u98a8\u9234\u9234", + "359": "\u963f\u52c3\u68ad\u9b6f", + "360": "\u679c\u7136\u4ed4", + "361": "\u96ea\u7ae5\u5b50", + "362": "\u51b0\u9b3c\u8b77", + "363": "\u6d77\u8c79\u7403", + "364": "\u6d77\u9b54\u7345", + "365": "\u5e1d\u7259\u6d77\u7345", + "366": "\u73cd\u73e0\u8c9d", + "367": "\u7375\u6591\u9b5a", + "368": "\u6afb\u82b1\u9b5a", + "369": "\u53e4\u7a7a\u68d8\u9b5a", + "370": "\u611b\u5fc3\u9b5a", + "371": "\u5bf6\u8c9d\u9f8d", + "372": "\u7532\u6bbc\u9f8d", + "373": "\u66b4\u8811\u8788", + "374": "\u9435\u555e\u9234", + "375": "\u91d1\u5c6c\u602a", + "376": "\u5de8\u91d1\u602a", + "377": "\u96f7\u5409\u6d1b\u514b", + "378": "\u96f7\u5409\u827e\u65af", + "379": "\u96f7\u5409\u65af\u5947\u9b6f", + "380": "\u62c9\u5e1d\u4e9e\u65af", + "381": "\u62c9\u5e1d\u6b50\u65af", + "382": "\u84cb\u6b50\u5361", + "383": "\u56fa\u62c9\u591a", + "384": "\u70c8\u7a7a\u5750", + "385": "\u57fa\u62c9\u7948", + "386": "\u4ee3\u6b50\u5947\u5e0c\u65af", + "387": "\u8349\u82d7\u9f9c", + "388": "\u6a39\u6797\u9f9c", + "389": "\u571f\u53f0\u9f9c", + "390": "\u5c0f\u706b\u7130\u7334", + "391": "\u731b\u706b\u7334", + "392": "\u70c8\u7130\u7334", + "393": "\u6ce2\u52a0\u66fc", + "394": "\u6ce2\u7687\u5b50", + "395": "\u5e1d\u7687\u62ff\u6ce2", + "396": "\u59c6\u514b\u5152", + "397": "\u59c6\u514b\u9ce5", + "398": "\u59c6\u514b\u9df9", + "399": "\u5927\u7259\u72f8", + "400": "\u5927\u5c3e\u72f8", + "401": "\u5713\u6cd5\u5e2b", + "402": "\u97f3\u7bb1\u87c0", + "403": "\u5c0f\u8c93\u602a", + "404": "\u52d2\u514b\u8c93", + "405": "\u502b\u7434\u8c93", + "406": "\u542b\u7f9e\u82de", + "407": "\u7f85\u7d72\u96f7\u6735", + "408": "\u982d\u84cb\u9f8d", + "409": "\u6230\u69cc\u9f8d", + "410": "\u76fe\u7532\u9f8d", + "411": "\u8b77\u57ce\u9f8d", + "412": "\u7d50\u8349\u5152", + "413": "\u7d50\u8349\u8cb4\u5a66", + "414": "\u7d33\u58eb\u86fe", + "415": "\u4e09\u871c\u8702", + "416": "\u8702\u540e", + "417": "\u5e15\u5947\u5229\u8332", + "418": "\u6cf3\u6c23\u9f2c", + "419": "\u6d6e\u6f5b\u9f2c", + "420": "\u6afb\u82b1\u5bf6", + "421": "\u6afb\u82b1\u5152", + "422": "\u7121\u6bbc\u6d77\u725b", + "423": "\u6d77\u725b\u7378", + "424": "\u96d9\u5c3e\u602a\u624b", + "425": "\u98c4\u98c4\u7403", + "426": "\u9644\u548c\u6c23\u7403", + "427": "\u6372\u6372\u8033", + "428": "\u9577\u8033\u5154", + "429": "\u5922\u5996\u9b54", + "430": "\u70cf\u9d09\u982d\u982d", + "431": "\u9b45\u529b\u55b5", + "432": "\u6771\u65bd\u55b5", + "433": "\u9234\u5679\u97ff", + "434": "\u81ed\u9f2c\u5657", + "435": "\u5766\u514b\u81ed\u9f2c", + "436": "\u9285\u93e1\u602a", + "437": "\u9752\u9285\u9418", + "438": "\u611b\u54ed\u6a39", + "439": "\u9b54\u5c3c\u5c3c", + "440": "\u597d\u904b\u86cb", + "441": "\u8052\u566a\u9ce5", + "442": "\u82b1\u5ca9\u602a", + "443": "\u5713\u9678\u9bca", + "444": "\u5c16\u7259\u9678\u9bca", + "445": "\u70c8\u54ac\u9678\u9bca", + "446": "\u5c0f\u5361\u6bd4\u7378", + "447": "\u5229\u6b50\u8def", + "448": "\u8def\u5361\u5229\u5965", + "449": "\u602a\u6cb3\u99ac", + "450": "\u6cb3\u99ac\u7378", + "451": "\u7d2b\u5929\u880d", + "452": "\u9f8d\u738b\u880d", + "453": "\u4e0d\u826f\u86d9", + "454": "\u6bd2\u9ab7\u86d9", + "455": "\u5c16\u7259\u7c60", + "456": "\u87a2\u5149\u9b5a", + "457": "\u9713\u8679\u9b5a", + "458": "\u5c0f\u7403\u98db\u9b5a", + "459": "\u96ea\u7b20\u602a", + "460": "\u66b4\u96ea\u738b", + "461": "\u746a\u72c3\u62c9", + "462": "\u81ea\u7206\u78c1\u602a", + "463": "\u5927\u820c\u8214", + "464": "\u8d85\u9435\u66b4\u9f8d", + "465": "\u5de8\u8513\u85e4", + "466": "\u96fb\u64ca\u9b54\u7378", + "467": "\u9d28\u5634\u7130\u9f8d", + "468": "\u6ce2\u514b\u57fa\u65af", + "469": "\u6885\u5361\u967d\u746a", + "470": "\u8449\u4f0a\u8c9d", + "471": "\u51b0\u4f0a\u8c9d", + "472": "\u5929\u880d\u738b", + "473": "\u8c61\u7259\u8c6c", + "474": "\u7acb\u65b9\u7378Z", + "475": "\u827e\u8def\u96f7\u6735", + "476": "\u5927\u671d\u5317\u9f3b", + "477": "\u591c\u9ed1\u9b54\u4eba", + "478": "\u96ea\u5996\u5973", + "479": "\u6d1b\u6258\u59c6", + "480": "\u7531\u514b\u5e0c", + "481": "\u827e\u59c6\u5229\u591a", + "482": "\u4e9e\u514b\u8afe\u59c6", + "483": "\u5e1d\u7259\u76e7\u5361", + "484": "\u5e15\u8def\u5947\u72bd", + "485": "\u5e2d\u591a\u85cd\u6069", + "486": "\u96f7\u5409\u5947\u5361\u65af", + "487": "\u9a0e\u62c9\u5e1d\u7d0d", + "488": "\u514b\u96f7\u8272\u5229\u4e9e", + "489": "\u970f\u6b50\u7d0d", + "490": "\u746a\u7d0d\u970f", + "491": "\u9054\u514b\u840a\u4f0a", + "492": "\u6f54\u54aa", + "493": "\u963f\u723e\u5b99\u65af", + "494": "\u6bd4\u514b\u63d0\u5c3c", + "495": "\u85e4\u85e4\u86c7", + "496": "\u9752\u85e4\u86c7", + "497": "\u541b\u4e3b\u86c7", + "498": "\u6696\u6696\u8c6c", + "499": "\u7092\u7092\u8c6c", + "500": "\u708e\u6b66\u738b", + "501": "\u6c34\u6c34\u737a", + "502": "\u96d9\u5203\u4e38", + "503": "\u5927\u528d\u9b3c", + "504": "\u63a2\u63a2\u9f20", + "505": "\u6b65\u54e8\u9f20", + "506": "\u5c0f\u7d04\u514b", + "507": "\u54c8\u7d04\u514b", + "508": "\u9577\u6bdb\u72d7", + "509": "\u6252\u624b\u8c93", + "510": "\u9177\u8c79", + "511": "\u82b1\u6930\u7334", + "512": "\u82b1\u6930\u733f", + "513": "\u7206\u9999\u7334", + "514": "\u7206\u9999\u733f", + "515": "\u51b7\u6c34\u7334", + "516": "\u51b7\u6c34\u733f", + "517": "\u98df\u5922\u5922", + "518": "\u5922\u5922\u8755", + "519": "\u8c46\u8c46\u9d3f", + "520": "\u6ce2\u6ce2\u9d3f", + "521": "\u8f5f\u9686\u96c9\u96de", + "522": "\u6591\u6591\u99ac", + "523": "\u96f7\u96fb\u6591\u99ac", + "524": "\u77f3\u4e38\u5b50", + "525": "\u5730\u5e54\u5ca9", + "526": "\u9f90\u5ca9\u602a", + "527": "\u6efe\u6efe\u8759\u8760", + "528": "\u5fc3\u8759\u8760", + "529": "\u87ba\u91d8\u5730\u9f20", + "530": "\u9f8d\u982d\u5730\u9f20", + "531": "\u5dee\u4e0d\u591a\u5a03\u5a03", + "532": "\u642c\u904b\u5c0f\u5320", + "533": "\u9435\u9aa8\u571f\u4eba", + "534": "\u4fee\u7e55\u8001\u982d", + "535": "\u5713\u874c\u86aa", + "536": "\u85cd\u87fe\u870d", + "537": "\u87fe\u870d\u738b", + "538": "\u6295\u5c04\u9b3c", + "539": "\u6253\u64ca\u9b3c", + "540": "\u87f2\u5bf6\u5305", + "541": "\u5bf6\u5305\u7e6d", + "542": "\u4fdd\u6bcd\u87f2", + "543": "\u767e\u8db3\u8708\u86a3", + "544": "\u8eca\u8f2a\u6bec", + "545": "\u8708\u86a3\u738b", + "546": "\u6728\u68c9\u7403", + "547": "\u98a8\u5996\u7cbe", + "548": "\u767e\u5408\u6839\u5a03\u5a03", + "549": "\u88d9\u5152\u5c0f\u59d0", + "550": "\u52c7\u58eb\u9c78\u9b5a", + "551": "\u9ed1\u773c\u9c77", + "552": "\u6df7\u6df7\u9c77", + "553": "\u6d41\u6c13\u9c77", + "554": "\u706b\u7d05\u4e0d\u5012\u7fc1", + "555": "\u9054\u6469\u72d2\u72d2", + "556": "\u8857\u982d\u6c99\u9234", + "557": "\u77f3\u5c45\u87f9", + "558": "\u5ca9\u6bbf\u5c45\u87f9", + "559": "\u6ed1\u982d\u5c0f\u5b50", + "560": "\u982d\u5dfe\u6df7\u6df7", + "561": "\u8c61\u5fb5\u9ce5", + "562": "\u54ed\u54ed\u9762\u5177", + "563": "\u6b7b\u795e\u68fa", + "564": "\u539f\u84cb\u6d77\u9f9c", + "565": "\u808b\u9aa8\u6d77\u9f9c", + "566": "\u59cb\u7956\u5c0f\u9ce5", + "567": "\u59cb\u7956\u5927\u9ce5", + "568": "\u7834\u7834\u888b", + "569": "\u7070\u5875\u5c71", + "570": "\u7d22\u7f85\u4e9e", + "571": "\u7d22\u7f85\u4e9e\u514b", + "572": "\u6ce1\u6cab\u6817\u9f20", + "573": "\u5947\u8afe\u6817\u9f20", + "574": "\u54e5\u5fb7\u5bf6\u5bf6", + "575": "\u54e5\u5fb7\u5c0f\u7ae5", + "576": "\u54e5\u5fb7\u5c0f\u59d0", + "577": "\u55ae\u5375\u7d30\u80de\u7403", + "578": "\u96d9\u5375\u7d30\u80de\u7403", + "579": "\u4eba\u9020\u7d30\u80de\u5375", + "580": "\u9d28\u5bf6\u5bf6", + "581": "\u9996\u5e2d\u5929\u9d5d", + "582": "\u8ff7\u4f60\u51b0", + "583": "\u591a\u591a\u51b0", + "584": "\u96d9\u500d\u591a\u591a\u51b0", + "585": "\u56db\u5b63\u9e7f", + "586": "\u82bd\u5439\u9e7f", + "587": "\u5c0e\u96fb\u98db\u9f20", + "588": "\u84cb\u84cb\u87f2", + "589": "\u9a0e\u58eb\u8778\u725b", + "590": "\u7cbe\u9748\u7403\u83c7", + "591": "\u66b4\u9732\u83c7", + "592": "\u8f15\u98c4\u98c4", + "593": "\u80d6\u561f\u561f", + "594": "\u4fdd\u6bcd\u66fc\u6ce2", + "595": "\u96fb\u96fb\u87f2", + "596": "\u96fb\u8718\u86db", + "597": "\u7a2e\u5b50\u9435\u7403", + "598": "\u5805\u679c\u555e\u9234", + "599": "\u9f52\u8f2a\u5152", + "600": "\u9f52\u8f2a\u7d44", + "601": "\u9f52\u8f2a\u602a", + "602": "\u9ebb\u9ebb\u5c0f\u9b5a", + "603": "\u9ebb\u9ebb\u9c3b", + "604": "\u9ebb\u9ebb\u9c3b\u9b5a\u738b", + "605": "\u5c0f\u7070\u602a", + "606": "\u5927\u5b87\u602a", + "607": "\u71ed\u5149\u9748", + "608": "\u71c8\u706b\u5e7d\u9748", + "609": "\u6c34\u6676\u71c8\u706b\u9748", + "610": "\u7259\u7259", + "611": "\u65a7\u7259\u9f8d", + "612": "\u96d9\u65a7\u6230\u9f8d", + "613": "\u5674\u568f\u718a", + "614": "\u51cd\u539f\u718a", + "615": "\u5e7e\u4f55\u96ea\u82b1", + "616": "\u5c0f\u5634\u8778", + "617": "\u654f\u6377\u87f2", + "618": "\u6ce5\u5df4\u9b5a", + "619": "\u529f\u592b\u9f2c", + "620": "\u5e2b\u7236\u9f2c", + "621": "\u8d64\u9762\u9f8d", + "622": "\u6ce5\u5076\u5c0f\u4eba", + "623": "\u6ce5\u5076\u5de8\u4eba", + "624": "\u99d2\u5200\u5c0f\u5175", + "625": "\u5288\u65ac\u53f8\u4ee4", + "626": "\u7206\u7206\u982d\u6c34\u725b", + "627": "\u6bdb\u982d\u5c0f\u9df9", + "628": "\u52c7\u58eb\u9df9", + "629": "\u79bf\u9df9\u5c0f\u5b50", + "630": "\u79bf\u9df9\u5a1c", + "631": "\u98df\u87fb\u7210", + "632": "\u9435\u87fb", + "633": "\u55ae\u9996\u9f8d", + "634": "\u96d9\u982d\u9f8d", + "635": "\u4e09\u982d\u9f8d", + "636": "\u71c3\u71d2\u87f2", + "637": "\u706b\u795e\u87f2", + "638": "\u52fe\u5e15\u8def\u7fc1", + "639": "\u4ee3\u62c9\u57fa\u7fc1", + "640": "\u7562\u529b\u5409\u7fc1", + "641": "\u9f8d\u6372\u96f2", + "642": "\u96f7\u96fb\u96f2", + "643": "\u96f7\u5e0c\u62c9\u59c6", + "644": "\u6377\u514b\u7f85\u59c6", + "645": "\u571f\u5730\u96f2", + "646": "\u914b\u96f7\u59c6", + "647": "\u51f1\u8def\u8fea\u6b50", + "648": "\u7f8e\u6d1b\u8036\u5854", + "649": "\u84cb\u8afe\u8cfd\u514b\u7279", + "650": "\u54c8\u529b\u99ac\u9f8d", + "651": "\u80a5\u4ed4\u54c8\u529b", + "652": "\u5e03\u91cc\u5361\u9686", + "653": "\u706b\u72d0\u72f8", + "654": "\u9577\u5c3e\u706b\u72d0", + "655": "\u5996\u706b\u7d05\u72d0", + "656": "\u5471\u5471\u6ce1\u86d9", + "657": "\u5471\u982d\u86d9", + "658": "\u7532\u8cc0\u5fcd\u86d9", + "659": "\u6316\u6316\u5154", + "660": "\u6509\u5730\u5154", + "661": "\u5c0f\u7bad\u96c0", + "662": "\u706b\u7bad\u96c0", + "663": "\u70c8\u7bad\u9df9", + "664": "\u7c89\u86f9", + "665": "\u7c89\u8776\u86f9", + "666": "\u78a7\u7c89\u8776", + "667": "\u5c0f\u7345\u7345", + "668": "\u706b\u708e\u7345", + "669": "\u82b1\u84d3\u84d3", + "670": "\u82b1\u8449\u8482", + "671": "\u82b1\u6f54\u592b\u4eba", + "672": "\u54a9\u54a9\u7f8a", + "673": "\u6307\u8def\u7f8a", + "674": "\u9811\u76ae\u718a\u8c93", + "675": "\u6d41\u6c13\u718a\u8c93", + "676": "\u591a\u9e97\u7c73\u4e9e", + "677": "\u5999\u55b5", + "678": "\u8d85\u80fd\u5999\u55b5", + "679": "\u7368\u528d\u9798", + "680": "\u96d9\u528d\u9798", + "681": "\u5805\u76fe\u528d\u602a", + "682": "\u7c89\u9999\u9999", + "683": "\u82b3\u9999\u7cbe", + "684": "\u7dbf\u7dbf\u6ce1\u8299", + "685": "\u80d6\u751c\u59ae", + "686": "\u6beb\u5587\u9b77", + "687": "\u70cf\u8cca\u738b", + "688": "\u9f9c\u8173\u8173", + "689": "\u9f9c\u8db3\u5de8\u93a7", + "690": "\u5783\u5783\u85fb", + "691": "\u6bd2\u62c9\u871c\u59ae", + "692": "\u9435\u81c2\u69cd\u8766", + "693": "\u92fc\u7832\u81c2\u8766", + "694": "\u767c\u96fb\u8725", + "695": "\u96fb\u5098\u67e5\u7279", + "696": "\u66b4\u9f8d\u4ed4", + "697": "\u602a\u984e\u9f8d", + "698": "\u51b0\u96ea\u9f8d", + "699": "\u51b0\u96ea\u5de8\u9f8d", + "700": "\u4ed9\u5b50\u4f0a\u8c9d", + "701": "\u6230\u9b25\u98db\u9ce5", + "702": "\u549a\u549a\u9f20", + "703": "\u5c0f\u788e\u947d", + "704": "\u9ecf\u9ecf\u5bf6", + "705": "\u9ecf\u7f8e\u5152", + "706": "\u9ecf\u7f8e\u9f8d", + "707": "\u9396\u5708\u5152", + "708": "\u5c0f\u6728\u9748", + "709": "\u673d\u6728\u5996", + "710": "\u5357\u74dc\u7cbe", + "711": "\u5357\u74dc\u602a\u4eba", + "712": "\u51b0\u5bf6", + "713": "\u51b0\u5ca9\u602a", + "714": "\u55e1\u8760", + "715": "\u97f3\u6ce2\u98db\u9f8d", + "716": "\u54f2\u723e\u5c3c\u4e9e\u65af", + "717": "\u4f0a\u79d8\u9b6f\u5854\u8def", + "718": "\u57fa\u683c\u723e\u5fb7", + "719": "\u8482\u5b89\u5e0c", + "720": "\u80e1\u5e15", "721": "\u6ce2\u723e\u51f1\u5c3c\u6069" - }, + }, + "sizes": { + "001": "\u8ff7\u4f60", + "002": "\u5c0f", + "003": "\u6b63\u5e38", + "004": "\u5927", + "005": "\u5de8\u5927" + }, "teams": { - "0": "Neutral (\u4e2d\u7acb)", - "1": "Mystic (\u53e1\u667a)", - "2": "Valor (\u6b66\u52c7)", - "3": "Instinct (\u9748\u7280)" - }, + "000": "Neutral (\u4e2d\u7acb)", + "001": "Mystic (\u53e1\u667a)", + "002": "Valor (\u6b66\u52c7)", + "003": "Instinct (\u9748\u7280)" + }, + "types": { + "001": "\u4e00\u822c", + "002": "\u683c\u9b25", + "003": "\u98db\u884c", + "004": "\u6bd2", + "005": "\u5730\u9762", + "006": "\u5ca9\u77f3", + "007": "\u87f2", + "008": "\u5e7d\u9748", + "009": "\u92fc", + "010": "\u706b", + "011": "\u6c34", + "012": "\u8349", + "013": "\u96fb", + "014": "\u8d85\u80fd\u529b", + "015": "\u51b0", + "016": "\u9f8d", + "017": "\u5996\u7cbe", + "018": "\u60e1" + }, "weather": { - "0": "\u6ca1\u6709", - "1": "\u6674\u5929", - "2": "\u96e8\u5929", - "3": "\u591a\u96f2", - "4": "\u9670\u5929", - "5": "\u5f37\u98a8", - "6": "\u4e0b\u96ea", - "7": "\u8d77\u9727" - }, - "misc": { - "boosted": "\u63D0\u632F" + "000": "\u6ca1\u6709", + "001": "\u6674\u5929", + "002": "\u96e8\u5929", + "003": "\u591a\u96f2", + "004": "\u9670\u5929", + "005": "\u5f37\u98a8", + "006": "\u4e0b\u96ea", + "007": "\u8d77\u9727" } -} +} \ No newline at end of file From abd244cc441b55ba64242854d11917f4eae8d44e Mon Sep 17 00:00:00 2001 From: Marcus Ponting Date: Tue, 27 Feb 2018 14:27:20 +0000 Subject: [PATCH 41/79] remove merge duplication --- PokeAlarm/Filters/EggFilter.py | 20 -------------------- PokeAlarm/Filters/RaidFilter.py | 12 ------------ 2 files changed, 32 deletions(-) diff --git a/PokeAlarm/Filters/EggFilter.py b/PokeAlarm/Filters/EggFilter.py index edc2811a6..d10f149bc 100644 --- a/PokeAlarm/Filters/EggFilter.py +++ b/PokeAlarm/Filters/EggFilter.py @@ -63,18 +63,6 @@ def __init__(self, name, data): limit=BaseFilter.parse_as_set( GymUtils.create_regex, 'park_contains', data)) - # Gym sponsor - self.gym_sponsor_index_contains = self.evaluate_attribute( - event_attribute='gym_sponsor', eval_func=GymUtils.match_regex_dict, - limit=BaseFilter.parse_as_set( - re.compile, 'gym_sponsor_index_contains', data)) - - # Gym park - self.gym_park_contains = self.evaluate_attribute( # f.gp matches e.gp - event_attribute='gym_park', eval_func=GymUtils.match_regex_dict, - limit=BaseFilter.parse_as_set( - re.compile, 'gym_park_contains', data)) - # Team Info self.old_team = self.evaluate_attribute( # f.ctis contains m.cti event_attribute='current_team_id', eval_func=operator.contains, @@ -128,14 +116,6 @@ def to_dict(self): if self.park_contains is not None: settings['park_contains'] = self.park_contains - # Gym Sponsor - if self.gym_sponsor_index_contains is not None: - settings['gym_sponsor_matches'] = self.gym_sponsor_index_contains - - # Gym Park - if self.gym_park_contains is not None: - settings['gym_park_matches'] = self.gym_park_contains - # Geofences if self.geofences is not None: settings['geofences'] = self.geofences diff --git a/PokeAlarm/Filters/RaidFilter.py b/PokeAlarm/Filters/RaidFilter.py index dff6dd3f7..6ae7c0e04 100644 --- a/PokeAlarm/Filters/RaidFilter.py +++ b/PokeAlarm/Filters/RaidFilter.py @@ -90,18 +90,6 @@ def __init__(self, name, data): limit=BaseFilter.parse_as_set( GymUtils.create_regex, 'park_contains', data)) - # Gym sponsor - self.gym_sponsor_index_contains = self.evaluate_attribute( - event_attribute='gym_sponsor', eval_func=GymUtils.match_regex_dict, - limit=BaseFilter.parse_as_set( - re.compile, 'gym_sponsor_index_contains', data)) - - # Gym park - self.gym_park_contains = self.evaluate_attribute( - event_attribute='gym_park', eval_func=GymUtils.match_regex_dict, - limit=BaseFilter.parse_as_set( - re.compile, 'gym_park_contains', data)) - # Team Info self.old_team = self.evaluate_attribute( # f.ctis contains m.cti event_attribute='current_team_id', eval_func=operator.contains, From 2ab93d394d5d6d0a40fb40b8a026b22092a5edae Mon Sep 17 00:00:00 2001 From: kvangent Date: Tue, 27 Feb 2018 17:17:15 -0800 Subject: [PATCH 42/79] Fixed bug with filtering with unknown sponsored id. --- PokeAlarm/Events/EggEvent.py | 5 +++-- PokeAlarm/Events/RaidEvent.py | 4 +++- PokeAlarm/Filters/EggFilter.py | 2 +- PokeAlarm/Filters/RaidFilter.py | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/PokeAlarm/Events/EggEvent.py b/PokeAlarm/Events/EggEvent.py index fa0b59a61..537b47203 100644 --- a/PokeAlarm/Events/EggEvent.py +++ b/PokeAlarm/Events/EggEvent.py @@ -46,7 +46,6 @@ def __init__(self, data): str, data.get('url'), Unknown.REGULAR) self.sponsor_id = check_for_none( int, data.get('sponsor'), Unknown.TINY) - self.is_sponsor = True if self.sponsor_id > 0 else False self.park = check_for_none( str, data.get('park'), Unknown.REGULAR) @@ -101,7 +100,9 @@ def generate_dts(self, locale, timezone, units): 'gym_description': self.gym_description, 'gym_image': self.gym_image, 'sponsor_id': self.sponsor_id, - 'is_sponsor': self.is_sponsor, + 'is_sponsor': + self.sponsor_id > 0 + if Unknown.is_not(self.sponsor_id) else Unknown.REGULAR, 'park': self.park, 'team_id': self.current_team_id, 'team_name': locale.get_team_name(self.current_team_id), diff --git a/PokeAlarm/Events/RaidEvent.py b/PokeAlarm/Events/RaidEvent.py index 1615dd56a..816be3730 100644 --- a/PokeAlarm/Events/RaidEvent.py +++ b/PokeAlarm/Events/RaidEvent.py @@ -214,7 +214,9 @@ def generate_dts(self, locale, timezone, units): 'gym_description': self.gym_description, 'gym_image': self.gym_image, 'sponsor_id': self.sponsor_id, - 'is_sponsor': self.is_sponsor, + 'is_sponsor': + self.sponsor_id > 0 if Unknown.is_not(self.sponsor_id) + else Unknown.REGULAR, 'park': self.park, 'team_id': self.current_team_id, 'team_name': locale.get_team_name(self.current_team_id), diff --git a/PokeAlarm/Filters/EggFilter.py b/PokeAlarm/Filters/EggFilter.py index 58cb1d772..545f7d8ea 100644 --- a/PokeAlarm/Filters/EggFilter.py +++ b/PokeAlarm/Filters/EggFilter.py @@ -53,7 +53,7 @@ def __init__(self, name, data): # Gym sponsor self.is_sponsor = self.evaluate_attribute( # f.gym_is_sponsor True - event_attribute='is_sponsor', eval_func=operator.eq, + event_attribute='sponsor_id', eval_func=operator.eq, limit=BaseFilter.parse_as_type(bool, 'is_sponsor', data)) # Gym park diff --git a/PokeAlarm/Filters/RaidFilter.py b/PokeAlarm/Filters/RaidFilter.py index 997750fdd..a0d9b1e88 100644 --- a/PokeAlarm/Filters/RaidFilter.py +++ b/PokeAlarm/Filters/RaidFilter.py @@ -80,7 +80,7 @@ def __init__(self, name, data): # Gym sponsor self.is_sponsor = self.evaluate_attribute( # f.is_sponsor True - event_attribute='is_sponsor', eval_func=operator.eq, + event_attribute='sponsor_id', eval_func=operator.eq, limit=BaseFilter.parse_as_type(bool, 'is_sponsor', data)) # Gym park From e6378358876530a44efc49cb1d360cdb68b8b027 Mon Sep 17 00:00:00 2001 From: kvangent Date: Tue, 27 Feb 2018 18:11:07 -0800 Subject: [PATCH 43/79] Fixed timedelta bug when hitting GMaps limit. --- PokeAlarm/LocationServices/GMaps.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/PokeAlarm/LocationServices/GMaps.py b/PokeAlarm/LocationServices/GMaps.py index 3559a4fee..928fe712c 100644 --- a/PokeAlarm/LocationServices/GMaps.py +++ b/PokeAlarm/LocationServices/GMaps.py @@ -1,6 +1,6 @@ # Standard Library Imports import collections -import datetime +from datetime import datetime, timedelta import logging import time import json @@ -24,7 +24,7 @@ class GMaps(object): # Maximum number of requests per second _queries_per_second = 50 # How often to warn about going over query limit - _query_warning_window = datetime.timedelta(minutes=5) + _warning_window = timedelta(minutes=1) def __init__(self, api_key): self._key = api_key @@ -35,7 +35,7 @@ def __init__(self, api_key): # Sliding window for rate limiting self._window = collections.deque(maxlen=self._queries_per_second) - self._time_limit = time.time() + self._time_limit = datetime.utcnow() # Memoization dicts self._geocode_hist = {} @@ -107,8 +107,8 @@ def _make_request(self, service, params=None): if body['status'] == "OK" or body['status'] == "ZERO_RESULTS": return body elif body['status'] == "OVER_QUERY_LIMIT": - self._time_limit = time.time() + datetime.timedelta(minutes=10) - raise UserWarning(u'API Limit reached.') + # self._time_limit = datetime.utcnow() + _warning_window + raise UserWarning(u'API Quota exceeded.') else: raise ValueError(u'Unexpected response status:\n {}'.format(body)) From 7d79743837b4e6e3b61fcde5db0406d1c7b2e0a0 Mon Sep 17 00:00:00 2001 From: kvangent Date: Tue, 27 Feb 2018 20:53:31 -0800 Subject: [PATCH 44/79] Update Wiki to new outline (#619) --- docs/alarms/discord.md | 216 --------- .../Geofences.md} | 9 +- .../managers.md => configuration/Managers.md} | 68 +-- docs/configuration/Rules-Overview.md | 96 ++++ .../Server-Settings.md} | 54 ++- docs/configuration/alarms/Discord.md | 239 ++++++++++ .../alarms/Facebook-Pages.md} | 79 ++-- .../alarms/Pushbullet.md} | 71 +-- .../alarms/Slack.md} | 99 ++-- .../alarms/Telegram.md} | 125 +++--- .../alarms/Twilio.md} | 63 +-- .../alarms/Twitter.md} | 79 ++-- docs/configuration/alarms/index.rst | 159 +++++++ docs/configuration/events/Egg-DTS.md | 49 ++ .../events/Gym-DTS.md} | 8 +- .../events/Raid-DTS.md} | 25 +- .../events/Stop-DTS.md} | 6 +- docs/configuration/events/index.rst | 81 ++++ docs/configuration/events/monster-events.rst | 215 +++++++++ .../filters/Egg-Filters.md} | 13 +- .../filters/Gym-Filters.md} | 13 +- .../filters/Monster-Filters.md} | 14 +- .../filters/Raid-Filters.md} | 14 +- .../filters/Stop-Filters.md} | 13 +- docs/configuration/filters/index.rst | 204 +++++++++ docs/contents/installation.md | 70 --- docs/dts/dynamic-text-substitution.md | 105 ----- docs/dts/egg-dts.md | 45 -- docs/dts/monster-dts.md | 73 --- docs/filters/filters-overview.md | 261 ----------- .../faq.md => getting-started/FAQ.md} | 17 +- docs/getting-started/installation.rst | 90 ++++ .../Getting-Started-Guide.md} | 240 +++++----- docs/images/01-blank-dashboard.png | Bin 20457 -> 0 bytes docs/images/02-create-project.png | Bin 24978 -> 0 bytes docs/images/03-new-project-name.png | Bin 42656 -> 0 bytes docs/images/04_project_created.png | Bin 18871 -> 0 bytes docs/images/05_library.png | Bin 53813 -> 0 bytes docs/images/06_enable_geocoding_api.png | Bin 45192 -> 0 bytes docs/images/07_enabled_geocoding_api.png | Bin 39988 -> 0 bytes ...8_dashboard_with_geocoding_api_enabled.png | Bin 40319 -> 0 bytes ...coding_distance_staticmaps_api_enabled.png | Bin 46418 -> 0 bytes docs/images/10_credentials.png | Bin 34221 -> 0 bytes docs/images/11_credentials2.png | Bin 48190 -> 0 bytes docs/images/12_select_browser_key.png | Bin 43276 -> 0 bytes docs/images/13_key_name.png | Bin 37464 -> 0 bytes docs/images/14_here_is_your_key.png | Bin 34652 -> 0 bytes docs/images/15_find_your_key.png | Bin 37938 -> 0 bytes docs/images/fb-example.png | Bin 23182 -> 0 bytes docs/images/geofence_central_park_640x640.png | Bin 94235 -> 0 bytes docs/images/geofence_central_park_bounded.png | Bin 88438 -> 0 bytes docs/images/geofence_coronado.png | Bin 57880 -> 0 bytes docs/images/{PokeAlarm.png => logo.png} | Bin docs/images/minimap.png | Bin 4694 -> 0 bytes docs/images/slack_demo.png | Bin 68076 -> 0 bytes docs/images/staticmaptest.png | Bin 49428 -> 0 bytes docs/images/telegram.png | Bin 47678 -> 0 bytes docs/images/v3_overview.png | Bin 41004 -> 0 bytes docs/index.rst | 94 ++-- .../Object-Caching.md} | 39 +- .../Patch-Notes.md} | 188 +++++++- .../Webhook-Standard.md} | 14 +- docs/other/google-maps-api-key.md | 191 -------- docs/other/v3-guide.md | 422 ------------------ docs/other/v3.2-guide.md | 145 ------ docs/settings/alarms.md | 236 ---------- 66 files changed, 1901 insertions(+), 2341 deletions(-) delete mode 100644 docs/alarms/discord.md rename docs/{settings/geofences.md => configuration/Geofences.md} (97%) rename docs/{settings/managers.md => configuration/Managers.md} (53%) create mode 100644 docs/configuration/Rules-Overview.md rename docs/{settings/server-settings.md => configuration/Server-Settings.md} (79%) create mode 100644 docs/configuration/alarms/Discord.md rename docs/{alarms/facebook-pages.md => configuration/alarms/Facebook-Pages.md} (86%) rename docs/{alarms/pushbullet.md => configuration/alarms/Pushbullet.md} (62%) rename docs/{alarms/slack.md => configuration/alarms/Slack.md} (72%) rename docs/{alarms/telegram.md => configuration/alarms/Telegram.md} (50%) rename docs/{alarms/twilio.md => configuration/alarms/Twilio.md} (80%) rename docs/{alarms/twitter.md => configuration/alarms/Twitter.md} (66%) create mode 100644 docs/configuration/alarms/index.rst create mode 100644 docs/configuration/events/Egg-DTS.md rename docs/{dts/gym-dts.md => configuration/events/Gym-DTS.md} (91%) rename docs/{dts/raid-dts.md => configuration/events/Raid-DTS.md} (67%) rename docs/{dts/stop-dts.md => configuration/events/Stop-DTS.md} (91%) create mode 100644 docs/configuration/events/index.rst create mode 100644 docs/configuration/events/monster-events.rst rename docs/{filters/egg-filters.md => configuration/filters/Egg-Filters.md} (84%) rename docs/{filters/gym-filters.md => configuration/filters/Gym-Filters.md} (85%) rename docs/{filters/monster-filters.md => configuration/filters/Monster-Filters.md} (89%) rename docs/{filters/raid-filters.md => configuration/filters/Raid-Filters.md} (84%) rename docs/{filters/stop-filters.md => configuration/filters/Stop-Filters.md} (81%) create mode 100644 docs/configuration/filters/index.rst delete mode 100644 docs/contents/installation.md delete mode 100644 docs/dts/dynamic-text-substitution.md delete mode 100644 docs/dts/egg-dts.md delete mode 100644 docs/dts/monster-dts.md delete mode 100644 docs/filters/filters-overview.md rename docs/{contents/faq.md => getting-started/FAQ.md} (95%) create mode 100644 docs/getting-started/installation.rst rename docs/{contents/started-guide.md => guides/Getting-Started-Guide.md} (72%) delete mode 100755 docs/images/01-blank-dashboard.png delete mode 100755 docs/images/02-create-project.png delete mode 100755 docs/images/03-new-project-name.png delete mode 100755 docs/images/04_project_created.png delete mode 100755 docs/images/05_library.png delete mode 100755 docs/images/06_enable_geocoding_api.png delete mode 100755 docs/images/07_enabled_geocoding_api.png delete mode 100755 docs/images/08_dashboard_with_geocoding_api_enabled.png delete mode 100755 docs/images/09_dashboard_with_geocoding_distance_staticmaps_api_enabled.png delete mode 100755 docs/images/10_credentials.png delete mode 100755 docs/images/11_credentials2.png delete mode 100755 docs/images/12_select_browser_key.png delete mode 100755 docs/images/13_key_name.png delete mode 100755 docs/images/14_here_is_your_key.png delete mode 100755 docs/images/15_find_your_key.png delete mode 100755 docs/images/fb-example.png delete mode 100755 docs/images/geofence_central_park_640x640.png delete mode 100755 docs/images/geofence_central_park_bounded.png delete mode 100755 docs/images/geofence_coronado.png rename docs/images/{PokeAlarm.png => logo.png} (100%) mode change 100755 => 100644 delete mode 100755 docs/images/minimap.png delete mode 100755 docs/images/slack_demo.png delete mode 100755 docs/images/staticmaptest.png delete mode 100755 docs/images/telegram.png delete mode 100755 docs/images/v3_overview.png rename docs/{other/object-caching.md => miscellaneous/Object-Caching.md} (53%) rename docs/{documentation/patch-notes.md => miscellaneous/Patch-Notes.md} (57%) rename docs/{documentation/webhook-standard.md => miscellaneous/Webhook-Standard.md} (96%) delete mode 100644 docs/other/google-maps-api-key.md delete mode 100644 docs/other/v3-guide.md delete mode 100644 docs/other/v3.2-guide.md delete mode 100644 docs/settings/alarms.md diff --git a/docs/alarms/discord.md b/docs/alarms/discord.md deleted file mode 100644 index 6256d3076..000000000 --- a/docs/alarms/discord.md +++ /dev/null @@ -1,216 +0,0 @@ -# Discord - -## Overview - -* [Prerequisites](#prerequisites) -* [Introduction](#introduction) -* [Basic Config](#basic-config) - * [Required Parameters](#required-parameters) - * [Example: Basic Alarm Configuration using Required Parameters](#example-basic-alarm-configuration-using-required-parameters) -* [Advanced Config](#advanced-config) - * [Optional Parameters](#optional-parameters) - * [Example: Alarm Configuration Using Optional Parameters](#example-alarm-configuration-using-optional-parameters) - * [Mini Map Configuration](#mini-map-configuration) - * [Formatting alarms text](#formatting-alarms-text) -* [How to Enable Discord Webhooks](#how-to-enable-discord-webhooks) - -## Prerequisites - -This guide assumes - -1. You are familiar with [JSON formatting](https://www.w3schools.com/js/js_json_intro.asp) -2. You have read and understood the [Alarms](alarms) Wiki -3. You are comfortable with the layout of `alarms.json`. -4. You are using the latest version of PokeAlarm. - -Please familiarize yourself with all of the above before proceeding. - -## Introduction - -**Discord** is a free voice and text chat app designed specifically for -gaming. Available on Windows, Mac OS X, iOS and Android. It is also usable -from any Chrome, Firefox or Opera browser. - -PokeAlarm offers the following for Discord: - -* Custom username for posting -* High resolution icons for pokemon, gym, pokestop, egg or raid notifications -* Personalized notifications via [Dynamic Text Substitution](dynamic-text-substitution) - -## Basic Config - -### Required Parameters -The parameters below are required to enable the Discord alarm service: - -| Parameters | Description | -|----------------|-----------------------------------------| -| `type` | Must be `discord` | -| `active` | `True` for alarm to be active | -| `webhook_url`* | Your Webhook URL for a specific channel | - -**Note:** In PokeAlarm version 3.1, `webhook_url` replaced `api_key`. - -### Example: Basic Alarm Configuration using Required Parameters - -**Note:** The above below is to be inserted into the alarms section of -`alarms.json`. It does not represent the entire `alarms.json` file. - -```json -{ - "active":"True", - "type":"discord", - "webhook_url":"YOUR_WEBHOOK_URL" -} -``` - -## Advanced Config - -### Optional Parameters -In addition to the required parameters, several optional parameters are -available to personalize your notifications. Below is an example of these -optional parameters and how they are incorporated into a functional alarm layout. - -These optional parameters are entered at the same level as `"type":"discord"`. - -| Parameters | Description | -|--------------------|----------------------------------------------| -| `startup_message` | Confirmation post when PokeAlarm initialized | - -These optional parameters below are applicable to the `pokemon`, `pokestop`, -`gym`, `egg`, and `raid` sections of the JSON file. - -| Parameters | Description | Default | -|------------------|---------------------------------------------------|-----------------------------------------------| -| `webhook_url` | URL of specific channel name. Overrides `webhook_url` at Alarm level. Use to post only -| `disable_embed` | Disables the body to make one line notifications | `False` | -| `username` | Username the bot should post the message as | `` | -| `icon_url` | URL path to pokemon icon | | -| `avatar_url` | URL path to pokemon avatar | | -| `title` | Notification text to begin the message | `A wild has appeared!` | -| `url` | Link to be added to notification text | `` | -| `body` | Additional text to be added to the message | `Available until <24h_time> ().` | -| `content` | Text before the Discord embed | | - -*Note*: Nidorans will be `nidoranf` or `nidoranm`, Farfetch'd will be -`farfetchd`, and Mr. Mime will be `mrmime`. - -## Example: Alarm Configuration Using Optional Parameters - -**Note:** The code below is to be inserted into the alarms section of -`alarms.json`. It does not represent the entire `alarms.json` file. - -```json -{ - "active":"True", - "type":"discord", - "webhook_url":"YOUR_WEBHOOK_URL", - "startup_message":"False", - "pokemon":{ - "webhook_url":"YOUR_WEBHOOK_URL_FOR_POKEMON_CHANNEL", - "username":"", - "icon_url*":"/_.png", - "title":"A wild has appeared!", - "url":"", - "body":"Available until <24h_time> ()." - }, - "pokestop":{ - "webhook_url":"YOUR_WEBHOOK_URL_FOR_POKESTOP_CHANNEL", - "username":"Pokestop", - "icon_url*":"/ready.png", - "title":"Someone has placed a lure on a Pokestop!", - "url":"", - "body":"Lure will expire at <24h_time> ()." - }, - "gym":{ - "webhook_url":"YOUR_WEBHOOK_URL_FOR_GYM_CHANNEL", - "username":" Gym Alerts", - "icon_url*":"/.png", - "title":"A Team gym has fallen!", - "url":"", - "body":"It is now controlled by ." - }, - "egg":{ - "webhook_url":"DISCORD_WEBHOOK_URL_FOR_EGG_CHANNEL", - "username":"Egg", - "icon_url*":"/.png", - "avatar_url*":"/.png", - "title":"Raid is incoming!", - "url":"", - "body":"A level raid will hatch at <24h_hatch_time> ()." - }, - "raid":{ - "webhook_url":"DISCORD_WEBHOOK_URL_FOR_RAID_CHANNEL", - "username":"Raid", - "icon_url*":"/_000.png", - "avatar_url*":"/_000.png", - "title":"Level Raid is available against !", - "url":"", - "body":"The raid is available until <24h_raid_end> ()." - } -} -``` -**Note:** THESE LINES ARE USED TO OVERRIDE DEFAULT VALUES. IF YOU DO NOT -WISH TO USE CUSTOM IMAGES, DO NOT ADD THESE LINES TO YOUR ALARMS.JSON. - -### Mini Map Configuration -![](../images/minimap.png) - -You can enable a small Google Static Maps image after your post, showing the -location of the alarmed pokemon, gym, or pokestop. This is done by adding -the `map` parameter at the Alarm level (which will apply maps for any - notification), or individually to the `pokemon`, `pokestop`, `gym`, `egg`, - or `raid` sections of your alarm. - -Below is an example of enabling the mini map for pokemon. - -```json - "pokemon":{ - "webhook_url":"YOUR_WEBHOOK_URL_FOR_POKEMON_CHANNEL", - "username":"", - "title":"A wild has appeared!", - "url":"", - "body":"Available until <24h_time> ().", - "map":{ - "enabled":"true", - "width":"250", - "height":"125", - "maptype":"roadmap", - "zoom":"15" - } - }, -``` - -| Parameters | Description | Default | -|----------------|---------------------------------------------------|-----------------------------------------------| -| `enabled` | Turns the map on or off | `True` | -| `width` | Width of the map | `250` px | -| `height` | Height of the map | `150` px | -| `maptype` | Link to be added to notification text | `roadmap` | -| `zoom` | Specifies the zoom of the map | `15` | - -### Formatting alarms text - -Here is a basic guide to apply custom styles to alarm text: - -| Style | Example | -|------------------------------------|----------------------------------| -| `*italics*` | *italics* | -| `**bold**` | **bold** | -| `***bold italics***` | ***bold italics*** | -| `__underline__` | __underline__ | -| `__*underline italics*__` | __*underline italics*__ | -| `__**underline bold**__` | __**underline bold**__ | -| `__***underline bold italics***__` | __***underline bold italics***__ | -| `~~Strikethrough~~` | ~~Strikethrough~~ | - -You can see other options in the official Discord information about formatting text [here](https://support.discordapp.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline-). - -## How to enable Discord webhooks - -1. You must have the role permission 'Manage Webhooks', or be an administrator for the server. - -2. Go into channel settings, into the Webhooks tab. - -3. Click "Create Webhook", 'Save' - -4. The webhook URL listed is the key you need. diff --git a/docs/settings/geofences.md b/docs/configuration/Geofences.md similarity index 97% rename from docs/settings/geofences.md rename to docs/configuration/Geofences.md index cca3194e8..c70ef061c 100644 --- a/docs/settings/geofences.md +++ b/docs/configuration/Geofences.md @@ -1,7 +1,6 @@ # Geofences ## Overview - * [Introduction](#introduction) * [Instructions](#instructions) * [Example: 4 point geofence - Central Park, New York, NY](#example-4-point-geofence---central-park-new-york-ny) @@ -18,7 +17,7 @@ defines your polygon. **Note:** PokeAlarm will first check pokemon alert distance, *then* will check to see if the pokemon is located within your geofence. -See [Filters](monster-filters#parameters) on how to limit alerts +See [Filters](Monster-Filters#parameters) on how to limit alerts based on distance. ## Instructions @@ -55,7 +54,7 @@ file: `central-park-geofence.txt` 40.797343,-73.948385 ``` -![](../images/geofence_central_park_640x640.png) +![](images/geofence_central_park_640x640.png) In the image above, each numbered marker 1-4 represents the lat,lon coordinates found in central-park-geofence.txt, respectively. @@ -82,7 +81,7 @@ The visual of the geofenced area is below. The red marker in the image denotes a selected location, here, "The Pond, Central Park, NY". -![](../images/geofence_central_park_bounded.png) +![](images/geofence_central_park_bounded.png) PokeAlarm will then notify you of pokemon within the shaded area. @@ -137,7 +136,7 @@ And remember to set filters to apply geofence like this example: Below is the resulting geofence: -![](../images/geofence_coronado.png) +![](images/geofence_coronado.png) ## Example: Multiple Geofences in the same `geofences.txt` file diff --git a/docs/settings/managers.md b/docs/configuration/Managers.md similarity index 53% rename from docs/settings/managers.md rename to docs/configuration/Managers.md index 2da0d3ffd..055b33531 100644 --- a/docs/settings/managers.md +++ b/docs/configuration/Managers.md @@ -13,6 +13,7 @@ This guide will walk you through configuring server settings for PokeAlarm. * [Timezones](#timezones) ## Prerequisites + This guide assumes the following: 1. You have correctly [installed PokeAlarm](installation). @@ -21,41 +22,42 @@ This guide assumes the following: use or open any files with Notepad or TextEdit - they will break your files! ## Introduction + In PokeAlarm, a **Manager** is a grouping of different settings. Managers allow you to configure multiple combinations of filters, alarms, geofences, -and other settings behind single webserver +and other settings behind single webserver. -![Manager Example](../images/v3_overview.png) +![Manager Example](images/v3_overview.png) -Webhooks are received by the PokeAlarm server, which then passes a copy to -the manager. Each Manager determines (independently)if the alert passes one -of the set filters (and geofence if enabled). If it does, the Manager sends -the alert to the alarm defined in the Alarms file. +Webhooks are received by the PokeAlarm server, which then passes a copy to the +manager. Each Manager determines (independently)if the alert passes one of the +set filters (and geofence if enabled). If it does, the Manager sends the alert +to the alarm defined in the Alarms file. PokeAlarm runs each Manager in a separate process, allowing each Manager to operate in parallel and taking advantage of multiple cores. ## Multiple Managers - Managers can be configured using either the command line or the configuration - file. In order to run multiple managers, you must first set `manager_count` - equal to the number of mangers you want to run. Managers use the arguments of - a type in order. If only one argument (of a type) is provided, this argument - will be applied to all Managers. For example, the following command: - ``` - python start_pokealarm.py -m 3 -f common.json -f rares.json -f uncommon.json -a alarms.json - ``` - This command sets up three managers. The first uses the filter file - `common.json`, the second uses the `rares.json`, and the third uses the - `uncommon.json`. However, all three managers will use the same `alarms.json` - file to set up their alarms. - - This same configuration can be accomplished via the following in the - configuration file: - - ```ini -manager_count: 1 +Managers can be configured using either the command line or the configuration +file. In order to run multiple managers, you must first set `manager_count` +equal to the number of mangers you want to run. Managers use the arguments of +a type in order. If only one argument (of a type) is provided, this argument +will be applied to all Managers. For example, the following command: + +``` +python start_pokealarm.py -m 3 -f common.json -f rares.json -f uncommon.json -a alarms.json +``` + +This command sets up three managers. The first uses the filter file +`common.json`, the second uses the `rares.json`, and the third uses the +`uncommon.json`. However, all three managers will use the same `alarms.json` +file to set up their alarms. + +This same configuration can be accomplished via the following in the configuration file: +```ini +manager_count: 1 filters: [ common.json, rares.json, uncommon.json ] alarms: alarms.json ``` @@ -64,28 +66,28 @@ alarms: alarms.json ### Manager Names -Manager names are currently useful for logging purposes only. Changing the -name will change the name of the logger used in PA's output. Manager names -are configured the same as other parameters: +Manager names are currently useful for logging purposes only. Changing the name +will change the name of the logger used in PA's output. Manager names are +configured the same as other parameters: ```ini manager_name: [ manager_0, manager_1, manager_2 ] ``` -If no manager name is defined, PA will name that manager automatically based -on it's order. +If no manager name is defined, PA will name that manager automatically based on +it's order. ### Geofences Geofences are a useful tool and can be bound in a mixture of combinations to -different Managers. Configuring geofence files is similar to other options: +different managers. Configuring geofence files is similar to other options: ```ini geofence: [ city1.json, none, city2.json ] ``` -As you can see, you can mix managers with geofences and without by using -`none` for any managers that you don't want a geofence file loaded for. +As you can see, you can mix managers with geofences and without by using `none` +for any managers that you don't want a geofence file loaded for. You can find more information about Geofences on the [Geofences](geofences) wiki page. @@ -94,4 +96,4 @@ wiki page. By default PA will use your server time for notifications. If you wish to change this timezone, you can use either the `-tz` or `--timezone` to set a -timezone. A full list of compatible timezones can be found [here](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). +timezone. A full list of compatible timezones can be found [here](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). diff --git a/docs/configuration/Rules-Overview.md b/docs/configuration/Rules-Overview.md new file mode 100644 index 000000000..1ed507084 --- /dev/null +++ b/docs/configuration/Rules-Overview.md @@ -0,0 +1,96 @@ +# Rules + +## Overview + +* [Prerequisites](#prerequisites) +* [Default Rule](#default-rule) +* [Creating Custom Rules](#creating-custom-rules) +* [Examples](#examples) + +## Prerequisites + +This page assumes: + +1. You have a working PA installations. +2. You read and understood the [Filters](Filters-Overview) page. +3. You read and understood the [Alarms](alarms) page +4. You have an understanding on what a [Manager](Managers) is. + +## Default Rule + +Normally when PA is processing an Event, it goes through the Filters in +the order listed. Once it finds a match, it triggers all of the Alarms +attached to that manager. + +Imagine you have some filters( `"100-iv"`, `"90-iv"`, +`"in_geofence"`, `"rare-mon"`) and some alarms (`"discord-rare"`, +`"discord-perfect"`, `"telegram-all"`). First, PA will check the `"100-iv"` +filter. If that doesn't match, it will check the `"90-iv"` filter. +Once it finds a match, it will then send to all of the alarms. + +This behavior is known as the 'default rule' - all filters to all +alarms. If you don't specify any rules for a section, this is the +default behavior. The 'default rule' for the above scenario could be + described as the following: + +```json +"default": { + "filters": ["100-iv", "90-iv", "in_geofence", "rare-mon"], + "alarms": ["discord-rare", "discord-perfect", "telegram-all" ] +} + +``` + +Each rule has a name, and 2 required sections: `"filters"` and +`"alarms"`. Each section is simply a list of names corresponding to the +appropriate section. Sections are required, and you will be unable to +make a rule to a filter or alarm that doesn't exist. + +## Creating Custom Rules + +You can specify your own rules to override the defaults. This can be +done by setting `--rules rules.json` or `rules: rules.json` in the +config.ini. + +Each rule file can have 5 sections, one for each type of event. An empty +rules file would look like this, and would results in the default rules: +```json +{ + "monsters": { + }, + "stops": { + }, + "gyms": { + }, + "eggs": { + }, + "raids": { + } +} +``` + +Adding rules will override the default rules and create new behavior. +If multiple rules are specified, they will be checked independently and +possible trigger a notification for each one. For example, the +following would send `"rare-mon"` events to the telegram alarm, and all +other events to the discord alarm. + +```json +{ + "monsters": { + "discord-rule": { + "filters": [ "100-iv", "90-iv", "in_geofence" ], + "alarms": [ "discord-rare", "discord-perfect" ] + }, + "telegram-rule": { + "filters": [ "rare-mon" ], + "alarms": [ "telegram-all" ] + } + } +} +``` + +## Examples + +Coming soon! + diff --git a/docs/settings/server-settings.md b/docs/configuration/Server-Settings.md similarity index 79% rename from docs/settings/server-settings.md rename to docs/configuration/Server-Settings.md index 7eab9c174..3f2443e90 100644 --- a/docs/settings/server-settings.md +++ b/docs/configuration/Server-Settings.md @@ -1,4 +1,7 @@ +# Server Settings + ## Overview + This guide will walk you through configuring server settings for PokeAlarm. * [Prerequisites](#prerequisites) @@ -7,6 +10,7 @@ This guide will walk you through configuring server settings for PokeAlarm. * [Configuration File](#configuration-file) ## Prerequisites + This guide assumes the following: 1. You have correctly [installed PokeAlarm](installation). @@ -18,18 +22,18 @@ use or open any files with Notepad or TextEdit - they will break your files! Settings for the PokeAlarm server can be done the following two ways: -1. **Command Line** - When starting PokeAlarm, you can specify certain -settings with flags following the start up command. For example, you can -change the IP that PokeAlarm binds itself to by using either -`python start_pokealarm.py -H 192.168.0.1` or `python start_pokealarm.py --host 192.168.0.1`. +1. **Command Line** - When starting PokeAlarm, you can specify certain settings +with flags following the start up command. For example, you can change the IP +that PokeAlarm binds itself to by using either `python start_pokealarm.py -H +192.168.0.1` or `python start_pokealarm.py --host 192.168.0.1`. **Note**: when used together, command line flags will override arguments specified in the configuration file. 2. **Configuration File** - You can also use a configuration file in `ini` -format to set server settings for PokeAlarm. These settings use the same -flags at the command line. For example, you either `host: 192.168.0.1` or -`H: 192.168.0.1` line to the configuration file to change the IP that -PokeAlarm binds itself to. +format to set server settings for PokeAlarm. These settings use the same flags +at the command line. For example, you either `host: 192.168.0.1` or +`H: 192.168.0.1` line to the configuration file to change the IP that PokeAlarm +binds itself to. For files, all relative paths will being from the PokeAlarm root folder, but absolute file paths can still be used. @@ -41,21 +45,21 @@ following command: `python start_pokealarm.py --help`. ``` usage: start_pokealarm.py [-h] [-cf CONFIG] [-d] [-H HOST] [-P PORT] - [-m MANAGER_COUNT] [-M MANAGER_NAME] [-k KEY] - [-f FILTERS] [-a ALARMS] [-gf GEOFENCES] - [-l LOCATION] [-L {de,en,es,fr,it,ko,pt,zh_hk}] - [-u {metric,imperial}] [-tl TIMELIMIT] + [-C CONCURRENCY] [-m MANAGER_COUNT] [-M MANAGER_NAME] + [-k KEY] [-f FILTERS] [-a ALARMS] [-r RULES] + [-gf GEOFENCES] [-l LOCATION] [-L {de,en,es,fr,it,ko,pt,zh_hk}] + [-u {metric,imperial}] [-ct {mem,file}] [-tl TIMELIMIT] [-ma MAX_ATTEMPTS] [-tz TIMEZONE] - [-ct {mem,file}] - optional arguments: - -h, --help show this help message and exit + -h, --help Show this help message and exit. -cf CONFIG, --config CONFIG - Configuration file - -d, --debug Debug Mode + Configuration file. + -d, --debug Debug Mode. -H HOST, --host HOST Set web server listening host -P PORT, --port PORT Set web server listening port + -C CONCURRENCY, --concurrency CONCURRENCY + Maximum concurrent connections for the webserver. -m MANAGER_COUNT, --manager_count MANAGER_COUNT Number of Manager processes to start. -M MANAGER_NAME, --manager_name MANAGER_NAME @@ -65,6 +69,7 @@ optional arguments: Filters configuration file. default: filters.json -a ALARMS, --alarms ALARMS Alarms configuration file. default: alarms.json + -r RULES, --rules Rules configuration file. -gf GEOFENCES, --geofences GEOFENCES Alarms configuration file. default: None -l LOCATION, --location LOCATION @@ -75,6 +80,8 @@ optional arguments: -u {metric,imperial}, --units {metric,imperial} Specify either metric or imperial units to use for distance measurements. + -ct {mem,file}, --cache_type {mem,file} + Caching method used to cache data objects for use in Alerts. -tl TIMELIMIT, --timelimit TIMELIMIT Minimum number of seconds remaining on a pokemon to send a notify @@ -84,9 +91,6 @@ optional arguments: -tz TIMEZONE, --timezone TIMEZONE Timezone used for notifications. Ex: "America/Los_Angeles" - -ct {mem,file}, --cache_type {mem,file} - Caching method used to cache data objects for use - in Alerts. default: `mem` ``` ## Configuration File @@ -94,9 +98,9 @@ optional arguments: A copy of the most recent configuration file should be located at `config/config.ini.example`. You can copy this file as a starting point. -By default, PokeAlarm will load the file at `config/config.ini` if it -exists. You can manually specify a configuration file with either the -`-cf` or `--config` file via the command line. +By default, PokeAlarm will load the file at `config/config.ini` if it exists. +You can manually specify a configuration file with either the `-cf` or +`--config` file via the command line. ```ini # Copy this file to config.ini and modify to suit your needs @@ -109,6 +113,7 @@ exists. You can manually specify a configuration file with either the #debug # Enables debugging mode #host: # Address to listen on (default 127.0.0.1) #port: # Port to listen on (default: 4000) +#concurrency: 200 # Maximum concurrent connections for the webserver(default: 200) #manager_count: 1 # Number of Managers to run. (default: 1) # Manager-Specific Settings @@ -116,12 +121,13 @@ exists. You can manually specify a configuration file with either the #key: # Google Maps API Key to use #filters: # File containing filter rules (default: filters.json) #alarms: # File containing alarm rules (default: alarms.json) +#rules: # File containing rules settings (default: None) #geofence: # File containing geofence(s) used to filter (default: None) #location: # Location for the manager. 'Name' or 'lat lng' (default: None) #locale: # Language to be used to translate names (default: en) +#cache_type: # Method used to cache dynamic objects used in Alerts. (default: mem) #unit: # Units used to measure distance. Either 'imperial' or 'metric' (default: imperial) #timelimit: # Minimum number of seconds remaining to send a notification (default: 0) #max_attempts: # Maximum number of attempts an alarm makes to send a notification. (default: 3) #timezone: # Timezone used for notifications Ex: 'America/Los_Angeles' or '[America/Los_Angeles, America/New_York]' -#cache_type: # Method used to cache dynamic objects used in Alerts. (default: mem) ``` diff --git a/docs/configuration/alarms/Discord.md b/docs/configuration/alarms/Discord.md new file mode 100644 index 000000000..a367f6e21 --- /dev/null +++ b/docs/configuration/alarms/Discord.md @@ -0,0 +1,239 @@ +# Discord + +## Overview + +* [Prerequisites](#prerequisites) +* [Introduction](#introduction) +* [Basic Config](#basic-config) + * [Required Parameters](#required-parameters) + * [Example: Basic Alarm Configuration using Required Parameters](#example-basic-alarm-configuration-using-required-parameters) +* [Advanced Config](#advanced-config) + * [Optional Parameters](#optional-parameters) + * [Example: Alarm Configuration Using Optional Parameters](#example-alarm-configuration-using-optional-parameters) + * [Mini Map Configuration](#mini-map-configuration) + * [Formatting alarms text](#formatting-alarms-text) +* [How to Enable Discord Webhooks](#how-to-enable-discord-webhooks) + +## Prerequisites + +This guide assumes + +1. You are familiar with [JSON formatting](https://www.w3schools.com/js/js_json_intro.asp) +2. You have read and understood the [Alarms](alarms) Wiki +3. You are comfortable with the layout of `alarms.json`. +4. You are using the latest version of PokeAlarm. + +Please familiarize yourself with all of the above before proceeding. + +## Introduction + +**Discord** is a free voice and text chat app designed specifically for gaming. +Available on Windows, Mac OS X, iOS and Android. It is also usable from any +Chrome, Firefox or Opera browser. + +PokeAlarm offers the following for Discord: + +* Custom username for posting +* High resolution icons for pokemon, gym, pokestop, egg or raid notifications +* Personalized notifications via [Dynamic Text Substitution](Dynamic-Text-Substitution) + +## Basic Config + +### Required Parameters + +The parameters below are required to enable the Discord alarm service: + + +| Parameters | Description | +|----------------|-----------------------------------------| +| `type` | Must be `discord` | +| `active` | `true` for alarm to be active | +| `webhook_url`* | Your Webhook URL for a specific channel | + + +**Note:** *In PokeAlarm version 3.1, `webhook_url` replaced `api_key`.* + +### Example: Basic Alarm Configuration using Required Parameters + +**Note:** The above below is to be inserted into the alarms section of +`alarms.json`. It does not represent the entire `alarms.json` file. + +```json +{ + "active":true, + "type":"discord", + "webhook_url":"YOUR_WEBHOOK_URL" +} +``` + +## Advanced Config + +### Optional Parameters + +In addition to the required parameters, several optional parameters are +available to personalize your notifications. Below is an example of these +optional parameters and how they are incorporated into a functional alarm layout. + +These optional parameters are entered at the same level as `"type":"discord"`. + + +| Parameters | Description | +|--------------------|----------------------------------------------| +| `startup_message` | Confirmation post when PokeAlarm initialized | + + +These optional parameters below are applicable to the `monsters`, `stops`, +`gyms`, `eggs`, and `raids` sections of the JSON file. + + +| Parameters | Description | Default | +|------------------|----------------------------------------------|-----------------------------------| +| `webhook_url` | URL of specific channel name. Overrides `webhook_url` at Alarm level. Use to post only +| `disable_embed` | Disables the body to make one line notifications | `False` | +| `username` | Username the bot should post the message as | `` | +| `icon_url` | URL path to icon | | +| `avatar_url` | URL path to avatar | | +| `title` | Notification text to begin the message | `A wild has appeared!` | +| `url` | Link to be added to notification text | `` | +| `body` | Additional text to be added to the message | `Available until <24h_time> ().` | +| `content` | Text before the Discord embed | | + + +*Note: Nidorans will be `nidoranf` or `nidoranm`, Farfetch'd will be +`farfetchd`, and Mr. Mime will be `mrmime`.* + +## Example: Alarm Configuration Using Optional Parameters + +**Note:** The code below is to be inserted into the alarms section of +`alarms.json`. It does not represent the entire `alarms.json` file. + +```json +{ + "discord_alarm":{ + "active":true, + "type":"discord", + "webhook_url":"YOUR_WEBHOOK_URL", + "startup_message":false, + "monsters":{ + "webhook_url":"YOUR_WEBHOOK_URL_FOR_POKEMON_CHANNEL", + "username":"", + "icon_url*":"/_.png", + "title":"A wild has appeared!", + "url":"", + "body":"Available until <24h_time> ()." + }, + "stops":{ + "webhook_url":"YOUR_WEBHOOK_URL_FOR_POKESTOP_CHANNEL", + "username":"Pokestop", + "icon_url*":"/ready.png", + "title":"Someone has placed a lure on a Pokestop!", + "url":"", + "body":"Lure will expire at <24h_time> ()." + }, + "gyms":{ + "webhook_url":"YOUR_WEBHOOK_URL_FOR_GYM_CHANNEL", + "username":" Gym Alerts", + "icon_url*":"/.png", + "title":"A Team gym has fallen!", + "url":"", + "body":"It is now controlled by ." + }, + "eggs":{ + "webhook_url":"DISCORD_WEBHOOK_URL_FOR_EGG_CHANNEL", + "username":"Egg", + "icon_url*":"/.png", + "avatar_url*":"/.png", + "title":"Raid is incoming!", + "url":"", + "body":"A level raid will hatch at <24h_hatch_time> ()." + }, + "raids":{ + "webhook_url":"DISCORD_WEBHOOK_URL_FOR_RAID_CHANNEL", + "username":"Raid", + "icon_url*":"/_000.png", + "avatar_url*":"/_000.png", + "title":"Level Raid is available against !", + "url":"", + "body":"The raid is available until <24h_raid_end> ()." + } + } +} +``` +**Note:** \*THESE LINES ARE USED TO OVERRIDE DEFAULT VALUES. IF YOU DO NOT WISH +TO USE CUSTOM IMAGES, DO NOT ADD THESE LINES TO YOUR ALARMS.JSON. + +### Mini Map Configuration + +![](images/minimap.png) + +You can enable a small Google Static Maps image after your post, showing the +location of the alarmed pokemon, gym, pokestop, egg, or raid. This is done by +adding the `map` parameter at the Alarm level (which will apply maps for any +notification), or individually to the `monsters`, `stops`, `gyms`, `eggs`, +or `raids` sections of your alarm. + +Below is an example of enabling the mini map for pokemon. + +```json + "monsters":{ + "webhook_url":"YOUR_WEBHOOK_URL_FOR_POKEMON_CHANNEL", + "username":"", + "title":"A wild has appeared!", + "url":"", + "body":"Available until <24h_time> ().", + "map":{ + "enabled":"true", + "width":"250", + "height":"125", + "maptype":"roadmap", + "zoom":"15" + } + }, +``` + + +| Parameters | Description | Default | +|----------------|---------------------------------------|-------------| +| `enabled` | Turns the map on or off | `true` | +| `width` | Width of the map | `250` px | +| `height` | Height of the map | `150` px | +| `maptype` | Link to be added to notification text | `roadmap` | +| `zoom` | Specifies the zoom of the map | `15` | + + +### Formatting alarms text + +Here is a basic guide to apply custom styles to alarm text: + + ++------------------------------------+----------------------------------+ +| Style | Example | +|====================================+==================================+ +| `*italics*` | *italics* | ++------------------------------------+----------------------------------+ +| `**bold**` | **bold** | ++------------------------------------+----------------------------------+ +| `***bold italics***` | ***bold italics*** | ++------------------------------------+----------------------------------+ +| `__underline__` | __underline__ | ++------------------------------------+----------------------------------+ +| `__*underline italics*__` | __*underline italics*__ | ++------------------------------------+----------------------------------+ +| `__**underline bold**__` | __**underline bold**__ | ++------------------------------------+----------------------------------+ +| `__***underline bold italics***__` | __***underline bold italics***__ | ++------------------------------------+----------------------------------+ +| `~~Strikethrough~~` | ~~Strikethrough~~ | ++------------------------------------+----------------------------------+ + +You can see other options in the official Discord information about formatting text [here](https://support.discordapp.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline-). + +## How to enable Discord webhooks + +1. You must have the role permission 'Manage Webhooks', or be an administrator for the server. + +2. Go into channel settings, into the Webhooks tab. + +3. Click "Create Webhook", 'Save' + +4. The webhook URL listed is the key you need. diff --git a/docs/alarms/facebook-pages.md b/docs/configuration/alarms/Facebook-Pages.md similarity index 86% rename from docs/alarms/facebook-pages.md rename to docs/configuration/alarms/Facebook-Pages.md index 69dcf3c98..9d4ba7566 100644 --- a/docs/alarms/facebook-pages.md +++ b/docs/configuration/alarms/Facebook-Pages.md @@ -1,4 +1,4 @@ -# Facebook +# Facebook Pages ## Overview @@ -24,33 +24,34 @@ Please familiarize yourself with all of the above before proceeding. ## Introduction -**Facebook Pages** is an online social networking service that enables users -to post status messages to a public profile specifically created for business, -brands, celebrities, causes, and other organizations. Registered users can -read and post messages, but those who are unregistered can only read them. -Users access Facebook through the website interface, SMS or mobile device app. +**Facebook Pages** is an online social networking service that enables users to +post status messages to a public profile specifically created for business, +brands, celebrities, causes, and other organizations. Registered users can read +and post messages, but those who are unregistered can only read them. Users +access Facebook through the website interface, SMS or mobile device app. PokeAlarm offers the following for Facebook Pages: -* Personalized notifications via [Dynamic Text Substitution](dynamic-text-substitution) +* Personalized notifications via [Dynamic Text Substitution](Dynamic-Text-Substitution) ## Basic Config ### Required Parameters + These `alarms.json` parameters - `active`, `type`, and `page_access_token` - are required to enable the Facebook Pages alarm service: | Parameters | Description | |--------------------|----------------------------------------| | type | Must be `facebook_page` | -| active | `True` for alarm to be active | +| active | `true` for alarm to be active | | page_access_token | Your permanent FB page access token | ### Example: Basic Alarm Configuration using Required Parameters ```json { - "active":"True", + "active":true, "type":"facebook_page", "page_access_token":"YOUR_PAGE_ACCESS_TOKEN" } @@ -69,15 +70,15 @@ functional alarm layout for Facebook Pages. These optional parameters are entered at the same level as `"type":"facebook_page"`. -| Parameters | Description | Default | -|--------------------|------------------------------------------------------------|------------------------------| -| `startup_message` | Confirmation post when PokeAlarm initialized | `True` | +| Parameters | Description | Default | +|--------------------|-------------------------------------------------|----------| +| `startup_message` | Confirmation post when PokeAlarm initialized | `true` | -These optional parameters below are applicable to the `pokemon`, `pokestop`, -`gym`, `egg`, and `raid` sections of the JSON file. -Check Image column to see where everything appears in the final publication. +These optional parameters below are applicable to the `monsters`, `stops`, +`gyms`, `eggs`, and `raids` sections of the JSON file. Check Image column to +see where everything appears in the final publication. -![Facebook Example](../images/fb-example.png) +![Facebook Example](images/fb-example.png) | Parameters | Description | Image | |------------------|---------------------------------------------------|-------| @@ -90,14 +91,14 @@ Check Image column to see where everything appears in the final publication. When it says `"empty for X"` it means that you can disable the default PokeAlarm value setting that parameter to `""` in your `alarms.json` file. -In that case Facebook will use the link information to fill that field in -the publication. +In that case Facebook will use the link information to fill that field in the +publication. For example if you have `link` as a google maps link and you disable the `image` parameter setting it to `""`, it will be a minimap image of that coordinates. -`pokemon` default values: +`monsters` default values: | Parameters | Default | |------------------|-----------------------------------------------| @@ -108,7 +109,7 @@ coordinates. | `description` | `Available until <24h_time> ()` | | `caption` | None | -`pokestop` default values: +`stops` default values: | Parameters | Default | |------------------|------------------------------------------------| @@ -119,7 +120,7 @@ coordinates. | `description` | `Lure will expire at <24h_time> ()` | | `caption` | None | -`gym` default values: +`gyms` default values: | Parameters | Default | |------------------|-----------------------------------------------| @@ -130,7 +131,7 @@ coordinates. | `description` | `It is now controlled by ` | | `caption` | None | -`egg` default values: +`eggs` default values: | Parameters | Default | |------------------|-----------------------------------------------| @@ -141,7 +142,7 @@ coordinates. | `description` | `A level raid will hatch at <24h_hatch_time> ().` | | `caption` | None | -`raid` default values: +`raids` default values: | Parameters | Default | |------------------|-----------------------------------------------| @@ -156,48 +157,50 @@ coordinates. ```json { - "active":"True", + "facebook_alarm":{ + "active":true, "type":"facebook_page", "page_access_token":"YOUR_PAGE_ACCESS_TOKEN", - "startup_message":"True", - "pokemon":{ + "startup_message":false, + "monsters":{ "message":" available. / (% - //)", "image*":"/_.png", "link":"", "description":"Address:
", "name":"" }, - "pokestop":{ + "stops":{ "message":"Someone has placed a lure on a Pokestop! Lure will expire at <24h_time> ().", "image*":"/ready.png", "description":"Address:
", "link":"", "name":"" }, - "gym":{ + "gyms":{ "message":"A Team gym has fallen! It is now controlled by .", "image*":"/.png", "link":"", "name":"", "description":"Address:
" }, - "egg":{ + "eggs":{ "message":"A level raid is upcoming!", "image*":"/.png", "link":"", "name":"Egg", "description":"A level raid will hatch at <24h_hatch_time> ()." }, - "raid":{ + "raids":{ "message":"Level raid available against !", "image*":"/_000.png", "link":"", "name":"Raid", "description":"The raid is available until <24h_raid_end> ()." } + } } ``` -**Note1:** THESE LINES ARE USED TO OVERRIDE DEFAULT VALUES. IF YOU DO NOT WISH +**Note1:** \*THESE LINES ARE USED TO OVERRIDE DEFAULT VALUES. IF YOU DO NOT WISH TO USE CUSTOM IMAGES, DO NOT ADD THESE LINES TO YOUR ALARMS.JSON. **Note2:** The above code is to be inserted into the alarms section of @@ -250,9 +253,8 @@ The response should look like this: `access_token=ABC123&expires=5182959` -"ABC123" will be your long-lived access token. You can put it into the -[Access Token Debugger](https://developers.facebook.com/tools/debug/accesstoken) -to verify. Under "Expires" it should have something like "2 months". +"ABC123" will be your long-lived access token. You can put it into the [Access Token Debugger](https://developers.facebook.com/tools/debug/accesstoken) to verify. +Under "Expires" it should have something like "2 months". ### 4. Get User ID @@ -270,7 +272,8 @@ Make a GET request to `https://graph.facebook.com/v2.2/{account_id}/accounts?access_token={long_lived_access_token}` Be sure to remove the curly braces "{}" when replacing values. The JSON -response should have a **data** field under which is an array of items the -user has access to. Find the item for the page you want the permanent access -token from. The **access_token** field should have your permanent access token. -Copy it and test it in the [Access Token Debugger](https://developers.facebook.com/tools/debug/accesstoken). Under "Expires" it should say "Never". +response should have a **data** field under which is an array of items the user +has access to. Find the item for the page you want the permanent access token +from. The **access_token** field should have your permanent access token. Copy +it and test it in the [Access Token Debugger](https://developers.facebook.com/tools/debug/accesstoken). +Under "Expires" it should say "Never". diff --git a/docs/alarms/pushbullet.md b/docs/configuration/alarms/Pushbullet.md similarity index 62% rename from docs/alarms/pushbullet.md rename to docs/configuration/alarms/Pushbullet.md index f736ceec8..1a1e3344e 100644 --- a/docs/alarms/pushbullet.md +++ b/docs/configuration/alarms/Pushbullet.md @@ -13,6 +13,7 @@ * [How to Get a Pushbullet API Key](#how-to-get-a-pushbullet-api-key) ## Prerequisites + This guide assumes: 1. You are familiar with [JSON formatting](https://www.w3schools.com/js/js_json_intro.asp) @@ -26,8 +27,9 @@ Please familiarize yourself with all of the above before proceeding. PokeAlarm offers the following for Pushbullet: * Notifications to multiple Pushbullet channels -* Customizable Google Map image of the pokemon, gym, pokestop, egg and/or raid location -* Personalized notifications via [Dynamic Text Substitution](dynamic-text-substitution) +* Customizable Google Map image of the pokemon, gym, pokestop, egg and/or +raid location +* Personalized notifications via [Dynamic Text Substitution](Dynamic-Text-Substitution) ## Basic Config @@ -37,8 +39,8 @@ These `alarm.json` parameters are required to enable the Pushbullet alarm servic | Parameters | Description | |:-------------- |:---------------------------------------| -|`type` | must be `pushbullet` | -|`active` |`True` for alarm to be active | +|`type` | Must be `pushbullet` | +|`active` | `true` for alarm to be active | |`api_key` | Your Pushbullet API key | ### Example: Basic Alarm Configuration using Required Parameters @@ -47,12 +49,11 @@ Below is how a basic Pushbullet alarm configuration would appear in `alarms.json ```json { - "active":"True", + "active":true, "type":"pushbullet", "api_key":"YOUR_API_KEY" } ``` - **Note:** The above code is to be inserted into the alarms section of alarms.json. It does not represent the entire alarms.json file. @@ -60,64 +61,66 @@ alarms.json. It does not represent the entire alarms.json file. ### Optional Parameters -In addition to the required parameters, several `alarm.json` optional -parameters are available to personalize your notifications. Below is an +In addition to the required parameters, several `alarms.json` optional +parameters are available to personalize your notifications. Below is an example of these optional parameters and how they are incorporated into a functional alarm layout. - These optional parameters are entered at the same level as `"type":"pushbullet"`. -| Parameters | Description | Default | -|:-------------------|:-----------------------------------------------------------|:-----------------------------| -| `startup_message` | Confirmation post when PokeAlarm initialized | `True` | +| Parameters | Description | Default | +|:-------------------|:-----------------------------------------------|:---------| +| `startup_message` | Confirmation post when PokeAlarm initialized | `true` | -These optional parameters below are applicable to the `pokemon`, `pokestop`, `gym`, `egg`, and `raid` sections of the JSON file. +These optional parameters below are applicable to the `monsters`, `stops`, +`gyms`, `eggs`, and `raids` sections of the JSON file. -| Parameters | Description | Default | -|:-------------- |:--------------------------------------------------|:----------------------------------------------| -|`channel` | Channel tag of the target channel | Sends to all devices | -|`title` | Notification title attached to the push | `A wild has appeared!` | -|`url` | Link to be attached to the push | `` | -|`body` | Message attached to the push | `Available until <24h_time> ().` | +| Parameters | Description | Default | +|:-------------- |:------------------------------------------|:--------------------------------------------| +|`channel` | Channel tag of the target channel | Sends to all devices | +|`title` | Notification title attached to the push | `A wild has appeared!` | +|`url` | Link to be attached to the push | `` | +|`body` | Message attached to the push | `Available until <24h_time> ().` | ### Example: Alarm Configuration Using Optional Parameters ```json { - "active":"True", + "pushbullet_alarm":{ + "active":true, "type":"pushbullet", "api_key":"YOUR_API_KEY", "channel":"DEFAULT_CHANNEL", - "pokemon":{ + "monsters":{ "title":"A wild has appeared!", "url":"", "body":"Available until <24h_time> ().", "channel":"OVERRIDES_DEFAULT_CHANNEL" }, - "pokestop":{ + "stops":{ "title":"Someone has placed a lure on a Pokestop!", "url":"", "body":"Lure will expire at <24h_time> ().", "channel":"OVERRIDES_DEFAULT_CHANNEL" }, - "gym":{ + "gyms":{ "title":"A Team gym has fallen!", "url":"", "body":"It is now controlled by .", "channel":"OVERRIDES_DEFAULT_CHANNEL" }, - "egg": { - "title": "A level raid is incoming!", - "url": "", - "body": "The egg will hatch <24h_hatch_time> ().", + "eggs": { + "title":"A level raid is incoming!", + "url":"", + "body":"The egg will hatch <24h_hatch_time> ().", "channel":"OVERRIDES_DEFAULT_CHANNEL" }, - "raid": { - "title": "Level raid is available against !", - "url": "", - "body": "The raid is available until <24h_raid_end> ()." + "raids":{ + "title":"Level raid is available against !", + "url":"", + "body":"The raid is available until <24h_raid_end> ()." } + } } ``` **Note:** The above code is to be inserted into the alarms section of @@ -125,8 +128,10 @@ alarms.json. It does not represent the entire alarms.json file. ## How to get a Pushbullet API Key -1. Go to [Pushbullet](https://www.pushbullet.com/) and click one of the 'Sign up' options. +1. Go to [Pushbullet](https://www.pushbullet.com/) and click one of the +'Sign up' options. 2. In the top right corner, click on the letter and select 'My Account'. -3. Scroll down to 'Create Access Token`. Copy this token and place it in api_key parameter. +3. Scroll down to 'Create Access Token'. Copy this token and place it in +api_key parameter. diff --git a/docs/alarms/slack.md b/docs/configuration/alarms/Slack.md similarity index 72% rename from docs/alarms/slack.md rename to docs/configuration/alarms/Slack.md index 17454c10b..425da2d1e 100644 --- a/docs/alarms/slack.md +++ b/docs/configuration/alarms/Slack.md @@ -27,12 +27,12 @@ Please familiarize yourself with all of the above before proceeding. ## Introduction -![](../images/slack_demo.png) +![](images/slack_demo.png) **Slack** is a cloud-based team collaboration tool that is available on -Windows, Mac OS X, Linux, iOS, Android, and Windows Phone. Slack offers a -lot of IRC-like features: persistent chat rooms (channels) organized by topic, -as well as private groups and direct messaging. All content inside Slack is +Windows, Mac OS X, Linux, iOS, Android, and Windows Phone. Slack offers a lot +of IRC-like features: persistent chat rooms (channels) organized by topic, as +well as private groups and direct messaging. All content inside Slack is searchable, including files, conversations, and people. PokeAlarm offers the following for Slack: @@ -41,17 +41,18 @@ PokeAlarm offers the following for Slack: * High resolution icons for pokemon, gym, pokestop, egg and/or raid notifications * Notifications to multiple Slack channels and/or teams * Customizable Google Map image of the pokemon, gym, pokestop, egg and/or raid location -* Personalized notifications via [Dynamic Text Substitution](dynamic-text-substitution) +* Personalized notifications via [Dynamic Text Substitution](Dynamic-Text-Substitution) ## Basic Config ### Required Parameters + These parameters below are required to enable the Slack alarm service: | Parameters | Default | Description | |-------------------|-------------|---------------------------------------| | `type` | `slack` | `slack` | -| `active` | `False` | `True` for alarm to be active | +| `active` | `False` | `true` for alarm to be active | | `api_key` | | Your Slack API key | | `channel` | `"general"` | Default channel to post notifications | @@ -59,13 +60,12 @@ These parameters below are required to enable the Slack alarm service: ```json { - "active":"True", + "active":true, "type":"slack", "api_key":"YOUR_API_KEY", "channel":"general" } ``` - **Note:** The above code is to be inserted into the alarms section of alarms.json. It does not represent the entire alarms.json file. @@ -84,33 +84,34 @@ These optional parameters are entered at the same level as `"type":"slack"`. |--------------------|----------------------------------------------| | `startup_message` | Confirmation post when PokeAlarm initialized | -These optional parameters below are applicable to the `pokemon`, `pokestop`, -`gym`, `egg`, and `raid` sections of the JSON file. +These optional parameters below are applicable to the `monsters`, `stops`, +`gyms`, `eggs`, and `raids` sections of the JSON file. -| Parameters | Description | Default | -|------------------|---------------------------------------------------|----------------------------------------------| -| `channel` | Send messages to this channel. | `#general` | -| `username` | Username the bot should post the message as | `` | -| `icon_url` | URL path to pokemon icon | | -| `title` | Notification text to begin the message | `A wild has appeared!` | -| `url` | Link to be added to notification text | `` | -| `body` | Additional text to be added to the message | `Available until <24h_time> ().` | -| `map` | Specify a json object to describe the map | See Mini Map Configuration for more details | +| Parameters | Description | Default | +|------------------|---------------------------------------------|----------------------------------------------| +| `channel` | Send messages to this channel. | `#general` | +| `username` | Username the bot should post the message as | `` | +| `icon_url` | URL path to pokemon icon | | +| `title` | Notification text to begin the message | `A wild has appeared!` | +| `url` | Link to be added to notification text | `` | +| `body` | Additional text to be added to the message | `Available until <24h_time> ().` | +| `map` | Specify a json object to describe the map | See Mini Map Configuration for more details | -*Note*: Nidorans will be `nidoranf` or `nidoranm`, Farfetch'd will be +*Note: Nidorans will be `nidoranf` or `nidoranm`, Farfetch'd will be `farfetchd`, and Mr. Mime will be `mrmime`. Channels that do not exist -(channels cannot be created by bots) will default to general instead. +(channels cannot be created by bots) will default to general instead.* ## Example: Alarm Configuration Using Optional Parameters ```json { - "active":"True", + "slack_alarm":{ + "active":true, "type":"slack", "api_key":"YOUR_API_KEY", "channel":"general", - "startup_message":"True", - "pokemon":{ + "startup_message":true, + "monsters":{ "channel":"general", "username":"", "icon_url*":"/_.png", @@ -118,14 +119,14 @@ These optional parameters below are applicable to the `pokemon`, `pokestop`, "url":"", "body":"Available until <24h_time> ().", "map":{ - "enabled":"true", + "enabled":true, "width":"250", "height":"125", "maptype":"roadmap", "zoom":"15" } }, - "pokestop":{ + "stops":{ "channel":"general", "username":"Pokestop", "icon_url*":"/ready.png", @@ -133,7 +134,7 @@ These optional parameters below are applicable to the `pokemon`, `pokestop`, "url":"", "body":"Lure will expire at <24h_time> ()." }, - "gym":{ + "gyms":{ "channel":"general", "username":" Gym Alerts", "icon_url*":"/.png", @@ -141,23 +142,24 @@ These optional parameters below are applicable to the `pokemon`, `pokestop`, "url":"", "body":"It is now controlled by ." }, - "egg":{ + "eggs":{ "username":"Egg", "icon_url*":"/.png", "title":"A level raid is incoming!", "url":"", "body":"The egg will hatch <24h_hatch_time> ()." }, - "raid":{ + "raids":{ "username":" Raid", "icon_url*":"/_000.png", "title":"Level raid is available against !", "url":"", "body":"The raid is available until <24h_raid_end> ()." } + } } ``` -**Note1:** THESE LINES ARE USED TO OVERRIDE DEFAULT VALUES. IF YOU DO NOT +**Note1:** \*THESE LINES ARE USED TO OVERRIDE DEFAULT VALUES. IF YOU DO NOT WISH TO USE CUSTOM IMAGES, DO NOT ADD THESE LINES TO YOUR ALARMS.JSON. **Note2:** The above code is to be inserted into the alarms section of @@ -165,25 +167,25 @@ alarms.json. It does not represent the entire alarms.json file. ### Mini Map Configuration -![](../images/minimap.png) +![](images/minimap.png) You can enable a small Google Static Maps image after your post, showing the -location of the alarmed pokemon, gym, or pokestop. This is done by adding the -`map` parameter at the Alarm level (which will apply maps for any - notification), or individually to the `pokemon`, `pokestop`, `gym`, `egg`, - or `raid` sections of your alarm. +location of the alarmed pokemon, gym, pokestop, egg or raid. This is done by +adding the `map` parameter at the Alarm level (which will apply maps for any +notification), or individually to the `monsters`, `stops`, `gyms`, `eggs`, or +`raids` sections of your alarm. Below is an example of enabling the mini map for pokemon. ```json - "pokemon":{ + "monsters":{ "channel":"general", "username":"", "title":"A wild has appeared!", "url":"", "body":"Available until <24h_time> ().", "map":{ - "enabled":"true", + "enabled":true, "width":"250", "height":"125", "maptype":"roadmap", @@ -192,13 +194,13 @@ Below is an example of enabling the mini map for pokemon. }, ``` -| Parameters | Description | Default | -|----------------|---------------------------------------------------|-------------------------------------------| -| `enabled` | Turns the map on or off | `True` | -| `width` | Width of the map | `250` px | -| `height` | Height of the map | `150` px | -| `maptype` | Link to be added to notification text | `roadmap` | -| `zoom` | Specifies the zoom of the map | `15` | +| Parameters | Description | Default | +|----------------|-------------------------------------------|----------------| +| `enabled` | Turns the map on or off | `true` | +| `width` | Width of the map | `250` px | +| `height` | Height of the map | `150` px | +| `maptype` | Link to be added to notification text | `roadmap` | +| `zoom` | Specifies the zoom of the map | `15` | ### Formatting alarms text @@ -215,8 +217,11 @@ You can see other options in the official Slack information about formatting tex ## How to get a Slack API Key -1. Visit [slack.com](https://www.slack.com). Enter your email address and click 'Create your team'. Follow the instructions to setup and activate your account. +1. Visit [slack.com](https://www.slack.com). Enter your email address and click +'Create your team'. Follow the instructions to setup and activate your account. -2. Go to the [create a bot page](https://my.slack.com/services/new/bot). Enter a username and click create. +2. Go to the [create a bot page](https://my.slack.com/services/new/bot). Enter +a username and click create. -3. Copy the API Token given. Fill out any more information you want, and click 'Save Integration'. +3. Copy the API Token given. Fill out any more information you want, and +click 'Save Integration'. diff --git a/docs/alarms/telegram.md b/docs/configuration/alarms/Telegram.md similarity index 50% rename from docs/alarms/telegram.md rename to docs/configuration/alarms/Telegram.md index b80ac9492..3374818b1 100644 --- a/docs/alarms/telegram.md +++ b/docs/configuration/alarms/Telegram.md @@ -26,19 +26,18 @@ Please familiarize yourself with all of the above before proceeding. ## Introduction -![](../images/telegram.png) +![](images/telegram.png) -**Telegram** is a cloud-based instant messaging service. Telegram clients -exist for both mobile (Android, iOS, Windows Phone, Ubuntu Touch) and desktop -systems (Windows, OS X, Linux). Users can send messages and exchange photos, -videos, stickers and files of any type. +**Telegram** is a cloud-based instant messaging service. Telegram clients exist +for both mobile (Android, iOS, Windows Phone, Ubuntu Touch) and desktop systems +(Windows, OS X, Linux). Users can send messages and exchange photos, videos, +stickers and files of any type. PokeAlarm offers the following for Telegram: * Notifications to multiple Telegram channels -* Customizable Google Map image of the pokemon, gym, pokestop, egg and/or -raid location -* Personalized notifications via [Dynamic Text Substitution](dynamic-text-substitution) +* Customizable Google Map image of the pokemon, gym, pokestop, egg and/or raid location +* Personalized notifications via [Dynamic Text Substitution](Dynamic-Text-Substitution) ## Basic Config @@ -49,7 +48,7 @@ These `alarm.json` parameters are required to enable the Telegram alarm service: | Parameters | Description | |----------------|----------------------------------------| | `type` | Must be `telegram` | -| `active` | `True` for alarm to be active | +| `active` | `true` for alarm to be active | | `bot_token` | Your Bot Token from Telegram | | `chat_id` | Your chat's id from Telegram | @@ -61,7 +60,7 @@ the section pertaining to the alarm portion of the JSON file. ```json { - "active":"True", + "active":true, "type":"telegram", "bot_token":"YOUR_BOT_TOKEN", "chat_id":"YOUR_CHAT_ID" @@ -71,32 +70,43 @@ the section pertaining to the alarm portion of the JSON file. ## Advanced Config ### Optional Parameters -In addition to the required parameters, several `alarm.json` optional -parameters are available to personalize your notifications. Below is an -example of these optional parameters and how they are incorporated into a -functional alarm layout. + +In addition to the required parameters, several `alarms.json` optional +parameters are available to personalize your notifications. Below is an example +of these optional parameters and how they are incorporated into a functional +alarm layout. Parameters at the alarm level will be the default to alert-level parameters. -| Parameters | Description | Default | -|----------------------------|----------------------------------------------------------------------|---------| -| `location` | Sends minimap after main message. | `True` | -| `disable_map_notification` | Disables map notifications. Set to `False` if you are experiencing notification issues on Android | `True` | -| `venue` | Sends location in main message. | `False` | -| `startup_message` | Confirmation post when PokeAlarm initialized | `True` | - -These optional parameters below are applicable to the `pokemon`, `pokestop`, -`gym`, `egg`, and `raid` sections of the JSON file. These parameters override -the alarm-level settings for this alert. - -| Parameters | Description | Default | -|------------|----------------------------------------------|----------------------------------------------------------| -| `title` | Header text for the message | `A wild has appeared!` | -| `body` | Additional text to be added to the message | `" \n Available until <24h_time> ()."` | -| `location` | Sends minimap after main message. | `True` | -| `disable_map_notification` | Disables map notifications. Set to `False` if you are experiencing notification issues on Android | `True` | -| `venue` | Sends location in main message. | `False` | -| `stickers` | Sends pokemon images as stickers in the message | `True` | +| Parameters | Description | Default | +|-------------------|------------------------------------------------------|-----------------------| +| `map` | Sends minimap after main message. | `true` | +| `map_notify` | Disables map notifications. Set to `False` if you are experiencing notification issues on Android | `False` | +| `venue` | Sends location in main message.* | `false` | +| `venue_notify` | Disables venue notifications. Set to `False` if you are experiencing notification issues on Android | `True` | +| `message_notify` | Enables notifications messages | `true` | +| `sticker` | Sends pokemon images as stickers in the message | `true` | +| `sticker_notify` | Disables sticker notifications. Set to `False` if you are experiencing notification issues on Android | `False` | +| `sticker_url` | Url to be used for the sticker. Must be .webp file. | | +| `max_attempts` | Max attempts to send for each message. | 3 | +| `startup_message` | Confirmation post when PokeAlarm initialized | `true` | + +These optional parameters below are applicable to the `monsters`, `stops`, +`gyms`, `eggs`, and `raids` sections of the JSON file. These parameters +override the alarm-level settings for this alert. + +| Parameters | Description | Default | +|------------------|-------------------------------------------------|-------------------------------------------| +| `message` | Text for the message | `*A wild has appeared!*\nAvailable until <24h_time> ().` | +| `map` | Sends minimap after main message. | `true` | +| `map_notify` | Disables map notifications. Set to `False` if you are experiencing notification issues on Android | `False` | +| `venue` | Sends location in main message.* | `false` | +| `venue_notify` | Disables venue notifications. Set to `False` if you are experiencing notification issues on Android | `True` | +| `sticker` | Sends images as stickers in the message | `true` | +| `sticker_notify` | Disables sticker notifications. Set to `False` if you are experiencing notification issues on Android | `False` | + +**Note:** \*if you use `venue`, keep in mind that the markdown in your alarms +will be ignored because of a limitation in the Telegram API. ### Example: Alarm Configuration Using Optional Parameters @@ -106,43 +116,40 @@ pertaining to the alarm portion of the JSON file. ```json { - "active":"True", + "telegram_alarm":{ + "active":true, "type":"telegram", "bot_token":"YOUR_BOT_TOKEN", "chat_id":"YOUR_CHAT_ID", - "disable_map_notification":"False", - "startup_message":"True", - "stickers":"True", - "pokemon":{ + "map_notify":false, + "startup_message":false, + "sticker":true, + "monsters":{ "chat_id":"OVERRIDES_DEFAULT_CHANNEL", - "title":"A wild has appeared!", - "body":"Available until <24h_time> ().", - "location":"True" + "message":"*A wild has appeared!*\nAvailable until <24h_time> ().", + "map":true }, - "pokestop":{ + "stops":{ "chat_id":"OVERRIDES_DEFAULT_CHANNEL", - "title":"Someone has placed a lure on a Pokestop!", - "body":"Lure will expire at <24h_time> ().", - "location":"True" + "message":"*Someone has placed a lure on a Pokestop!*\nLure will expire at <24h_time> ().", + "map":true }, - "gym":{ + "gyms":{ "chat_id":"OVERRIDES_DEFAULT_CHANNEL", - "title":"A Team gym has fallen!", - "body":"It is now controlled by .", - "location":"True" + "message":"*A Team gym has fallen!*\nIt is now controlled by .", + "map":true }, - "egg":{ + "eggs":{ "chat_id":"OVERRIDES_DEFAULT_CHANNEL", - "title":"A level raid is incoming!", - "body":"The egg will hatch <24h_hatch_time> ().", - "location":"True" + "message":"*A level raid is incoming!*\nThe egg will hatch <24h_hatch_time> ().", + "map":true }, - "raid":{ + "raids":{ "chat_id":"OVERRIDES_DEFAULT_CHANNEL", - "title":"A raid is available against !", - "body":"The raid is available until <24h_raid_end> ().", - "location":"True" + "message":"*A raid is available against !*\nThe raid is available until <24h_raid_end> ().", + "map":true } + } } ``` @@ -156,8 +163,8 @@ Here is a basic guide to apply custom styles to alarm text: | `*bold text*` | **bold** | | `_*bold italics*_` | ***bold italics*** | -You can see other options in the official Telegram information about formatting -text [here](https://core.telegram.org/bots/api#formatting-options). +You can see other options in the official Telegram information about +formatting text [here](https://core.telegram.org/bots/api#formatting-options). ## How to get a Telegram API Key diff --git a/docs/alarms/twilio.md b/docs/configuration/alarms/Twilio.md similarity index 80% rename from docs/alarms/twilio.md rename to docs/configuration/alarms/Twilio.md index c3fa46803..6069296e1 100644 --- a/docs/alarms/twilio.md +++ b/docs/configuration/alarms/Twilio.md @@ -1,4 +1,4 @@ -# Twilio (SMS) +# Twilio ## Overview @@ -28,7 +28,7 @@ phone calls and send and receive text messages using its web service APIs. PokeAlarm offers the following for Twilio: -* Personalized notifications via [Dynamic Text Substitution](dynamic-text-substitution) +* Personalized notifications via [Dynamic Text Substitution](Dynamic-Text-Substitution) ## Basic Config @@ -39,7 +39,7 @@ These `alarms.json` parameters are required to enable the alarm service: | Parameters | Description | |:-------------- |:---------------------------------------| |`type` | must be `twilio` | -|`active` | 'True' for alarm to be active | +|`active` | 'true' for alarm to be active | |`account_sid` | Your Account SID from Twilio | |`auth_token` | Your Auth Token from Twilio | |`from_number` | Your Twilio number to send from | @@ -49,7 +49,7 @@ These `alarms.json` parameters are required to enable the alarm service: ```json { - "active": "True", + "active":true, "type":"twilio", "account_sid":"YOUR_API_KEY", "auth_token":"YOUR_AUTH_TOKEN", @@ -66,9 +66,9 @@ are available to personalize your notifications. ### Multiple Destinations -The `to_number` field can accept either a single destination phone number or -an array of phone numbers to send SMS messages to. This allows for sending SMS -alerts to multiple destinations. +The `to_number` field can accept either a single destination phone number +or an array of phone numbers to send SMS messages to. This allows for +sending SMS alerts to multiple destinations. #### Example @@ -77,18 +77,19 @@ alarm configuration. ```json { - "active": "True", - "type":"twilio", - "account_sid":"YOUR_API_KEY", - "auth_token":"YOUR_AUTH_TOKEN", - "from_number":"YOUR_FROM_NUM", - "to_number": [ "YOUR_1ST_TO_NUM", "YOUR_2ND_TO_NUM", "YOUR_3RD_TO_NUM" ] + "active":true, + "type":"twilio", + "account_sid":"YOUR_API_KEY", + "auth_token":"YOUR_AUTH_TOKEN", + "from_number":"YOUR_FROM_NUM", + "to_number": [ "YOUR_1ST_TO_NUM", "YOUR_2ND_TO_NUM", "YOUR_3RD_TO_NUM" ] } ``` + ### Optional Parameters -These optional parameters below are applicable to the `pokemon`, `pokestop`, -`gym`, `egg`, and `raid` alarm code of the JSON file. +These optional parameters below are applicable to the `monsters`, `stops`, +`gyms`, `eggs`, and `raids` alarm code of the JSON file. #### Optional Pokemon Parameters | Parameters | Description | Default | @@ -115,7 +116,6 @@ These optional parameters below are applicable to the `pokemon`, `pokestop`, |:------------|:-------------------------------------|:--------------------------------------------------------------| |`message` | Text message for raid updates | `"Level raid against ! Available until <24h_raid_end> ()."` | - #### Example: Alarm Configuration Using Optional Parameters Below is an example of these optional parameters and how they are incorporated @@ -123,33 +123,35 @@ into a functional alarm layout. ```json { - "active": "True", + "twilio_alarm":{ + "active":true, "type":"twilio", "account_sid":"YOUR_API_KEY", "auth_token":"YOUR_AUTH_TOKEN", "from_number":"YOUR_FROM_NUM", "to_number":"YOUR_TO_NUM", - "pokemon":{ + "monsters":{ "from_number":"YOUR_FROM_NUM", "to_number":"YOUR_TO_NUM", - "message": "A wild has appeared! Available until <24h_time> ()." + "message":"A wild has appeared! Available until <24h_time> ()." }, - "pokestop":{ + "stops":{ "from_number":"YOUR_FROM_NUM", "to_number":"YOUR_TO_NUM", - "message": "Someone has placed a lure on a Pokestop! Lure will expire at <24h_time> ()." + "message":"Someone has placed a lure on a Pokestop! Lure will expire at <24h_time> ()." }, - "gym":{ + "gyms":{ "from_number":"YOUR_FROM_NUM", "to_number":"YOUR_TO_NUM", - "message": "A Team gym has fallen! It is now controlled by ." + "message":"A Team gym has fallen! It is now controlled by ." }, - "egg": { - "message": "A level raid is incoming! Egg hatches <24h_hatch_time> ()." + "eggs":{ + "message":"A level raid is incoming! Egg hatches <24h_hatch_time> ()." }, - "raid": { - "message": "Level raid against ! Available until <24h_raid_end> ()." + "raids":{ + "message":"Level raid against ! Available until <24h_raid_end> ()." } + } } ``` **Note:** The above code is to be inserted into the alarms section of @@ -158,14 +160,15 @@ alarms.json. It does not represent the entire alarms.json file. ## How to get the Account SID, Auth Token, and Twilio Number 1. Go to [Twilio](https://www.twilio.com) and click 'Get a free API key'. -Fill out the following form, and enter your phone number to verify your account. +Fill out the following form, and enter your phone number to verify your +account. 2. On the left hand side, click the Home Button and then click Dashboard. The **Account SID** and **Auth Token** will be listed. To reveal the Auth Token, click on the lock next to it. -3. Scroll down and click on '# Phone Numbers'. Then click 'Get Started' to -get your free number. +3. Scroll down and click on '# Phone Numbers'. Then click 'Get Started' +to get your free number. 4. If you wish to text to different numbers, you need to register each before you are allowed to message them. This can be done from the 'Verified Caller diff --git a/docs/alarms/twitter.md b/docs/configuration/alarms/Twitter.md similarity index 66% rename from docs/alarms/twitter.md rename to docs/configuration/alarms/Twitter.md index 08c844bfb..a02697400 100644 --- a/docs/alarms/twitter.md +++ b/docs/configuration/alarms/Twitter.md @@ -31,18 +31,18 @@ access Twitter through the website interface, SMS or mobile device app. PokeAlarm offers the following for Twitter: -* Personalized notifications via [Dynamic Text Substitution](dynamic-text-substitution) +* Personalized notifications via [Dynamic Text Substitution](Dynamic-Text-Substitution) ## Basic Config ### Required Parameters -These `alarm.json` parameters are required to enable the Twitter alarm service: +These `alarms.json` parameters are required to enable the Twitter alarm service: | Parameters | Description | |:-----------------|:---------------------------------------| -| `type` | must be `twitter` | -| `active` |`True` for alarm to be active | +| `type` | Must be `twitter` | +| `active` | `true` for alarm to be active | | `access_token` | Your twitter access token | | `access_secret` | Your twitter access secret | | `consumer_key` | Your twitter consumer key | @@ -52,12 +52,12 @@ These `alarm.json` parameters are required to enable the Twitter alarm service: ```json { - "active": "False", - "type": "twitter", - "access_token": "YOUR_ACCESS_TOKEN", - "access_secret": "YOUR_ACCESS_SECRET", - "consumer_key": "YOUR_CONSUMER_KEY", - "consumer_secret": "YOUR_CONSUMER_SECRET" + "active":true, + "type":"twitter", + "access_token":"YOUR_ACCESS_TOKEN", + "access_secret":"YOUR_ACCESS_SECRET", + "consumer_key":"YOUR_CONSUMER_KEY", + "consumer_secret":"YOUR_CONSUMER_SECRET" } ``` **Note:** The above code is to be inserted into the alarms section of @@ -67,7 +67,7 @@ These `alarm.json` parameters are required to enable the Twitter alarm service: ### Optional Parameters -In addition to the required parameters, several `alarm.json` optional +In addition to the required parameters, several `alarms.json` optional parameters are available to personalize your notifications. Below is an example of these optional parameters and how they are incorporated into a functional alarm layout. @@ -76,58 +76,60 @@ These optional parameters are entered at the same level as `"type":"twitter"`. | Parameters | Description | Default | |:-------------------|:---------------------------------------------------|:-----------------------------| -| `startup_message` | Confirmation post when PokeAlarm initialized | `True` | +| `startup_message` | Confirmation post when PokeAlarm initialized | `true` | -These optional parameters below are applicable to the `pokemon`, `pokestop`, -`gym`, `egg`, and `raid` sections of the JSON file. +These optional parameters below are applicable to the `monsters`, `stops`, +`gyms`, `eggs`, and `raids` sections of the JSON file. - -| Parameters | Description | Default | -|:----------------|:-------------------------------------|:----------------------------------------------| -| `status` | Message to post as status | `A wild has appeared! Available until <24h_time> (). ` | +| Parameters | Description | Default | +|:----------------|:---------------------------|:----------------------------------------------| +| `status` | Message to post as status | `A wild has appeared! Available until <24h_time> (). ` | ### Example: Alarm Configuration Using Optional Parameters ```json { - "active": "False", - "type": "twitter", - "access_token": "YOUR_ACCESS_TOKEN", - "access_secret": "YOUR_ACCESS_SECRET", - "consumer_key": "YOUR_CONSUMER_KEY", - "consumer_secret": "YOUR_CONSUMER_SECRET", - "pokemon":{ - "status": "A wild has appeared! Available until <24h_time> (). " + "twitter_alarm":{ + "active":true, + "type":"twitter", + "access_token":"YOUR_ACCESS_TOKEN", + "access_secret":"YOUR_ACCESS_SECRET", + "consumer_key":"YOUR_CONSUMER_KEY", + "consumer_secret":"YOUR_CONSUMER_SECRET", + "monsters":{ + "status":"A wild has appeared! Available until <24h_time> (). " }, - "pokestop":{ - "status": "Someone has placed a lure on a Pokestop! Lure will expire at <24h_time> (). " + "stops":{ + "status":"Someone has placed a lure on a Pokestop! Lure will expire at <24h_time> (). " }, - "gym":{ + "gyms":{ "status":"A Team gym has fallen! It is now controlled by . " }, - "egg": { - "status": "Level raid incoming! Hatches at <24h_hatch_time> (). " + "eggs":{ + "status":"Level raid incoming! Hatches at <24h_hatch_time> (). " }, - "raid": { - "status": "Raid against ! Available until <24h_raid_end> (). " + "raids":{ + "status":"Raid against ! Available until <24h_raid_end> (). " } + } } ``` **Note:** The above code is to be inserted into the alarms section of `alarms.json`. It does not represent the entire `alarms.json` file. -For more information on text substitutions, please see the main -configuration page. +For more information on text substitutions, please see the main configuration page. ## How to get a Twitter API Key ### Step 1: Create a Twitter account + * Go to [Twitter's signup page](https://twitter.com/signup) -* Fill out all details, and **make sure to include your phone number**. -This is a requirement for remote access, and you will need that to make -the Twitter bot work. +* Fill out all details, and **make sure to include your phone number**. This +is a requirement for remote access, and you will need that to make the Twitter +bot work. ### Step 2: Create a Twitter app + * Go to [apps.twitter.com](https://apps.twitter.com) * Click 'Create New App' button * Fill out the details on the form. You have to give your app a name, @@ -136,6 +138,7 @@ description, and website. This can be a simple place holder like http://www.exam Then click on the ‘Create your Twitter application’ button. ### Step 3: Keys and Access tokens + * After creating your new app, you were redirected to its own page. If you weren’t, go to [apps.twitter.com](https://apps.twitter.com) and click on your apps name. diff --git a/docs/configuration/alarms/index.rst b/docs/configuration/alarms/index.rst new file mode 100644 index 000000000..cf5a8f703 --- /dev/null +++ b/docs/configuration/alarms/index.rst @@ -0,0 +1,159 @@ +Alarms +======= + +.. contents:: Table of Contents + :depth: 2 + :local: + +Prerequisites +------------------------------------- + +This pages assumes the following: + ++ You understand how :doc:`../events/index` and :doc:`../filters/index` work. ++ You understand what how :ref:`DTS ` work. ++ You understand + `JSON formatting `_. ++ You are using the latest version of PokeAlarm. + + +Introduction +------------------------------------- + +An **Alarm** object describes where and how PA is going to send a notification +once it has been properly triggered. When an Event passes a Filter, it is passed +on to the Alarms to trigger notifications. Each Alarm represents settings for +exactly a notification will be sent: which service, what text, what images, and +more. + +.. note:: By default, PA will trigger every Alarm when an Event passes a Filter. + You can override this behavior by using the advanced + :doc:`../Rules-Overview` feature. + +There are several different types of Alarms, each representing a different type +of service: + +.. toctree:: + :maxdepth: 1 + :glob: + + * + +.. note:: It is valid to have multiple Alarms with the same type - a + different Alarm could represent a different channel or a specialized + message instead of just a different service. + + +Creating an Alarm +------------------------------------- + +Each Alarm is containing several key-value a *named* JSON Object containing +several key-value pairs called *alarm parameters*. Some parameters are +_required_ for each alarm, and some are _optional_ parameters. In the case of +optional parameters, default values are generally provided when they aren't +specified. For example, a basic Discord alarm looks like this: + +.. code-block:: json + + "my-discord-alarm": { + "active": true, + "type": "discord", + "webhook_url": "YOUR_WEBHOOK_URL" + } + +The available parameters are different for every type of Alarm - make sure to +check the appropriate wiki page to ensure you are using the correct ones. + + +Customizing Alerts +------------------------------------- + +It is possible to customize the parameters an Alarm uses for different types of +Events. For example, you may want to send all "monsters" to one channel and all +"raids" to another. In this case, *alert level* parameters can be used. These +parameters override the *alarm level* parameters when used. Here is an example +that uses alarm using alert level parameters: + +.. code-block:: json + + "my-discord-alarm": { + "active": true, + "type": "discord", + "webhook_url": "DEFAULT_CHANNEL_URL", + "monsters": { + "webhook_url": "MONSTER_CHANNEL_URL" + }, + "raids": { + "webhook_url": "RAIDS_CHANNEL_URL" + } + } + +In the above example, any *alert level* parameters not set will default to the +*alarm level* parameters - this means "stops", "gyms", and "eggs" will all be +diverted to the channel at `"DEFAULT_CHANNEL_URL"`. + +Additionally, are also several *alert level* parameters that can't be set at the +alarm level. For example, "body" can _only_ be set at the alert level in +Discord: + +.. code-block:: json + + "my-discord-alarm": { + "active": true, + "type": "discord", + "webhook_url": "DEFAULT_CHANNEL_URL", + "monsters": { + "webhook_url": "MONSTER_CHANNEL_URL", + "body": "This is a monster event!" + }, + "raids": { + "webhook_url": "RAIDS_CHANNEL_URL", + "body": "This is a raid event!" + } + } + +Finally, you can use :ref:`DTS ` to customize most parameters based +on the event. This can be used for a variety of reasons: specializing the +message, customizing the channel, or even inserting your own images. Check out +:ref:`DTS ` for information on DTS. + + +Alarms File +------------------------------------- + +An *alarms file* (sometimes referred to as an 'alarms.json') is a file +containing then Alarms that PA uses. By default, PA loads from the +`alarms.json` located in the base folder of the project. See the +:doc:`../Server-Settings` page for instructions on specifying the file by a +different name. This file must contain a single JSON object to load +successfully: + +.. code-block:: json + + { + + } + +Each Alarm will be listed inside this JSON object. It will end up looking +something like this: + +.. code-block:: json + + { + "my-first-alarm": { + "active": true, + "type": "discord", + "webhook_url": "YOUR_WEBHOOK_URL" + }, + "my-second-alarm": { + "active": true, + "type": "slack", + "api_key": "YOUR_API_KEY", + "channel": "general" + }, + "my-third-alarm": { + "active": true, + "type": "discord", + "webhook_url": "YOUR_WEBHOOK_URL" + } + } diff --git a/docs/configuration/events/Egg-DTS.md b/docs/configuration/events/Egg-DTS.md new file mode 100644 index 000000000..f2463ee11 --- /dev/null +++ b/docs/configuration/events/Egg-DTS.md @@ -0,0 +1,49 @@ +# Eggs + +## Overview + +* [Prerequisites](#prerequisites) +* [Available DTS](#available-dts) + +## Prerequisites + +This page assumes: + +1. You have a working scanner. +2. You read and understood the [DTS](Dynamic-Text-Substitution) page. +3. You are using the latest version of PokeAlarm. + +## Available DTS + +| DTS | Description | +|----------------- |-------------------------------------------------------- | +| gym_id | The gym id. Unique per gym. | +| egg_lvl | The tier level of the egg. | +| hatch_time_left | Time remaining until the egg hatches. | +| 12h_hatch_time | Time when the egg will hatch, formatted in 12h. | +| 24h_hatch_time | Time when the egg will hatch, formatted in 24h. | +| raid_time_left | Time remaining until the raid ends. | +| 12h_raid_end | Time when the raid ends, formatted in 12h. | +| 24h_raid_end | Time when the raid ends, formatted in 24h. | +| lat | Latitude of the raid. | +| lng | Longitude of the raid. | +| lat_5 | Latitude of the raid, truncated to 5 decimal places. | +| lng_5 | Longitude of the raid, truncated to 5 decimal places. | +| distance | Distance of the raid from the set location. | +| direction | Cardinal direction of the raid, from the set location. | +| gmaps | Google Maps link to the location of the raid. | +| applemaps | Apple Maps link to the location of the raid. | +| geofence | Geofence around the event. See 'Geofences' section from [filters](Filters-Overview#geofence) page.| +| weather_id | Weather ID of the egg. | +| weather | Weather name of the egg. | +| weather_or_empty | Weather name of the egg, or empty string if unknown. | +| weather_emoji | Weather emoji of the egg, or empty string if unknown. | +| gym_name | * The name of the gym. | +| gym_description | * The description of the gym. | +| gym_image | * The url to the image of the gym. | +| team_id | The id of the team currently in control of the gym. | +| team_name | The team currently in control of the gym. | +| team_leader | The leader of the team currently in control of the gym. | + +\* Gym Info requires caching. See the +[Object Caching](Object-Caching) page for more information. diff --git a/docs/dts/gym-dts.md b/docs/configuration/events/Gym-DTS.md similarity index 91% rename from docs/dts/gym-dts.md rename to docs/configuration/events/Gym-DTS.md index 35ae9fc8b..7bbdc4d4c 100644 --- a/docs/dts/gym-dts.md +++ b/docs/configuration/events/Gym-DTS.md @@ -1,4 +1,4 @@ -# Gym DTS +# Gyms ## Overview @@ -10,7 +10,7 @@ This page assumes: 1. You have a working scanner. -2. You read and understood the [DTS](dynamic-text-substitution) page. +2. You read and understood the [DTS](Dynamic-Text-Substitution) page. 3. You are using the latest version of PokeAlarm. ## Available DTS @@ -26,7 +26,7 @@ This page assumes: | direction | Cardinal direction of the gym, from the set location. | | gmaps | Google Maps link to the location of the gym. | | applemaps | Apple Maps link to the location of the gym. | -| geofence | Geofence around the event. See 'Geofences' section from [filters](filters-overview#geofence) page.| +| geofence | Geofence around the event. See 'Geofences' section from [filters](Filters-Overview#geofence) page.| | old_team | The team in control of the gym previously. | | old_team_id | The id of the team in control of the gym previously. | | old_team_leader | The leader of the team in control of the gym previously. | @@ -40,4 +40,4 @@ This page assumes: | guard_count | number of guards assigned to a gym. | \* Gym Info require caching. See the -[Object Caching](object-caching) page for more information. +[Object Caching](Object-Caching) page for more information. diff --git a/docs/dts/raid-dts.md b/docs/configuration/events/Raid-DTS.md similarity index 67% rename from docs/dts/raid-dts.md rename to docs/configuration/events/Raid-DTS.md index 9f5738d12..14e6463fe 100644 --- a/docs/dts/raid-dts.md +++ b/docs/configuration/events/Raid-DTS.md @@ -1,4 +1,4 @@ -# Raid DTS +# Raids ## Overview @@ -10,7 +10,7 @@ This page assumes: 1. You have a working scanner. -2. You read and understood the [DTS](dynamic-text-substitution) page. +2. You read and understood the [DTS](Dynamic-Text-Substitution) page. 3. You are using the latest version of PokeAlarm. ## Available DTS @@ -22,6 +22,14 @@ This page assumes: | raid_time_left | Time remaining until the raid ends. | | 12h_raid_end | Time when the raid ends, formatted in 12h. | | 24h_raid_end | Time when the raid ends, formatted in 24h. | +| type1 | Name of the monster's primary type. | +| type1_or_empty | Name of the monster's primary type, or empty string if unknown. | +| type1_emoji | Emoji for the monster's primary type, or empty string if unknown. | +| type2 | Name of the monster's secondary type. | +| type2_or_empty | Name of the monster's secondary type, or empty string if unknown. | +| type2_emoji | Emoji for the monster's secondary type, or empty string if unknown. | +| types | Monster's type formatted as "type1/type2". | +| types_emoji | Type emojis for the monster as "type1+type2", or empty string if unknown. | | lat | Latitude of the raid. | | lng | Longitude of the raid. | | lat_5 | Latitude of the raid, truncated to 5 decimal places. | @@ -30,7 +38,16 @@ This page assumes: | direction | Cardinal direction of the raid, from the set location. | | gmaps | Google Maps link to the location of the raid. | | applemaps | Apple Maps link to the location of the raid. | -| geofence | Geofence around the event. See 'Geofences' section from [filters](filters-overview#geofence) page.| +| geofence | Geofence around the event. See 'Geofences' section from [filters](Filters-Overview#geofence) page.| +| weather_id | Weather ID of the raid. | +| weather | Weather name of the raid. | +| weather_or_empty | Weather name of the raid, or empty string if unknown. | +| weather_emoji | Weather emoji of the raid, or empty string if unknown. | +| boosted_weather_id | Return weather ID if monster is boosted. | +| boosted_weather | Return weather name if monster is boosted. | +| boosted_weather_or_empty | Return weather name if monster is boosted, or empty string if unknown. | +| boosted_weather_emoji | Return weather emoji if monster is boosted, or empty string if unknown. | +| boosted_or_empty | Return `boosted` if monster is boosted, or empty string if not. | | mon_name | The name of the monster's species. | | mon_id | ID of the monster's species. | | mon_id_3 | ID of the monster's species, padded to 3 digits. | @@ -56,4 +73,4 @@ This page assumes: | team_leader | The leader of the team currently in control of the gym. | \* Gym Info requires caching. See the -[Object Caching](object-caching) page for more information. +[Object Caching](Object-Caching) page for more information. diff --git a/docs/dts/stop-dts.md b/docs/configuration/events/Stop-DTS.md similarity index 91% rename from docs/dts/stop-dts.md rename to docs/configuration/events/Stop-DTS.md index 023b3094b..febc1faab 100644 --- a/docs/dts/stop-dts.md +++ b/docs/configuration/events/Stop-DTS.md @@ -1,4 +1,4 @@ -# Stop DTS +# Stops ## Overview @@ -10,7 +10,7 @@ This page assumes: 1. You have a working scanner. -2. You read and understood the [DTS](dynamic-text-substitution) page. +2. You read and understood the [DTS](Dynamic-Text-Substitution) page. 3. You are using the latest version of PokeAlarm. ## Available DTS @@ -29,4 +29,4 @@ This page assumes: | direction | Cardinal direction of the stop, from the set location. | | gmaps | Google Maps link to the location of the stop. | | applemaps | Apple Maps link to the location of the stop. | -| geofence | Geofence around the event. See 'Geofences' section from [filters](filters-overview#geofence) page.| +| geofence | Geofence around the event. See 'Geofences' section from [filters](Filters-Overview#geofence) page.| diff --git a/docs/configuration/events/index.rst b/docs/configuration/events/index.rst new file mode 100644 index 000000000..e9b0a8f69 --- /dev/null +++ b/docs/configuration/events/index.rst @@ -0,0 +1,81 @@ +Events +======= + +.. contents:: Table of Contents + :depth: 1 + :local: + +Prerequisites +------------------------------------- + +This guide assumes the following: + ++ You are using the latest version of PokeAlarm. + + +Introduction +------------------------------------- + +In PokeAlarm, an **Event** represents something of interest that has happened in +the World. Events can be several different things - a new monster spawning, a +gym changing teams, or a new raid appearing. There are 5 different categories +for Events, each with different information: + +.. toctree:: + :maxdepth: 1 + + monster-events + Stop-DTS + Gym-DTS + Egg-DTS + Stop-DTS + +.. _events_dts +Dynamic Text Substitutions +------------------------------------- + +Dynamic Text Substitutions (or DTS) are special text that can be used to +customize notifications based on the triggered Event. These values are +surrounded with diamond brackets (`<` and `>`) and will by substituted with a +value based on the Event in question. For example, a notification with the +following text: + +.. code-block:: none + + A wild has appeared! It has % IVs! + +Could be substituted to the following: + +.. code-block:: none + + A wild Charmander has appeared! It has 100.0% IVs! + +Or, it could appear like this: + +.. code-block:: none + + A wild Pidgey has appeared! It has 55.6% IVs! + +The DTS that you can use vary by type of Event - make sure to check the page for +each type to which DTS can be used. + + +Missing Information +------------------------------------- + +.. note:: You can accept or reject an event based on the state of missing + information. See the ``is_missing_info`` restriction on the + :doc:`../filters/index` page for instructions. + +When PA doesn't have the correct information needed to correctly do a +subsitution, it may replace it with one of the following: + ++ ? ++ ??? ++ unknown + +This can happen for a variety of reasons - but generally is because the scanner +did not send the information needed in the webhook. PA does it's best to fill in +the gaps by sharing and caching information between seperate webhooks (like gym +names or teams), but some info may require a settings update with your scanner +(like IVs or CP). diff --git a/docs/configuration/events/monster-events.rst b/docs/configuration/events/monster-events.rst new file mode 100644 index 000000000..9ee32c5bc --- /dev/null +++ b/docs/configuration/events/monster-events.rst @@ -0,0 +1,215 @@ +Monsters +=========== + +.. contents:: Table of Contents + :depth: 2 + :local: + + +Prerequisites +------------------------------------- + +This pages assumes the following: + +1. You understand what :doc:`index` are. +2. You understand what :ref:`DTS ` are. +3. You are using the latest version of PokeAlarm. + + +Description +------------------------------------- + +A **Monster Event** represents when a monster spawns in the wild. + + +Available DTS +------------------------------------- + +General +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +=================== ============================================================ +DTS Description +=================== ============================================================ +mon_name The name of the monster's species. +mon_id ID of the monster's species. +mon_id_3 ID of the monster's species, padded to 3 digits. +form Form name of the monster. +form_or_empty Form name of the monster, or empty string if unknown. +form_id Form ID for the monster. +form_id_3 Form ID of the monster, padded to 3 digits. +type1 Name of the monster's primary type. +type1_or_empty Name of the monster's primary type, or empty string if + unknown. +type1_emoji Emoji for the monster's primary type, or empty string if + unknown. +type2 Name of the monster's secondary type. +type2_or_empty Name of the monster's secondary type, or empty string if + unknown. +type2_emoji Emoji for the monster's secondary type, or empty string if + unknown. +types Monster's type formatted as "type1/type2". +types_emoji Type emojis for the monster as "type1+type2", or empty + string if unknown. +=================== ============================================================ + + +Stats +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. note:: + + The DTS in this section require your scanner to encounter the target + monsters to get the proper information. This typically requires special + settings and accounts - see the documentation for your scanner for + specifics. + +=================== ============================================================ +DTS Description +=================== ============================================================ +mon_lvl Level of the monster. +cp Combat Points of the monster. +iv Individual Values percentage of the monster. +iv_0 IVs, rounded to the nearest integer. +iv_2 IVs, rounded to 2 decimal places. +atk Attack IV of the monster. +def Defense IV of the monster. +sta Stamina IV of the monster. +base_catch Base catch rate of the monster. +great_catch Catch rate of the monster when using a great ball. +ultra_catch Catch rate of the monster when using a super ball. +=================== ============================================================ + + +Moves +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. note:: + + The DTS in this section require your scanner to encounter the target + monsters to get the proper information. This typically requires special + settings and accounts - see the documentation for your scanner for + specifics. + +=================== ============================================================ +DTS Description +=================== ============================================================ +quick_move Name of the monster's quick move. +quick_id ID of the monster's quick move. +quick_damage Damage of the monster's quick move. +quick_dps DPS of the monster's quick move. +quick_duration Duration of the monster's quick move. +quick_energy Energy generated by the quick move. +quick_type Type of the monster's quick move. +quick_type_emoji Emoji representing the monster's quick move. +quick_type_id ID of the type of the monster's quick move. +charge_move Name of the monster's charge move. +charge_id ID of the monster's charge move. +charge_damage Damage of the monster's charge move. +charge_dps DPS of the monster's charge move. +charge_duration Duration of the monster's charge move. +charge_energy Energy cost by the quick move. +charge_type Type of the monster's charge move. +charge_type_emoji Emoji representing the monster's charge move. +charge_type_id ID of the type of the monster's charge move. +atk_grade Offensive grade of the monster's moveset. +def_grade Defensive grade of the monster's moveset. +=================== ============================================================ + + +Cosmetic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. note:: + + The DTS in this section require your scanner to encounter the target + monsters to get the proper information. This typically requires special + settings and accounts - see the documentation for your scanner for + specifics. + +=================== ============================================================ +DTS Description +=================== ============================================================ +costume Costume of the monster. +costume_or_empty Costume of the monster, or an empty string if unknown. +costume_id Costume ID of the monster. +costume_id_3 Costume ID of the monster, formatted to there digits. +gender Gender of the monster, represented as a single character. +height Height of the monster. +weight Weight of the monster. +size Estimated size of the monster. +big_karp Return `big` if Magikarp weight is >=13.13. +tiny_rat Return `tiny` if Rattata weight is <=2.41. +=================== ============================================================ + + +Location +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. warning:: + + Geofences are evaluated on a per Filter basis - ```` will always + be unknown if it passes through a Filter without a ``geofences`` restriction + applied. + +=================== ============================================================ +DTS Description +=================== ============================================================ +distance Distance of the monster from the set location. +direction Cardinal direction of the monster, from the set location. +lat Latitude of the monster. +lng Longitude of the monster. +lat_5 Latitude of the monster, truncated to 5 decimal places. +lng_5 Longitude of the monster, truncated to 5 decimal places. +gmaps Google Maps link to the location of the monster. +applemaps Apple Maps link to the location of the monster. +geofence Geofence the Event is located in. +=================== ============================================================ + + +Time +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +=================== ============================================================ +DTS Description +=================== ============================================================ +time_left Time remaining until the monster expires. +12h_time Time that the monster will disappear, in a 12h format. +24h_time Time that the monster will disappear, in a 24h format. +=================== ============================================================ + + +Weather +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +======================== ======================================================= +DTS Description +======================== ======================================================= +weather_id Weather ID of the monster. +weather Weather name of the monster. +weather_or_empty Weather name of the monster, or empty string if + unknown. +weather_emoji Weather emoji of the monster, or empty string if + unknown. +boosted_weather_id Return weather ID if monster is boosted. +boosted_weather Return weather name if monster is boosted. +boosted_weather_or_empty Return weather name if monster is boosted, or empty + string if unknown. +boosted_weather_emoji Return weather emoji if monster is boosted, or empty + string if unknown. +boosted_or_empty Return `boosted` if monster is boosted, or empty string if + not. +======================== ======================================================= + + +Miscellaneous +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +=================== ============================================================ +DTS Description +=================== ============================================================ +encounter_id The encounter id. Unique per monster spawn. +spawn_start Estimated time that the monster spawn starts. +spawn_end Estimated time that the monster spawn ends. +spawn_verified Whether this spawn times have been verified. +=================== ============================================================ diff --git a/docs/filters/egg-filters.md b/docs/configuration/filters/Egg-Filters.md similarity index 84% rename from docs/filters/egg-filters.md rename to docs/configuration/filters/Egg-Filters.md index 3d54604b5..db3f4bc05 100644 --- a/docs/filters/egg-filters.md +++ b/docs/configuration/filters/Egg-Filters.md @@ -1,4 +1,4 @@ -# Egg Filters +# Eggs ## Overview @@ -14,8 +14,7 @@ This page assumes: 2. You are familiar with [JSON formatting](https://www.w3schools.com/js/js_json_intro.asp). 3. You are using the latest version of PokeAlarm. -4. You have read and understood the [Filters Overview](filters-overview) -page. +4. You have read and understood the [Filters Overview](Filters-Overview) page. ## Introduction @@ -24,7 +23,7 @@ The `"eggs"` section has three distinct settings. | Setting Name | Description | | -------------------- |---------------------------------------------------------- | | enabled | Process Egg Events only if `true` | -| defaults | See [filters](filters-overview#defaults) page on defaults | +| defaults | See [filters](Filters-Overview#defaults) page on defaults | | filters | See below parameters | ## Parameters @@ -41,8 +40,8 @@ Egg Filters can use the following parameters to filter Egg Events: | max_egg_lvl | Maximum level of the egg when hatched. | `5` | | current_teams | List of allowed current teams, by id or name. | `[ "Instinct", "Mystic" ]` | | gym_name_contains | List of regex's required to be in the gym name. | `[ "Sponsored" , "West\\sOak"]` | -| geofences | See [filters](filters-overview#geofence) page on 'Geofences' | `[ "geofence1", "geofence2" ]` | -| custom_dts | See [filters](filters-overview#custom-dts) page on 'Custom DTS' | `{ "dts1" : "substitution" }` | -| is_missing_info | See [filters](filters-overview#missing-info) page on 'Missing Info' | `true` or `false` | +| geofences | See [filters](Filters-Overview#geofence) page on 'Geofences' | `[ "geofence1", "geofence2" ]` | +| custom_dts | See [filters](Filters-Overview#custom-dts) page on 'Custom DTS' | `{ "dts1" : "substitution" }` | +| is_missing_info | See [filters](Filters-Overview#missing-info) page on 'Missing Info' | `true` or `false` | \* Floats can use `"inf"` to represent infinity diff --git a/docs/filters/gym-filters.md b/docs/configuration/filters/Gym-Filters.md similarity index 85% rename from docs/filters/gym-filters.md rename to docs/configuration/filters/Gym-Filters.md index 1558f49d7..90e4ba363 100644 --- a/docs/filters/gym-filters.md +++ b/docs/configuration/filters/Gym-Filters.md @@ -1,4 +1,4 @@ -# Gym Filters +# Gyms ## Overview @@ -14,8 +14,7 @@ This page assumes: 2. You are familiar with [JSON formatting](https://www.w3schools.com/js/js_json_intro.asp). 3. You are using the latest version of PokeAlarm. -4. You have read and understood the [Filters Overview](filters-overview) -page. +4. You have read and understood the [Filters Overview](Filters-Overview) page. ## Introduction @@ -25,7 +24,7 @@ The `"gyms"` section has four distinct settings. | -------------------- |---------------------------------------------------------- | | enabled | Process Gym Events only if `true` | | ignore_neutral | If `true`, ignore uncontested gyms | -| defaults | See [filters](filters-overview#defaults) page on defaults | +| defaults | See [filters](Filters-Overview#defaults) page on defaults | | filters | See below parameters | ## Parameters @@ -41,8 +40,8 @@ Gym Filters can use the following parameters to filter Gym Events: | gym_name_contains | List of regex's required to be in the gym name. | `[ "Sponsored" , "West\\sOak"]` | | min_slots | Minimum number of guard slots available. | `2` | | max_slots | Maximum number of guard slots available. | `6` | -| geofences | See [filters](filters-overview#geofence) page on 'Geofences'. | `[ "geofence1", "geofence2" ]` | -| custom_dts | See [filters](filters-overview#custom-dts) page on 'Custom DTS'. | `{ "dts1" : "substitution" }` | -| is_missing_info | See [filters](filters-overview#missing-info) page on 'Missing Info'. | `true` or `false` | +| geofences | See [filters](Filters-Overview#geofence) page on 'Geofences'. | `[ "geofence1", "geofence2" ]` | +| custom_dts | See [filters](Filters-Overview#custom-dts) page on 'Custom DTS'. | `{ "dts1" : "substitution" }` | +| is_missing_info | See [filters](Filters-Overview#missing-info) page on 'Missing Info'. | `true` or `false` | \* Floats can use `"inf"` to represent infinity diff --git a/docs/filters/monster-filters.md b/docs/configuration/filters/Monster-Filters.md similarity index 89% rename from docs/filters/monster-filters.md rename to docs/configuration/filters/Monster-Filters.md index f86915585..4c2c9d58a 100644 --- a/docs/filters/monster-filters.md +++ b/docs/configuration/filters/Monster-Filters.md @@ -1,4 +1,4 @@ -# Monster Filters +# Monsters ## Overview @@ -14,8 +14,7 @@ This page assumes: 2. You are familiar with [JSON formatting](https://www.w3schools.com/js/js_json_intro.asp). 3. You are using the latest version of PokeAlarm. -4. You have read and understood the [Filters Overview](filters-overview) -page. +4. You have read and understood the [Filters Overview](Filters-Overview) page. ## Introduction @@ -24,7 +23,7 @@ The `"monsters"` section has three distinct settings. | Setting Name | Description | | -------------------- |---------------------------------------------------------- | | enabled | Process Monster Events only if `true` | -| defaults | See [filters](filters-overview#defaults) page on defaults | +| defaults | See [filters](Filters-Overview#defaults) page on defaults | | filters | See below parameters | ## Parameters @@ -60,8 +59,9 @@ Monster Filters can use the following parameters to filter Events: | min_weight | Minimum weight of the monster. | `0.0` * | | max_weight | Maximum weight of the monster. | `250.0` * | | sizes | Array of acceptable sizes. Options: `"tiny", "small", "normal", "large", "big"` | `[ "tiny", "big" ]` | -| geofences | See [filters](filters-overview#geofence) page on 'Geofences' | `[ "geofence1", "geofence2" ]` | -| custom_dts | See [filters](filters-overview#custom-dts) page on 'Custom DTS' | `{ "dts1" : "substitution" }` | -| is_missing_info | See [filters](filters-overview#missing-info) page on 'Missing Info' | `true` or `false` | +| weather | Accepted weathers, by id or name. | `[ "Clear", 2 ]` | +| geofences | See [filters](Filters-Overview#geofence) page on 'Geofences' | `[ "geofence1", "geofence2" ]` | +| custom_dts | See [filters](Filters-Overview#custom-dts) page on 'Custom DTS' | `{ "dts1" : "substitution" }` | +| is_missing_info | See [filters](Filters-Overview#missing-info) page on 'Missing Info' | `true` or `false` | \* Floats can use `"inf"` to represent infinity diff --git a/docs/filters/raid-filters.md b/docs/configuration/filters/Raid-Filters.md similarity index 84% rename from docs/filters/raid-filters.md rename to docs/configuration/filters/Raid-Filters.md index 6c308145a..1ee3eca45 100644 --- a/docs/filters/raid-filters.md +++ b/docs/configuration/filters/Raid-Filters.md @@ -1,4 +1,4 @@ -# Raid Filters +# Raids ## Overview @@ -14,8 +14,7 @@ This page assumes: 2. You are familiar with [JSON formatting](https://www.w3schools.com/js/js_json_intro.asp). 3. You are using the latest version of PokeAlarm. -4. You have read and understood the [Filters Overview](filters-overview) -page. +4. You have read and understood the [Filters Overview](Filters-Overview) page. ## Introduction @@ -24,7 +23,7 @@ The `"raids"` section has three distinct settings. | Setting Name | Description | | -------------------- |---------------------------------------------------------- | | enabled | Process Raid Events only if `true` | -| defaults | See [filters](filters-overview#defaults) page on defaults | +| defaults | See [filters](Filters-Overview#defaults) page on defaults | | filters | See below parameters | ## Parameters @@ -46,8 +45,9 @@ Raid Filters can use the following parameters to filter Raid Events: | charge_moves | Accepted charge moves, by id or name. | `[ "Sludge Bomb", "Seed Bomb"]` | | current_teams | List of allowed current teams, by id or name. | `[ "Instinct", "Mystic" ]` | | gym_name_contains | List of regex's required to be in the gym name. | `[ "Sponsored" , "West\\sOak"]` | -| geofences | See [filters](filters-overview#geofence) page on 'Geofences' | `[ "geofence1", "geofence2" ]` | -| custom_dts | See [filters](filters-overview#custom-dts) page on 'Custom DTS' | `{ "dts1" : "substitution" }` | -| is_missing_info | See [filters](filters-overview#missing-info) page on 'Missing Info' | `true` or `false` | +| weather | Accepted weathers, by id or name. | `[ "Clear", 2 ]` | +| geofences | See [filters](Filters-Overview#geofence) page on 'Geofences' | `[ "geofence1", "geofence2" ]` | +| custom_dts | See [filters](Filters-Overview#custom-dts) page on 'Custom DTS' | `{ "dts1" : "substitution" }` | +| is_missing_info | See [filters](Filters-Overview#missing-info) page on 'Missing Info' | `true` or `false` | \* Floats can use `"inf"` to represent infinity diff --git a/docs/filters/stop-filters.md b/docs/configuration/filters/Stop-Filters.md similarity index 81% rename from docs/filters/stop-filters.md rename to docs/configuration/filters/Stop-Filters.md index b21c9dc69..2b4d8c7ca 100644 --- a/docs/filters/stop-filters.md +++ b/docs/configuration/filters/Stop-Filters.md @@ -1,4 +1,4 @@ -# Stop Filters +# Stops ## Overview @@ -14,8 +14,7 @@ This page assumes: 2. You are familiar with [JSON formatting](https://www.w3schools.com/js/js_json_intro.asp). 3. You are using the latest version of PokeAlarm. -4. You have read and understood the [Filters Overview](filters-overview) -page. +4. You have read and understood the [Filters Overview](Filters-Overview) page. ## Introduction @@ -24,7 +23,7 @@ The `"stops"` section has three distinct settings. | Setting Name | Description | | -------------------- |---------------------------------------------------------- | | enabled | Process Stop Events only if `true` | -| defaults | See [filters](filters-overview#defaults) page on defaults | +| defaults | See [filters](Filters-Overview#defaults) page on defaults | | filters | See below parameters | ## Parameters @@ -37,8 +36,8 @@ Stop Filters can use the following parameters to filter Stop Events: | max_dist | Max distance of event from set location in miles or meters (depending on settings). | `1000.0` *| | min_time_left | Minimum time (in seconds) until lure ends. | `1000` | | max_time_left | Maximum time (in seconds) until lure ends. | `2400` | -| geofences | See [filters](filters-overview#geofence) page on 'Geofences' | `[ "geofence1", "geofence2" ]` | -| custom_dts | See [filters](filters-overview#custom-dts) page on 'Custom DTS' | `{ "dts1" : "substitution" }` | -| is_missing_info | See [filters](filters-overview#missing-info) page on 'Missing Info' | `true` or `false` | +| geofences | See [filters](Filters-Overview#geofence) page on 'Geofences' | `[ "geofence1", "geofence2" ]` | +| custom_dts | See [filters](Filters-Overview#custom-dts) page on 'Custom DTS' | `{ "dts1" : "substitution" }` | +| is_missing_info | See [filters](Filters-Overview#missing-info) page on 'Missing Info' | `true` or `false` | \* Floats can use `"inf"` to represent infinity diff --git a/docs/configuration/filters/index.rst b/docs/configuration/filters/index.rst new file mode 100644 index 000000000..7d3bcaa57 --- /dev/null +++ b/docs/configuration/filters/index.rst @@ -0,0 +1,204 @@ +Filters +======== + +.. contents:: Table of Contents + :depth: 2 + :local: + + +Prerequisites +------------------------------------- + +This pages assumes the following: + ++ You understand how :doc:`../events/index` work. ++ You understand + `JSON formatting `_. ++ You are using the latest version of PokeAlarm. + + +Introduction +------------------------------------- + +A **Filter** object is what PA uses to decide if it is worth of a notification +or not. When PA receives a new Event, it is compared one by one against the +Filters. When PA finds a matching Filter, it triggers a notification. + +.. note:: By default, PA processes Filters in the order they are listed in the + filters file and only triggers on the first match. You can override + this behavior by using the advanced :doc:`../Rules-Overview` feature. + +There are 5 different types of Filters, each matching a category of Events: + +.. toctree:: + :maxdepth: 1 + + Monster-Filters + Stop-Filters + Gym-Filters + Egg-Filters + Raid-Filters + + +Creating a Filter +------------------------------------- + +A Filter is represented as a *named* JSON Object containing several key-value +pairs called *restrictions*. Each restriction represents a limit on which Events +are allowed to pass. Restrictions are *explicit* (they must be listed to be +checked) and *conjunctive* (all restrictions must be passed to match) A Filter +with no restrictions would allow any Event to pass: + +.. code-block:: json + + "all-filter-name": { + } + +.. note:: Filters will *only* check an Event's value if a restriction requires + it. A Monster's IV value won't be checked unless either ``min_iv`` or + ``max_iv`` is set. As such, you should avoid setting restrictions + unless you intend to Filter on those values. + +To add a ``monsters`` restriction, you simply describe it inside the object. The +following would only allow Monsters of certain species: + +.. code-block:: json + + "only-starters": { + "monsters": [ "Charmander", "Squirtle", "Bulbasaur"] + } + +Additional restrictions are added in the same way: + +.. code-block:: json + + "only-high-iv-lvl-starters": { + "monsters": [ "Charmander", "Squirtle", "Bulbasaur"], + "min_iv": 90.0, + "min_lvl": 15 + } + +Each type of Filter has different restrictions, so make sure to check each page +carefully. + + +Filters File +------------------------------------- + +A *filters file* (sometimes referred to as a 'filters.json') is a file +containing then Filters that PA uses. By default, PA loads from the +`filters.json` located in the base folder of the project. See the +:doc:`../Server-Settings` page for instructions on specifying the file by a +different name. This file must contain a single JSON object to load +successfully: + +.. code-block:: json + + { + + } + +Inside this JSON object, you need to add sections for each type of Filter you +wish to add. Sections are optional, and unspecified sections will be disabled +by default. + +.. code-block:: json + + { + "monsters": { + }, + "stops": { + }, + "gyms": { + }, + "eggs": { + }, + "raids": { + } + } + +Each section can contain the following sub-sections: + +The ``enabled`` sub-section is a boolean value of either ``true`` or ``false`` +that enables or disables processing of that type of Event. + +The ``defaults`` sub-section is a JSON object containing default restrictions +that are applied to all Filters in the section, unless already specified. For +example, adding ``"min_iv": 90`` in the monsters defaults section will add that +restriction to all Filters - unless they already have a ``min_iv`` restriction. + +.. note:: You can use ``null`` to ignore a default value. Even with a default + ``"monsters"`` restriction set, ``"monsters": null`` inside a filter + acts as if that the monster restriction is not set. + +The ``filters`` section is simply a JSON object containing the Filters, +configured as described above. Here is an example of just the monsters section: + +.. code-block:: json + + "monsters": { + "enabled": true, + "defaults": {}, + "filters": { + "filter_by_monsters_example": { + "monsters": ["Bulbasaur", "Charmander", 7] + }, + "filter_by_ivs_example": { + "min_atk": 0, "max_atk": 15, + "min_iv": 0.0, "max_iv": 100 + }, + "filter_by_moves_example": { + "monsters": ["Bulbasaur"], + "quick_moves": ["Vine Whip", "Tackle"], + "charge_moves": ["Sludge Bomb", "Seed Bomb"] + } + } + } + + +Advanced +------------------------------------- + +Missing Information +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +As described on the :doc:`../events/index` page, sometimes an Event is missing +information. Erring on the side of caution, a Filter will skip a restriction if +the information needed to check it is missing. If your use the ``min_iv`` info, +but the IV is 'unknown' for any reason, then by default Filter will skip +checking a restriction as if it wasn't specified. + +The ``is_missing_info`` restriction can be used to require information to be +missing or not. When ``"is_missing_info": false`` is set, the Filter requires +all *checked* values to be known. When ``"is_missing_info": true`` is set, the +Filter does the opposite - at least one *checked* value must be unknown to pass. + +.. warning:: The ``is_missing_info`` restriction only affects *checked* + information. Filters only check information if a restriction + requires it. For example, IV is only checked if either ``min_iv`` or + ``max_iv`` is set. The same is true for other values. + +Custom DTS +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**Custom DTS** is a feature that allows you to specify *filter specific* DTS to +an Event when it passes a filter. The ``custom_dts`` is a JSON object of +key-value pairs. For example, the ```` DTS would be either +"Grass starters" or "Fire starters" depending on the Filter it passed with the +following configuration: + +.. warning:: Using ``custom_dts`` at a Filter level will override any custom + dts from "defaults" level - not just the specific DTS used. + +.. code-block:: json + + "filters": { + "filter_name_1": { + "monsters": [ 1, 2, 3 ], + "custom_dts": { "family": "Grass starters" } + }, + "filter_name_2": { + "monsters": [ 4, 5, 6 ], + "custom_dts": { "family": "Fire starters" } + } + } diff --git a/docs/contents/installation.md b/docs/contents/installation.md deleted file mode 100644 index 4926c4d65..000000000 --- a/docs/contents/installation.md +++ /dev/null @@ -1,70 +0,0 @@ -# Installation - -## Overview - -This guide will walk you through the initial setup of PokeAlarm. - -* [Prerequisites](#prerequisites) -* [Installation](#installation) -* [Running PokeAlarm](#running-pokealarm) -* [Updating PokeAlarm](#updating-pokealarm) - -## Prerequisites - -This guide assumes the following: - -1. You have [Python 2.7](https://www.python.org/download/releases/2.7/) - successfully installed -2. You have [Git](https://git-scm.com/downloads) successfully installed -3. You have [RocketMap](https://github.com/RocketMap/RocketMap) or another - supported scanner successfully installed. -4. You have either Notepad++, Nano, or Vi(m) installed. Do **NOT** use or - open any files with Notepad or TextEdit - they will break your files! - -## Installation - -1. **Clone PokeAlarm locally** - Create a new folder to install PokeAlarm (it - is recommended you store it in a different folder than your scanner). Use - `git clone https://github.com/PokeAlarm/PokeAlarm.git` to create a local - copy of the project. - -2. **Install requirements** - Navigate into the root folder of your PokeAlarm - installation. Run `pip install -r requirements.txt --upgrade`. - This will install and update the packages that PokeAlarm needs to run. - -3. **Create your Filters configuration file** - Copy and paste - `alarms.json.example`. Rename the copy to `alarms.json`. This file will - tell PokeAlarm what information it should send. - -4. **Create your Alarms configuration file** - Copy and paste - `filters.json.example`. Rename the copy to `filters.json`. This file will - tell PokeAlarm what the alerts to say and what service to send them on. - -5. **Finish configuring PokeAlarm** - Now you should configure PokeAlarm. - Use the [Configuration Guide](started-guide) for more detailed instructions - on how to personalize PokeAlarm to fit your needs. - - -## Running PokeAlarm - -1. **Start PokeAlarm** - Run the command `python start_pokealarm.py` to - have PokeAlarm start and begin listening for information via webhooks. - **Note:** PokeAlarm installs some dependencies on the fly. If you encounter - errors when first running a new service, try running as root (with `sudo`) - to insure it can install the dependency. - -2. **Send webhooks to PokeAlarm** - Make sure you are sending your webhooks - to PokeAlarm by adding PokeAlarm's address to your scanner. If you are using - RocketMap (and the default PokeAlarm settings), add - `-wh http://127.0.0.1:4000` to your start up command or - `webhook:http://127.0.0.1:4000` to your `config.ini` file. - -## Updating PokeAlarm -Updating PokeAlarm is a simple process, provided you haven't changed any -files you weren't supposed to. For this reason, it is highly suggested not -to edit any files that end in the `.py` extension. -1. Open a command line in the root folder of your PokeAlarm installation. -2. Run `git pull`. -3. Run `pip install -r requirements.txt`. -4. Make sure to checkout the [Patch Notes](patch-notes) to see if any updates - to your config files are necessary. diff --git a/docs/dts/dynamic-text-substitution.md b/docs/dts/dynamic-text-substitution.md deleted file mode 100644 index 1b6fb781b..000000000 --- a/docs/dts/dynamic-text-substitution.md +++ /dev/null @@ -1,105 +0,0 @@ -# DTS Overview - -## Overview - -* [Prerequisites](#prerequisites) -* [Introduction](#introduction) -* [Available DTS](#available-dts) -* [Advanced](#advanced) - * [Reverse Geocoding](#reverse-geocoding) - * [Distance Matrix](#distance-matrix) - -## Prerequisites - -This guide assumes: - -1. You have a working scanner. -3. You have read and understood the [Alarms](alarms) page. -4. You are comfortable with the layout of `alarms.json`. -5. You are using the latest version of PokeAlarm. - -## Introduction - -Dynamic Text Substitutions (or DTS) are special text values that -that are automatically change to useful text. These text values, when -surrounded with diamond brackets (`<` and `>`) are replaced by a value -customized to fit the Event. For example, the following text: - -`A wild has appeared! It has % IVs!` - -Will appear as the following if a perfect Charmander is sent: - -> A wild Charmander has appeared! It has 100.0% IVs! - -Or, it could appear like this if a mediocre Pidgey is sent: - -> A wild Pidgey has appeared! It has 55.6% IVs! - -If an Event doesn't have the correct information, it may display either -`?`, `???`, or `unknown` as the substitution. - -**Warning:** ONLY use the `alarms.json` to customize your notifications. -Editing other files may not work as correctly! - -## Available DTS - -The DTS that are available depend on the type of Event that trigger's a -notification. Currently PA supports five types of Events: -[Monsters](monster-dts), [Stops](stop-dts), [Gyms](gym-dts), -[Eggs](egg-dts), and [Raids](raid-dts). - -## Advanced - -### Reverse Geocoding - -**Reverse Geocoding** is a process that to get the name or data of -places where the Events take place. This can be used to get things such -as address, city, state, or more. For more information, see the -Geocoding section of the [Google Maps API](google-maps-api-key) page. - -PA will only use Reverse Geocoding for Events that have been triggered. -Each Event will use up a single point of your API quota, regardless -of number of fields or alarms used. - -| Text | Description | -|:---------------- |:--------------------------------------------------| -| `` | Street number of the alert location | -| `` | Street name of the alert location | -| `
` | Address of the alert location, includes both street number and street name, in that order only | -| `` | Address of the alert location, in european format (street name and street number) | -| `` | Postal code of the alert location | -| `` | Neighborhood code of the alert location | -| `` | Sublocality code of the alert location | -| `` | City code of the alert location | -| `` | County code of the alert location | -| `` | State code of the alert location | -| `` | Country code of the alert location | - -### Distance Matrix - -**Distance Matrix** calculations determine how far away an Event is, for -both time and distance. This can be Walking, Biking, or Driving. These -calculations require a set location, and a Google Maps API key. For more -information, see the Distance Matrix section of the -[Google Maps API](google-maps-api-key) page. - -| Text | Description | -|:---------------- |:--------------------------------------------------| -| `` | Estimated walking distance to the alert location | -| `` | Estimated walking time to alert location | - -| Text | Description | -|:---------------- |:--------------------------------------------------| -| `` | Estimated bike distance to the alert location | -| `` | Estimated bike time to alert location | - - -| Text | Description | -|:---------------- |:--------------------------------------------------| -| `` | Estimated drive distance to the alert location | -| `` | Estimated drive time to alert location | - -Each table represents 1 API quota used for all parameters per pokemon, -pokestop, or gym regardless of number of fields or alarms specified. For -example, `` and `` would require 2 points, but -`` and `` would only require 1 (per alert). diff --git a/docs/dts/egg-dts.md b/docs/dts/egg-dts.md deleted file mode 100644 index 1adcda574..000000000 --- a/docs/dts/egg-dts.md +++ /dev/null @@ -1,45 +0,0 @@ -# Egg DTS - -## Overview - -* [Prerequisites](#prerequisites) -* [Available DTS](#available-dts) - -## Prerequisites - -This page assumes: - -1. You have a working scanner. -2. You read and understood the [DTS](dynamic-text-substitution) page. -3. You are using the latest version of PokeAlarm. - -## Available DTS - -| DTS | Description | -|---------------- |-------------------------------------------------------- | -| gym_id | The gym id. Unique per gym. | -| egg_lvl | The tier level of the egg. | -| hatch_time_left | Time remaining until the egg hatches. | -| 12h_hatch_time | Time when the egg will hatch, formatted in 12h. | -| 24h_hatch_time | Time when the egg will hatch, formatted in 24h. | -| raid_time_left | Time remaining until the raid ends. | -| 12h_raid_end | Time when the raid ends, formatted in 12h. | -| 24h_raid_end | Time when the raid ends, formatted in 24h. | -| lat | Latitude of the raid. | -| lng | Longitude of the raid. | -| lat_5 | Latitude of the raid, truncated to 5 decimal places. | -| lng_5 | Longitude of the raid, truncated to 5 decimal places. | -| distance | Distance of the raid from the set location. | -| direction | Cardinal direction of the raid, from the set location. | -| gmaps | Google Maps link to the location of the raid. | -| applemaps | Apple Maps link to the location of the raid. | -| geofence | Geofence around the event. See 'Geofences' section from [filters](filters-overview#geofence) page.| -| gym_name | * The name of the gym. | -| gym_description | * The description of the gym. | -| gym_image | * The url to the image of the gym. | -| team_id | The id of the team currently in control of the gym. | -| team_name | The team currently in control of the gym. | -| team_leader | The leader of the team currently in control of the gym. | - -\* Gym Info requires caching. See the -[Object Caching](object-caching) page for more information. diff --git a/docs/dts/monster-dts.md b/docs/dts/monster-dts.md deleted file mode 100644 index 40c905432..000000000 --- a/docs/dts/monster-dts.md +++ /dev/null @@ -1,73 +0,0 @@ -# Monster DTS - -## Overview - -* [Prerequisites](#prerequisites) -* [Available DTS](#available-dts) - -## Prerequisites - -This page assumes: - -1. You have a working scanner. -2. You read and understood the [DTS](dynamic-text-substitution) page. -3. You are using the latest version of PokeAlarm. - -## Available DTS - -| DTS | Description | -|---------------- |---------------------------------------------------------- | -| encounter_id | The encounter id. Unique per monster. | -| mon_name | The name of the monster's species. | -| mon_id | ID of the monster's species. | -| mon_id_3 | ID of the monster's species, padded to 3 digits. | -| time_left | Time remaining until the monster expires. | -| 12h_time | Time that the monster will disappear, in a 12h format. | -| 24h_time | Time that the monster will disappear, in a 24h format. | -| spawn_start | Estimated time that the monster spawn starts. | -| spawn_end | Estimated time that the monster spawn ends. | -| spawn_verified | Whether this spawn times have been verified. | -| lat | Latitude of the monster. | -| lng | Longitude of the monster. | -| lat_5 | Latitude of the monster, truncated to 5 decimal places. | -| lng_5 | Longitude of the monster, truncated to 5 decimal places. | -| distance | Distance of the monster from the set location. | -| direction | Cardinal direction of the monster, from the set location. | -| gmaps | Google Maps link to the location of the monster. | -| applemaps | Apple Maps link to the location of the monster. | -| geofence | Geofence around the event. See 'Geofences' section from [filters](filters-overview#geofence) page.| -| mon_lvl | Level of the monster. | -| cp | Combat Points of the monster. | -| iv | Individual Values percentage of the monster. | -| iv_0 | IVs, rounded to the nearest integer. | -| iv_2 | IVs, rounded to 2 decimal places. | -| atk | Attack IV of the monster. | -| def | Defense IV of the monster. | -| sta | Stamina IV of the monster. | -| form | Form name of the monster. | -| form_or_empty | Form name of the monster, or empty string if unknown. | -| form_id | Form ID for the monster. | -| form_id_3 | Form ID of the monster, padded to 3 digits. | -| quick_move | Name of the monster's quick move. | -| quick_id | ID of the monster's quick move. | -| quick_damage | Damage of the monster's quick move. | -| quick_dps | DPS of the monster's quick move. | -| quick_duration | Duration of the monster's quick move. | -| quick_energy | Energy generated by the quick move. | -| charge_move | Name of the monster's charge move. | -| charge_id | ID of the monster's charge move. | -| charge_damage | Damage of the monster's charge move. | -| charge_dps | DPS of the monster's charge move. | -| charge_duration | Duration of the monster's charge move. | -| charge_energy | Energy cost by the quick move. | -| gender | Gender of the monster, represented as a single character. | -| height | Height of the monster. | -| weight | Weight of the monster. | -| size | Estimated size of the monster. | -| atk_grade | Rating attack of the monster. | -| def_grade | Rating defense of the monster. | -| base_catch | Probability to catch the monster with a pokeball. | -| great_catch | Probability to catch the monster with a greatball. | -| ultra_catch | Probability to catch the monster with an ultraball. | -| big_karp | Return `big` if Magikarp weight is >=13.13. | -| tiny_rat | Return `tiny` if Rattata weight is <=2.41. | diff --git a/docs/filters/filters-overview.md b/docs/filters/filters-overview.md deleted file mode 100644 index 1caf138ea..000000000 --- a/docs/filters/filters-overview.md +++ /dev/null @@ -1,261 +0,0 @@ -# Filters Overview - -## Overview - -* [Prerequisites](#prerequisites) -* [Introduction](#introduction) -* [Filter Parameters](#filter-parameters) -* [Defaults](#defaults) -* [Advanced](#advanced) - * [Missing Info](#missing-info) - * [Geofence](#geofence) - * [Custom DTS](#custom-dts) - -## Prerequisites - -This guide assumes: - -1. You have a working scanner -2. You are familiar with -[JSON formatting](https://www.w3schools.com/js/js_json_intro.asp) -3. You are using the latest version of PokeAlarm - -## Introduction - -**Filters** are used to determine which Events trigger notifications. -When PA receives information about an event, it is compared to the -filters defined in your `filters.json` configuration file. - -A `filters.json` file is composed of a single JSON object with five -different subsections. Each section defines different settings for each -different type of event. A list of parameters available for each type of -filter can be found on the following pages: -* [Monsters](monster-filters) -* [Stops](stop-filters) -* [Gyms](gym-filters) -* [Eggs](egg-filters) -* [Raids](raid-filters) - -The basic structure of `filters.json` is as follows: - -```json -{ - "monsters":{ - "enabled": false, - "defaults": { }, - "filters": { } - }, - "stops":{ - "enabled": false, - "defaults": { }, - "filters": { } - }, - "gyms":{ - "enabled": false, - "ignore_neutral": false, - "defaults": { }, - "filters": { } - }, - "eggs":{ - "enabled": false, - "defaults": { }, - "filters": { } - }, - "raids":{ - "enabled": false, - "defaults": { }, - "filters": { "filter-name" : { } } - } -} -``` - -## Filter Parameters - -Each section contains a `"filters"` subsection as a json object with -filters represented as key-value pairs. The key represents the -**filter name** paired to the corresponding **filter parameters**. Each -type of Event contains it's own parameters, which are listed on the -corresponding filters page for each filter. - -**IMPORTANT:** Filter's ONLY check parameters IF you list them. -Don't enter parameters that you don't want - this can cause unwanted -affects (for example `"min_dist"` with `"is_missing_info":true` will -reject ALL events if the server setting `location` is not set) - -An example filters section looks like this: - -```json -"filters": { - "filter_name_1": { - "monsters": [ 1, 2, 3 ], - "min_iv": 90.0, "max_iv": 100 - }, - "filter_name_2": { - "monsters": [ 4, 5, 6 ], - "min_iv": 90.0, "max_iv": 100 - } -} -``` - -The details of an event are only checked if it is defined as a filter -parameter. For example, a monster's species will only be checked by a -filter if the filter has the `"monsters"` parameter defined. - -Currently, a notification will only be triggered by the first filter it -passes - additional filters will NOT be checked once a match it found. - -## Defaults - -You can use the `"defaults"` section to easily apply default values to -all of the filters in that section. - -For example, the following section: - -```json -"defaults": { "min_iv": 90.0, "max_iv": 100 }, -"filters": { - "filter_name_1": { "monsters": [ 1, 2, 3 ] }, - "filter_name_2": { "monsters": [ 4, 5, 6 ] } -} -``` - -Which is equivalent to: - -```json -"filters": { - "filter_name_1": { - "monsters": [ 1, 2, 3 ], - "min_iv": 90.0, "max_iv": 100 - }, - "filter_name_2": { - "monsters": [ 4, 5, 6 ], - "min_iv": 90.0, "max_iv": 100 - } -} -``` - -Additionally, you can override or even disable defaults. Override them -by adding a new value, or disable them by using `null`. An example of -this is: - -```json -"defaults": { "min_iv": 90.0, "max_iv": 100 }, -"filters": { - "filter_name_1": { - "monsters": [ 1, 2, 3 ], - "min_iv": 85 - }, - "filter_name_2": { - "monsters": [ 4, 5, 6 ], - "min_iv": null, "max_iv": null - } -} -``` - -Which is equivalent to: - -```json -"filters": { - "filter_name_1": { - "monsters": [ 1, 2, 3 ], - "min_iv": 85, "max_iv": 100 - }, - "filter_name_2": { "monsters": [ 4, 5, 6 ] } -} -``` - -If a parameter is set to `null`, it is the same as not being set all. - -## Advanced - -### Missing Info - -For a variety of reasons, an Event may be missing information needed to -properly check it. In these cases, the `"is_missing_info"` parameter -decides how a filter handles it. - -**IMPORTANT:** `"is_missing_info"`: ONLY applies to necessary -information. Information is necessary only if being used to filter. If -`"min_iv"` or `"max_iv"` aren't set, it doesn't matter if `iv` is -unknown or not. - -With the `"is_missing_info": false` parameter, filters will ONLY allow -Events with all necessary information. If `"min_dist"` is set but the -`dist` is unknown, it will be rejected. - -With the `"is_missing_info": true` parameter, filters will ONLY allow -Events that ARE MISSING INFOrmation. If `"max_iv"` is set and the ivs -are unknown, it will be rejected. - -When `"is_missing_info"` is NOT included in the filter, it will simply -skip any checks on missing information. If you have `"min_iv":90.0` set -but no `"is_missing_info`", PA will still pass monsters -where `iv` is unknown. - -### Geofence - -For more information on configuring your `geofence.txt`, see the -[Geofence](geofences) page. - -You can require an Event to be inside specific geofences for a Filter. - -This example will check if an event is inside either `"fence1"` or -`"fence2"` as defined in: - -```json -"filter_name_1": { - "geofences": [ "fence1", "fence2" ] -} -``` - -Geofences are checked in order. The first geofence with the event inside - will be used to define the `` DTS. - -If no geofences are set, the `` DTS will always return -`unknown`. - -If a geofence with the set name does not exist, it will be skipped and -an error will print out to the console. - -Another example would be to configure alerts inside all of your geofences. -You just have to configure the geofences like this: - -```json -"filter_name_1": { - "geofences": [ "all" ] -} -``` - -### Custom DTS - -**Note:** See the [Dynamic Text Substitution](dynamic-text-substitution) -page for an explanation on using DTS. - -Custom DTS are filter specific DTS options that are added to the DTS for -an Event when it passes a filter. The `"custom_dts"` parameter can -contain key-value pairs of DTS that ONLY apply for that filter. - -For example: - -```json -"filters": { - "filter_name_1": { - "monsters": [ 1, 2, 3 ], - "custom_dts": { "family": "Grass starters" } - }, - "filter_name_2": { - "monsters": [ 4, 5, 6 ], - "custom_dts": { "family": "Fire starters" } - } -} -``` - -If the event passes the first filter, the text `` will return -`Grass starters`. If it passes the second filter, the text will return -`Fire Starters`. - -Custom DTS can be used for a variety of different things, including -customizing the Discord Webhook or Slack Channel. However they can never -override original DTS's. - -Currently, Custom DTS cannot make use of regular DTS. diff --git a/docs/contents/faq.md b/docs/getting-started/FAQ.md similarity index 95% rename from docs/contents/faq.md rename to docs/getting-started/FAQ.md index 512d9c839..18081da9a 100644 --- a/docs/contents/faq.md +++ b/docs/getting-started/FAQ.md @@ -1,6 +1,7 @@ # FAQ ## Overview + * [General Info](#general-info) * [Troubleshooting](#troubleshooting) @@ -28,7 +29,6 @@ track the request and real with it in a more concrete manor. - If you see a request you like, be sure to comment on it to show your support! - #### Do you accept PRs? * Yup - you can submit them via Github. If it is a big change, feel free to approach us before so we can coordinate better. @@ -45,7 +45,6 @@ free to leave a post requesting it. Deadly (the creator of PA) on [Patreon](https://www.patreon.com/pokealarm). - ## Troubleshooting #### PokeAlarm complains about a `ValueError` error and says I need to talk to some guy named JSON? @@ -64,14 +63,14 @@ the details. You can use file-caching to save the gym names to a file so that they are available upon restart. Check out the -[Object Caching](object-caching) page for more information. +[Object Caching](Object-Caching) page for more information. #### How can I optimize PokeAlarm? PA uses Gevent and Multiprocessing to be as responsive as possible to incoming requests. However (due to language and hardware limitations), it is possible for PA to be overwhelmed and have a hard time handling requests for large setups. If you are experiencing problems, you can try -the following options: +the following options: 1. If on Windows, try Linux (even a VM will see large improvements). 2. Run PA on a separate server. 3. Lower the number of managers you are using. Each manager runs in its @@ -101,15 +100,13 @@ sockets. in a variety of different places. It is a matter of trial and error to find the ideal settings for your setup. -Try the RM (or PA) discord for more info. - +Try the RM (or PA) Discord for more info. #### Error 10053 on Windows or Error 53 on Linux? * This is an issue with too many open sockets on windows that causes PA to be unable to open an new connections. See the above steps for some suggestions on optimization. - #### RocketMap repeatedly spams `Caused by ReadTimeoutError("HTTPConnectionPool(host='127.0.0.1', port=4000)`? * This mean's that RM is not connecting to PA for some reason: 1. Make sure PA is running. @@ -123,7 +120,7 @@ some suggestions on optimization. doesn't know the correct information. This could be a variety of reasons #### Map images aren't showing up correctly... What can I do? -* Make sure you have added a [Google API Key](google-maps-api-key) and +* Make sure you have added a [Google API Key](Google-Maps-API-Key) and have the Static Maps API enabled. If you already have it enabled, make sure that you haven't hit the limit for free users. @@ -134,8 +131,8 @@ sure that you haven't hit the limit for free users. #### Do you want to use custom images in your alerts? * Add in your alarms the option to add images (depends on the service that is used) and add your url where the images are. For example, if you -use [Discord](discord) it will be something like this: +use [Discord](Discord) it will be something like this: ``` "icon_url":"https://raw.githubusercontent.com/user/PokeIcons/master/icons/.png" -``` +```` diff --git a/docs/getting-started/installation.rst b/docs/getting-started/installation.rst new file mode 100644 index 000000000..d316f02f7 --- /dev/null +++ b/docs/getting-started/installation.rst @@ -0,0 +1,90 @@ +Installation +===================================== + + +This guide will walk you through installing a fresh copy of PokeAlarm. + +.. contents:: Table of Contents + :depth: 1 + :local: + +Prerequisites +------------------------------------- + +This guide assumes the following: + +- Latest version of + `Python 2.7 `_ installed. +- `Git `_ installed. +- `Monocle `_, + `RocketMap `_, or another supported + scanner successfully installed. +- You are using a quality text editor like Notepad++, Nano, or Vi(m). + +.. warning:: Do **NOT** use (or even open) any files with Notepad or TextEdit - + they change the encoding on the file and prevent it from loading correctly. + + +Installing +------------------------------------- + +1. **Clone a local copy of PokeAlarm** - Navigate a new folder to install + PokeAlarm in (It is recommended you store it in a different folder than your + scanner). In a terminal, run the command + ``git clone https://github.com/PokeAlarm/PokeAlarm.git`` to create a local + copy of the project. This create a folder called 'PokeAlarm' that will + contain the application. + +2. **Install the Requirements** - In a terminal, naviagate into the root folder + of your PA installation. Run ``pip install -r requirements.txt --upgrade``. + This will install and update the modules that PokeAlarm needs to run. + +3. **Configure PokeAlarm** - Next you need to configure PokeAlarm. + + - :doc:`../configuration/Server-Settings` let you configure things like host + IP, port, language, and more. + - :doc:`../configuration/filters/index` represent which Events trigger + notifications. You will need to create a filters file before starting PA. + - :doc:`../configuration/alarms/index` represent where and how + notifications. You will need to create an alarms file before starting PA. + + +Running +------------------------------------- + +1. **Start PokeAlarm** - In a terminal, use the command + ``python start_pokealarm.py`` to start PokeAlarm and begin listening for + information. If successful, you will see the following in the output: + + .. code:: none + + PokeAlarm is listening for webhooks on: http://127.0.0.1:4000 + +.. note:: PokeAlarm installs some dependencies on the fly. If you encounter + errors when first running a new service, try running as root (with `sudo`) to + ensure it can install the dependency. + +2. **Setup Scanner Webhook** - Next, configure your scanner to send information + to PA's address. + + - For Monocle, * TODO * + - For RocketMap, * TODO * + + Finally, start your scanner. If everything is set up correctly, PA will start + logging information about what it is doing to the console. + +Updating +------------------------------------- + +.. warning:: Updating PokeAlarm can be complicated if you edit files you aren't + supposed to. For this reason, we recommend not to edit any files ending in + '.py'. + +1. Check the :doc:`../miscellaneous/Patch-Notes` for any big changes + that might break your current configuration. +2. Open up a command line and change directory to the root folder of your + install. +3. Run the command ``git pull && pip install -r requirements.txt`` to update to + the latest version. + +.. |br| raw:: html diff --git a/docs/contents/started-guide.md b/docs/guides/Getting-Started-Guide.md similarity index 72% rename from docs/contents/started-guide.md rename to docs/guides/Getting-Started-Guide.md index 832367763..11b4e91a0 100644 --- a/docs/contents/started-guide.md +++ b/docs/guides/Getting-Started-Guide.md @@ -1,4 +1,4 @@ -# Getting-Started-Guide +# Getting Started ## Overview @@ -43,7 +43,7 @@ server to do the following: ## Setting up an Alarm -In PokeAlarm, an 'Alarm' is a block in the Alarms.json section that +In PokeAlarm, an 'Alarm' is a block in the `alarms.json` section that represents how you want to receive an alert. For our example, we will use Discord, but the steps are similar between types of Alarms. @@ -54,16 +54,16 @@ wiki page. wiki page. Once we have our webhook url set up, we can edit the default discord -alarm in the `alarms.json` file: +alarm in the `alarms.json` file: ```json -[ - { - "active": "True", - "type": "discord", - "webhook_url": "https://discordapp.com/api/webhooks/1234567890" +{ + "discord_alarm":{ + "active":true, + "type":"discord", + "webhook_url":"https://discordapp.com/api/webhooks/1234567890" } -] +} ``` **Note**: for brevity only the discord section is shown @@ -74,7 +74,7 @@ you should see a start up message posted in your discord channel! Filters are how PokeAlarm decides which Events get sent to sent to the Alarms to trigger notifications. To get all the details of Filters, -read the [Filters](filters-overview) wiki page. +read the [Filters](Filters-Overview) wiki page. In PokeAlarm, there are five different types of events. In a filter's config file, there is a section for setting filters in each type of @@ -94,12 +94,12 @@ to accept only the Charmander family: ```json { "monsters":{ - "enabled": true, - "defaults": { + "enabled":true, + "defaults":{ }, - "filters": { - "best_monsters": { - "monsters": ["Charmander", "Charmeleon", "Charizard"] + "filters":{ + "best_monsters":{ + "monsters":["Charmander", "Charmeleon", "Charizard"] } } } @@ -115,15 +115,15 @@ Charmander!). Let's add another filter, but for IV's above 90%. ```json { "monsters":{ - "enabled": true, - "defaults": { + "enabled":true, + "defaults":{ }, - "filters": { - "best_monsters": { - "monsters": ["Charmander", "Charmeleon", "Charizard"] + "filters":{ + "best_monsters":{ + "monsters":["Charmander","Charmeleon","Charizard"] }, - "okay_monsters": { - "monsters": ["Bulbasaur", 2, 3, 7, 8, 9], + "okay_monsters":{ + "monsters":["Bulbasaur", 2, 3, 7, 8, 9], "min_iv": 90 } } @@ -141,18 +141,18 @@ unintended things from happening!). Next, I want need to know when any of my team's gyms switch to another team (so I can go put them back up). I'll start with setting -`"old_teams": [ "Instinct" ]`. +`"old_teams":["Instinct"]`. ```json { "gyms":{ - "enabled": true, - "ignore_neutral": true, - "defaults": { + "enabled":true, + "ignore_neutral":true, + "defaults":{ }, - "filters": { - "clearly_the_best_team" : { - "old_teams": [ "Instinct" ] + "filters":{ + "clearly_the_best_team":{ + "old_teams":["Instinct"] } } }, @@ -176,12 +176,12 @@ section of a filters file set up for legendary birds: ```json { "raids":{ - "enabled": true, - "defaults": { + "enabled":true, + "defaults":{ }, - "filters": { - "legendary-birds" : { - "monsters": [ 144, 145, 146, 249, 250 ] + "filters":{ + "legendary-birds":{ + "monsters":[144, 145, 146, 249, 250] } } } @@ -202,16 +202,16 @@ wiki page. [Dynamic Text Substitution](dynamic-text-substitution) wiki page. ```json -[ - { - "active": "True", - "type": "discord", - "webhook_url": "https://discordapp.com/api/webhooks/1234567890", +{ + "discord_alarm":{ + "active":true, + "type":"discord", + "webhook_url":"https://discordapp.com/api/webhooks/1234567890", "raids":{ - "title": "The Legendary Bird has appeared! It has CP!" + "title":"The Legendary Bird has appeared! It has CP!" } } -] +} ``` **Note**: for brevity only part of the alarms file is shown @@ -230,20 +230,20 @@ to your alarms file. If we wanted to customize pokemon alerts, we use the following: ```json -[ - { - "active": "True", - "type": "discord", - "webhook_url": "https://discordapp.com/api/webhooks/1234567890", - "pokemon":{ - "title": "The starter jumped out of the bushes!", - "body": "It has an IV of %!" +{ + "discord_alarm":{ + "active":true, + "type":"discord", + "webhook_url":"https://discordapp.com/api/webhooks/1234567890", + "monsters":{ + "title":"The starter jumped out of the bushes!", + "body":"It has an IV of %!" }, "raids":{ - "title": "The Legendary Bird has appeared! It has CP!" + "title":"The Legendary Bird has appeared! It has CP!" } } -] +} ``` **Note**: for brevity only part of the alarms file is shown @@ -268,15 +268,15 @@ filter file `starters_filter.json`: ```json { "monsters":{ - "enabled": true, - "defaults": { + "enabled":true, + "defaults":{ }, - "filters": { - "best_monsters": { - "monsters": ["Charmander", "Charmeleon", "Charizard"] + "filters":{ + "best_monsters":{ + "monsters":["Charmander","Charmeleon","Charizard"] }, - "okay_monsters": { - "monsters": ["Bulbasaur", 2, 3, 7, 8, 9], + "okay_monsters":{ + "monsters":["Bulbasaur", 2, 3, 7, 8, 9], "min_iv": 90 } } @@ -287,15 +287,16 @@ filter file `starters_filter.json`: Next, we can make a second filter file for Dratini. We will call this one `dratini_filters.json`: + ```json { "monsters":{ - "enabled": true, - "defaults": { + "enabled":true, + "defaults":{ }, - "filters": { - "filter-name": { - "monsters": [ 147, 148, 149 ] + "filters":{ + "filter-name":{ + "monsters":[147, 148, 149] } } } @@ -308,40 +309,39 @@ ones from `dragon_filters.json`. So we need two different alarms files. Here is what our `starter_alarms.json` file looks like: ```json -[ - { - "active": "True", - "type": "discord", - "webhook_url": "https://discordapp.com/api/webhooks/1234567890", - "pokemon":{ - "title": "The starter jumped out of the bushes!", - "body": "It has an IV of %!" +{ + "discord_alarm":{ + "active":true, + "type":"discord", + "webhook_url":"https://discordapp.com/api/webhooks/1234567890", + "monsters":{ + "title":"The starter jumped out of the bushes!", + "body":"It has an IV of %!" } } -] +} ``` As you can see, it is the same one as before. Here is what the `dratini_alarms.json` file looks like: ```json -[ - { - "active": "True", - "type": "discord", - "webhook_url": "https://discordapp.com/api/webhooks/1234567890", - "pokemon":{ - "title": "The high IV dragon appears with a roar!", - "body": "It has an IV of %!" +{ + "discord_alarm":{ + "active":true, + "type":"discord", + "webhook_url":"https://discordapp.com/api/webhooks/1234567890", + "monsters":{ + "title":"The high IV dragon appears with a roar!", + "body":"It has an IV of %!" } } -] +} ``` Now we have two different filters and two different alarm files. Now we just need to set up the manager and link the filter to the alarm we want to use. When we start PokeAlarm, we can use the following: - ``` python start_pokealarm.py -m 2 -f starter_filters.json -a starter_alarms.json -f dratini_filters.json -a dragon_filters.json ``` @@ -379,16 +379,16 @@ any necessary information is missing. ```json { "monsters":{ - "enabled": true, - "defaults": { + "enabled":true, + "defaults":{ }, - "filters": { - "best_monsters": { - "monsters": ["Charmander", "Charmeleon", "Charizard"] + "filters":{ + "best_monsters":{ + "monsters":["Charmander","Charmeleon","Charizard"] }, - "okay_monsters": { - "monsters": ["Bulbasaur", 2, 3, 7, 8, 9], - "min_iv": 90, "is_missing_info": false + "okay_monsters":{ + "monsters":["Bulbasaur", 2, 3, 7, 8, 9], + "min_iv": 90, "is_missing_info":false } } } @@ -406,18 +406,18 @@ I can use it to change certain text depending on which filters pass. ```json { "monsters":{ - "enabled": true, - "defaults": { + "enabled":true, + "defaults":{ }, - "filters": { - "best_monsters": { - "monsters": ["Charmander", "Charmeleon", "Charizard"], - "custom_dts": { "is_fav": "IS"} + "filters":{ + "best_monsters":{ + "monsters":["Charmander","Charmeleon","Charizard"], + "custom_dts":{"is_fav": "IS"} }, - "okay_monsters": { - "monsters": ["Bulbasaur", 2, 3, 7, 8, 9], - "min_iv": 90, "is_missing_info": false, - "custom_dts": { "is_fav": "IS NOT"} + "okay_monsters":{ + "monsters":["Bulbasaur", 2, 3, 7, 8, 9], + "min_iv": 90, "is_missing_info":false, + "custom_dts":{"is_fav": "IS NOT"} } } } @@ -446,23 +446,23 @@ I would modify my `filters.json` to add in a DTS: ```json { "monsters":{ - "enabled": true, - "defaults": { + "enabled":true, + "defaults":{ }, - "filters": { - "best_monsters": { - "monsters": ["Charmander", "Charmeleon", "Charizard"], - "custom_dts": { "channel_api_key": "11111"} + "filters":{ + "best_monsters":{ + "monsters":["Charmander","Charmeleon","Charizard"], + "custom_dts":{"channel_api_key": "11111"} }, - "okay_monsters": { - "monsters": ["Bulbasaur", 2, 3, 7, 8, 9], - "min_iv": 90, "is_missing_info": false, - "custom_dts": { "channel_api_key": "11111"} + "okay_monsters":{ + "monsters":["Bulbasaur", 2, 3, 7, 8, 9], + "min_iv": 90, "is_missing_info":false, + "custom_dts":{"channel_api_key":"11111"} }, - "okay_monsters_no_iv": { - "monsters": ["Bulbasaur", 2, 3, 7, 8, 9], - "min_iv": 90, "is_missing_info": true, - "custom_dts": { "channel_api_key": "22222"} + "okay_monsters_no_iv":{ + "monsters":["Bulbasaur", 2, 3, 7, 8, 9], + "min_iv": 90, "is_missing_info":true, + "custom_dts":{"channel_api_key":"22222"} } } } @@ -472,13 +472,13 @@ I would modify my `filters.json` to add in a DTS: Next, I can change my `alarms.json`: ```json -[ - { - "active": "True", - "type": "discord", - "webhook_url": "https://discordapp.com/api/webhooks/" +{ + "discord_alarm":{ + "active":true, + "type":"discord", + "webhook_url":"https://discordapp.com/api/webhooks/" } -] +} ``` Now, if it passes "best_monsters" or "okay_monsters" it'll send to the diff --git a/docs/images/01-blank-dashboard.png b/docs/images/01-blank-dashboard.png deleted file mode 100755 index 1fdab53312e097f0cc301091c1a70fb697d4e3fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20457 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 diff --git a/docs/images/02-create-project.png b/docs/images/02-create-project.png deleted file mode 100755 index d753a8f54e3835721d4f32739dff5f75e53ad54f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24978 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 diff --git a/docs/images/04_project_created.png b/docs/images/04_project_created.png deleted file mode 100755 index 06e1381d746fa5f80ff839526daf48dccf63046c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18871 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 diff --git a/docs/images/05_library.png b/docs/images/05_library.png deleted file mode 100755 index 4cec1746781cc33bfc2db7020ccf42ba0ca3a46b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53813 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%0ABpTIct?6-aV7i5S0yo=NmMCYb)bs0 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 diff --git a/docs/images/06_enable_geocoding_api.png b/docs/images/06_enable_geocoding_api.png deleted file mode 100755 index e543dde9d0df60927891fdf7a35024cb96ebef09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45192 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 bR%dpRBrV?4VP&mo`Z2ZD4X$Azw?h5{>L~+} diff --git a/docs/images/07_enabled_geocoding_api.png b/docs/images/07_enabled_geocoding_api.png deleted file mode 100755 index bba5083f9abf3d84f4883aed832603019b6560d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39988 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
O^W@iCH{kS`P%`6Yaqw|*Ji=z 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 diff --git a/docs/images/telegram.png b/docs/images/telegram.png deleted file mode 100755 index bf230043c2f5b51f6725b9ad25a044ae6031511d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47678 zcmce;XH=6>(>6*CNJm2NA_CHjO7BfNqV(Po=`Hjw(owqfuF^qz2Wf(YB27vN2%(1_ zTF4iCo^PFX*7u%YXPxr{NOJG&eean)GuK=*H?cZeD#QeI1Q-|?#4lA9UtwTi;bLH5 zvf=~KpTJ+v)S>@idc9JS$EcZL*g?O+agfuL!@#IdCcL#mkHmQ3u4?3kfkE=){s%Li zn}i+%qiyD;qTFkc`F3MZrPWS8DZ!<&HkfnaUlqhpLfhC!bbR`A2hB1HtM6 z+Nx|RSW!usHlOJayOtW-zyDe7xmjLG*RNceRm*rsdsqM|%#&zr6mHxT14|*6y+pV$ zfdtX=MLL~-r|j>Z{(B9IEl~_df5ZtSh<%9r?<(hGH6Z#edSD8tZsGlvX!+v*F9&^2 zV>u0&Rvps&a5e~)0?PAbDe|PqLJkX;x3X=b`^qExzC~9KVx_8(R-3c6aQ(YAQGbok zoT}`Y@NhEm=a*}4@wUce1FM$u2SRwJ)l`mY{0jGbic9T}ipPoz&u7GB2q=9q<7xff zR5$$R)pK@|f3sxSK6wp1gA-aox>mBAV(ktq-&(qf*v%AbMR1M^jf@JJ}Q~JnUWL z;=3=x zmdJdP`oIe|p%fe(Ty7`2va+&JXB7#g5OEUEBk}R^5#6h5ES%pH4on};mkM;>o@6xz zL8Aq7er3RBw-4zV#+u7k|@KFKP)dMTi8LZL?s!U*g;82$-Z{_ z2$?K(L6gKJMG)B+mXSf_loHH2?0ef}J)Fe& zVbJ;{pj^9v4>2Zmm=!WamRrRdDSy=HPjYVpqEba3*5HgfzuW_8gJ0m~k=3G!G%VK( z5JTdamYQ|5jPk-ycmV%GE)=vn*(d!=&$@%z9 z$yh~X8xL`F?F1I(qBncJju@qU`W5ew;6|iWDBT^8rl#h!PPJJF)l!RFW<+>xo)*XF zoE+gmx%MLo2?=56fuiu>?V=dl+U%kF1@{44SvNpYSP}V_MYArAVu`Ng&31bu&bFsA-7dYF20|^GE&4OG1$b!#M687A5#c%sgehw#H)G%4+sS9b$cao zQlA~TOYV19>gA{2TZI<$39-a*i_^HMYkpZzk45t);%$5^R#Gy=eSp{#g}gzGS;dY< z6=cdhvA`!GbnoG=X_dd2788*@ffSsp=eXvcNQ5GrB8DP#0Gi9if-HKw9O zR`rIZU*5iZH~u}zcD%UIAyE9O_ftVi@XLEi42~ufTk>Z}y-TWaDAE~ehk9`V4N{^3 zX;N10(@vb)REr)VA$-w9sD{J=4ATW+nE#YOj67?bn;?kv(!Bk8%wMJp>)q0Kr_{42 z?w2g|4j&1n_!w3#C#?jB9uq9E$((Kfuzi}V3ex&%a_!td}6{J0;UCoW;8cHciMLAzOrwtGHrVm_eov>zq6u@ zW@aB7e)pAJT?gMek$fwz-{$fC5zPviOqsgWB_gAHK_?F&nLe5lonD*iC2!W_`Kti! zT~h?G9xk)0p~~swj=#l z6Fz1M+6-CNu_a0)Dy+7i9nrMG5m!N;##_xUOQpxKeL}vnRqe}cNsbUE8#4SDQc(99 zle=j60Pk`>{g;uzU$ppFjif_q6_)dPc@^G6a$H%z9S2bhKnYE5h9(pndT5mba+Ny<1L*QZC^0e*!aVewS^!edmz#5QihVL8-5|Z+hyJ zUib`@0qvgA^7@v>OJLoXY67v8%q4++L2Hy?@Uok^FW1Rk2J=|31`O-=-aK71lS+(hEE5 zk>;cK;A9w=nqKSL3I#Aoi8n>~EV#6N%BHHEmmT z*$#ofK0nKzn<1P7-$6-3ImcW=4xBAg%apyW{3l*??Py-!A$s`Lqq`AZ@Iiy_lk~pn zQX|8kXKc(@A3CZ1mOWI;DH}2n4l*}J*_pXZxmp}GT^Ghi#v%xs!Bw#MjwJt_3To&@ zx1gcWn|py&7fNOI&a+4eK>2F`kq&4iu6B_LN? z3}T=7cE*j@9CAGX89YW2%*bt(R&)TgYXkEKK?xg(9DOA+Wl&dO(Bhc+d;ZX?u@a^i zOv&olL4%YABL|XOCaWh@PRpl7)L{yE`-u?HM&jhodwZL@mI*}TldJ3VJr8I!b#Z+? zd9uu%XifX>Q>PK9NnR?#kc-9wRvMz8rz0^1DAXMUMK1|?{~lnpaXVS0(14KnbMwHt zq-X0{?Z;Yp2V5HMh_8(Q$uUDPXZj~@Gx}f+jEYt$K4KjMH8{}650=)W2Kht6!NG@K zkxe}h%uZkhq1__BFCam}-Is&>>wS34#r%(pDxDl3cT_sXoyJ3;l{d3yM^P{Zy4Xv&xpwb|pP zxoQ&*vx6x3A{w)p!WM2Fhh5MySvmDRVw9sG&E^^o8kP_Uym;r|Y1-b=Q6GqKrB&%Y z9f_7N?df5z4VbMws*piC)p4M@;KAB-eiw&}WBk-4^o~u&{)x9Y+2A014f!7jzBY4J zMkm*x)qCR;Jx>_RZFev(S5&jg#|CfO_SSnRg+l`Ns;6|{d{u_ zd2F>v&3OshgH~9cUw*FA(WCynmdKGiv&m}a@eMTw^&3-w;p=C!3-Lp zUu6M9VKS&TB7m(sdnC^=mJ~LS0>}>(WFWb`fuQmi#l<`Cmc3rz`;xB?%fb6|&fhHS z3fg1DWdetMIKVc2tIuMvw=qFyQ!4fUfiNPCO#*p&c_;kC%VJ69AEuHdY=($#(UT4J zMdFoBl?isAPDt4C$V!VeNRrrKbCPKRI-79`sZ<3U9KiV+mG>S-OJ#_cV7tNMZ0lO@ z5z%G#?SAUZx!##gO@)zsakHZ;UvllxoY;ZA?s-$G-}mmh!v#~s#zw*Q?+RPD0uKzC%RW*yx-ryM0gB7t zl+JmJu@G9?yS=xUx*EMXmg#UoQ{3FFfANQQpcgz54PR>YD3RnR!0eVj9T!&lL2g?C zw2z_2kD&*VibjSDl1WNeh%_W#5r7iVE)y@)BIN1|9NfPU1IrK8%IC+uzgtc%DZ2_W zrbHy_KpB#+WAEZ=Nz^yWAVfpR&=QJvn%ows1GmuBu2a1}wAh@vM6y`6H<(eEX$&n6 z47lKfmL6nvLWNn;arMBpedo!ddc_ON zr~OdCkdlDqr$*lYgu^TWU0H@14a1AO@&}skKWvV(B%7_hMVmhAF+A{M(ir@M$6#*t z?njKwt<}OiJ%0H8ZFj!Tu7gGfy?WUj$P#sNj*ZX2Y%(N1L|m7FsYhLqz<~2FC~-c~ z1^(@C7=w0;0!ZGI5k4U!d<@tirQxuw+p(liBs^a5gCyPb9NT9R zi7(&59musG3kRYNQOW-cSFBha0yP0g(Zj~w`iG=k8d}cPj_ZQQX2*_3Eu=s2;)(wa z;X1ZZPo$5L=<>`9x^1F{B1m0+oU|o^e22+F*jAm$KaI!lxhKMuv2VA+&s!1MW|vnn z7D;arI#e>vsV!z+8Mo@5OP*k-m70=mT6}2p9$48dnh|ol_xACpmq90U@%1O;*(Xwv z>!r8Lr)OG^2j`798`f=V+sLSS^QA$#@-UT+9J8k2(rxGP{sb^ zU#Y8UW~PCp0kbdX3sZZ9&_=gbqRjlMxL}vA%YHcXK=_5ZMx`f|(5;){^mFCrjhYL$ zuf}SH+wJCqAo$As==>tGnQ@oFBOyrq`gXlbJ1)?d2+*Y!k__*(5+m_Bqn1prUv&_A z(^J8WI;HjR>A6a(jFz2rxDT<`-f0zu7}$LRA?Niu?l*WA@88fP)D=!PTg=00&zWx5 z*=l=dWCA!s&bsLV^YgdcjH01djX|~gm4g=2NaLW>X6K`1j%Mo)0n0&rm5l{1BB)U# zy)bX|5z+&q7tL@uX$yQ&|kgF+!wQ#piCAwxu$&dcSWRflLTO`-`+o~T5kN|FJ)KVLU?HdTCcc(_i`^3Z z;-Pxsn-B3k(SKAgazB4Fb6?bGz20A}qd6~b*#q7TtF*@X7$-99G2ttckpp6FH97a6h!WX}}&6avE>fT8@92g8**;LMiiL82GGg0H%RPFkiGrn9mY`Tcp8;`)%rZ&#+5`k{1uq``Z<4IFu-h|OcKmE%(M z%|w5_lv*5DzTF?-&#Y%eyH7#$G)_*6M18gdIjoyx1eGaxdXMlY-qkKI9+XrW4;xC8 zHpGCxfBZ@7IMW6qy!(C`9Q|hqD-n-)xnYsGIOc2L0R4r1Gm-B0Z9c^Rb$i}}7>#%K z*i}y=B{ThkQIN}JH|F%E-KUKGAKuo7_~l3f%+88bHC&y^VehEl@7%$B$5urnpNcUE zI2hZFx|Ahl6DG^~U7KmUrgqtca>iL8{TSQvBG@KUZ>D`hhuL!8`#)668#c^(3!xZY z#lD-kPe?jBb#HqNZdD`l6X{ahsX<8JZ{Xo?i_N@UKmiq6m6g{dn&n&iwt~ z-&VW>JIr+Zip;h`Jq(4=wm#JVX-=G{K!VuqYRe3?*K!y!BfcE0MUcllT!w10$Kyk7 z*B*B>Ln7%Xa$<0KaRb(@dk~#LxFNpa)7HNOJ!ySGi?T0b204?5SNF=8uPB+!d#DTi z2g*(s{&Pwshp3g{S;De4x1l|Qi3L}wKtqOFaLi4}PPKt*cwcbs?WNms{LS3Y;Q0H! z?LzL^iUjIs>>d##TI@Hyny|#({>@7`EChjX?zRu)vbWzN8Pu@k3w!K*_IbZi^=9^je9EFWg zlGs$P>wi|mWhcLrtF)3{)BzUV{fAG6^jGmit6_Ra=*C~qeJNA^$t z%tK!JbcvExRb@xC9^lOJs#Lq0v9jNO=S2p2GP|&?SGzZ~U_X_(75$y{?hCU z6_Rtk@5c1erAU?Myl4rojy(N(;E8NwRC(owoHOIHlH3g7YJelpk$Y-P4#UuzG*DK> zbx_f3kqlMjem+dECFsiS>uPx6@?Ci?B)c84nD-U*=;L+U!bOJLDm#Lmw0eo{0_psA zxMkc+<&)mPL2->Tk`04mKauX~$;Z z^Ft@~m7}jRrTT7SqKBuCJ8NM*D3~X7kAfA^L3iNg#dVHMKy+{;LN-HXHeJVh%3t;T zdbM<0q`I32xiRPqlv%aOXm=<(jF&%tr82rMxgbGF%4zghRZ`Ub7e^?6VC3dHh17&L z^4cm_tP&G8UXbC0+pY+1>za>QOx!tZt@dGBlvoM=u2Pd}y>e(H)OFazy_F_8(OLeq z6GaL8`7Uh#*tGQvF4R%ug2|{R6V_~fD6;+C*c2UVj=S+M7~$y$D3CSxD);JG{%cqM z=ZGxvYJj@K+yG~QUA>DMkv2*m$wo3RlL+e5e41qHpuv_7D} zOKz#>JC$b5eJ(tjfqi%(y6#2pmSU^SD@YMK?mW-{rGqTn-Ix%W>imV@AB~gRLE9A4 zxiFA>dPKq4!`>HWq81rrjAI@b413{=jyR6Mykm(l=rk_-XeY%=^D}`f(Y~QDD7vQv3C{TVpQdpcd6(erM7SoeBMc z?Ti?4rhyBpuQb*#Q%A3ty?=-+#;`+|(sWWw(Iq*z*kY2)0bh{7 z-E+OM{4&?m;U_i?40X!Vx%h#c#>YJaW=PL28lKZVLghNoMU6J|Lk~xuyXyser$WQ^ zOexlG#Fd%K=D_oXwB}Q8WMf|E%p6#LaXDk_tg<<%#I7@r5-G^fjs=#X7LzxGg`LLEIsJ1HE_@ilL8rF4*>Q*#}XdD_18G8%07p#g6Q66HEHu!mR& zC%gP)@VSKMi&FLh$#%`awnRx7yNlHFWGLzJiZYu6g@|i zdM~aE|8x?Q(ZCT^FS_1$V0Yy%Jg@RMR*-u0wtTxPm>4<|1ob%4yHDI7`Pv48qb^u5=&kQ(r>j>S%xT*ZKbGa|xfX}^hSSG8kPgqUww=%Rm`v@0;M( z-F+j_{MZE7B@2g22jD0bCCLHKW)ItWyXiTfxIMuPrHv^5TP1S?UD_<3uY)gPYp^$%tGT=48kx$Q&=u@+cj%Ux+U6!~e_J)f&v?C`@ zI|I*s{l}x%C5HpYO;6xPUvG+aI)Cf>6Py@!ZL)M<&Cedi;r(9pqPI)lVVvh@p53N? zbkmD^Wj`T0?9g*H&rx>7DWcsm3R=mxCTU!9FYrA{+{sFl;3>I>OkIo&VOwJ~yJ;szgmwhZu_`8oYIR+zJ zOh~H#P8jhwxqQD@_|@N4h1E>F`GY>~LG11&`m_N_xAt9)&aLUebymoWn$yRNH=m*r zH#hJ$EkNmUppkf^*2Eyc;#c^$->|JvSm|$saQ?k4jJvKZr{E6CW=c~onLJLs{`~Rx zQYrahCE?(Dl+{RId2~E){y0Wnt;_AZ%itkeD4)72{$l}ZDZ%a#&&5w3u~>sU#EIAU zaIX7kD?M^%6%Cfw2NUR|bvWbdHr%PHTIQ_uBOjtElJ&B1bk$pl+*Q<%PuhQPP{>ge z4YkY(zCf}6aYMj|n_U0T0PBB3VQat!bP;zMO+9Y!ysU8I1+-Xr{d#8DXs=mr_rWvS zLnuoPCiDih9?Nm`)1dod3<=}U@42f-;vlI`zG(U5b%odnA<>Xq(VET^wa)WuHzk%7 zK1pG7N735u>$g`3?k&&UXw+)+{nhH1QT&KJ|$?VB>qLo1+k(XO9dbr?}wa_^3 znqHe^DZqpxA53~{U~ldGs2vo1FYxGxxOR2uTJZLH!1tym=vrT7_S~_c-=V4Gkn_r;fG*D)!z9XB z#iIe{JF+~jsPPaWC_ z-s{7>K)wj%QKZ<%i6-cmLs3Z3e8*~ZJYPG$w$yprI~ewbUcogm1U=c9Pk+olZ_Dx{ z<^~a-^z`(|u11G~VEw}ZCLclSz&67Pp1=WH zXYDGH(wu`BJ9;wDZqkTaRybh~HJxSqoc}L$ndtp;3y=Y;(2vz`p%5t2-vSBgST1l4ic1N)4Ax0G_LGxq z_t;Q&%96QR1h1>eTu*(mj_x5H!qWLNISES*WactQ@kMcT$p!_ZnV{z5U!J*O z9wI>p3_r6>Aq~A8XqY$uu#cEpSl}GQp7&ox7yn-^r^WfK9q*hMI>gkVOyRhrJ;_ja zLv!p<8Ie2S!?yWfHoCG2h?X)P&hjT}z_c)_${6MlL%INI#TC~U@A(Fp26>8^13bR( z!+no}a@5j7WZ<3&hEQKXf05IYbN)Z0U2RY)I+ z?NryAfJY~Ju}y0tdnq-k`r_F$E9CY0^oI~c2V{`>?g+2SxJhjla)16jA+L^TfRtB5 zEo8tDu;eL`^l_~A$SKrs*dvsWq51O%c(U~em?D_G>*Z~=J(o9gCZE~Ut~U%d>yrdh z!CTW?JtwK9X80+1TzqIDkC0FbTy_6H=B{U*5N~mgl4P!8HGcpjw8|+^~s|} zpI-D_{Za~?FZsy$e1wEe2mj=*UPUXJ3}xSi@0~3?Qe&8_%qQ|$WNVW~lf=kfl=CLf z16qZ__pahN5C8He4{f{xwc7PJBR#pSa-{tQs9OiFBpUae==s4tZk01MdoY8?PM{_` zFdp`l4!S?^`S5jnRHFj^zS5i5uSf9qh+izT5aS2F_U>zFQG&{n3({?Na?rcUlJ}ox zNd@}atJB5d(6ym%VKOHmhCh}X7#oBqMMYn0Ycu71y^DnPBL-MXuP>$z5lE_SJqo=m8;Rs!8yY`= zYUr}>TixP9e336AfJ{@*(YjT#7$TaoUl=@eju$7Q&FVH2(E=A?3M32wOC57Do0XET z80*Ly=b?vncvtA!p)%dM=|ZI)%UZk7Ug_|9RpZ2`u2p#{&BHN#P%aVprEj#FDhLKkg7yzCDoG4|=(Y&mH*eU% zc?>ck3}6{l=l0+B|27ZqeoRs5W?`8srE->7{_vRCQ|hDY2!EnQ!gE-x8mVlf)bOBA z)J5R~uwQG+B>HRmsS#SKR16gnj9tF$_~k6a*0?Tsw%iq&Jg=q(nrjtnM3$FV=ItCgj}QYDHEz zyJcvI)TS)!4JTJu^U>Up6*)ol-zzc#+|<#>7O)Z~LOWTjy06Y(U`nKNq6`sZn`v=; zW48n{lI2)GA0>BxAlGKDRTOnf+Y@(r6+oi(1SkgNh(VShf-UGo&#jQx0lOlXuKI2bjaEnM%t^U5FHX-IC_WUSsTLmfc3eTnV~kV7}B z0)>r0e3X=wq5)^yg_$`_aQS<}U*vC2dtUalZw)D+wI@(_BIXziW5zTEk`nR{Z;yU_ zB)BZzDZ(aU&*ib|rTI{?lzZ|SsF#!1Oh4(6&lUstNeP%}rvg3fGF(Mb5M92idmy() zS{fDhYrj;7^9jSn_5+DHk^bAU=LC_CB5`P_Oyvg&exYA&%pQ0iJrcm)?79-?f4cS3 zL-+7zhp|xVt)pWKlS^Eb>2~y5y=W)YTii;ZvXT{G z{8x@X0krWt+55deFSVg{gSI@F8~C15CTREiV+|B^mledCpj@&HN2fa}U1!*MBqJBM z2#2nR=zD+eyT8C1cu~4=)2Q?K41p*qFIOhOW~wMDVQYLw9MdWGy|?wl(9n>^o@$yM z4V!n1@RyXyH^KsI6c%B23ztNZ4`FW-S1Z{>Ccr+RNpcNB!Y<#lm^+Y_EcA~SJO0UH z;H7{X5vA6HIdMpYxmg#38cn>wml?*v=~asnL#!6{L2|VB$6dLL@(q{rxwE5>!ECK_ zm|zko79K{ZLytj!19x`$VaPLrI+vMp&FP$8DE83fza*?FTU+*GoqdG^)?ZY9h_3Nq zx39gd?;W73Y^my1kY_^%DbolXxeG;w6L9j3Cv_d*s}$FnC>Mx%K7Co9V7M1Tiq7j^ z(YQDFIqJ~3a~3hFxJMtpST8E>#32||{6tUDD;PjRJt;fGIrF?O5s+WI=;aWE;qcIQ z_|yvmW{vC$MEtZ=2GC5i^=3u9Lic50sL);KxOE%xaU0a66_-wuVL6DT$;U=`$WsUD z(;SU)Q-MZqaW>_x>c9qKMg3uz(b`Q0U&Hzzy?(PWDD(I61(S4|Q+B&;v|K@rJPCUm z8<97lgh)EKd@<51sAuH+Q(##wbk4Ljfh$P>=eM@(a+)wk|l6P@&DQD-^5si|q z7tnv5k9P3irB91B9FO>`)U}UUybs7ifS{4f2v2O%#{Hc}ORtujsPd;mhjI@h*3Zta>RnH* z-a%#njZ+EEeA0x$t7Q2>AsnKKZchh(C~D~ZrWWjj1oO;@e@g4ZRd!&!4QENH0f^e0 zCv0ttYwY#NG{&F{P(&(52^3K?*A2oCx4n-8@CX1*=oU6AlB=o(AuX%kF!>=VPB|T# zTK=eKdw!#~(n#!(<(mcLs7F?&9&!OpCmZ0yw9pEnS2V2y(uBZ{|9erkp8uq7z28p7#44xqE{XZa`}9wW?%Ei`y+xaN`l_d|c7 zX_mSiE-+)u-Qnqq0W%LMRMULE<7 zCNkRN_RUo=4=`Gw@F&`~>?O}C3V!+!VBd_#mkC%twL`N#BTBIm4bCj}u}EJ&zp)BRt9?qZGh#{*H(e@37w-{3-^}zQuI#jwM;^T z`Xs$zUEfowtM$raxg7J8j^0~6kuycik**(DT+1w|(l6_+gx#q^bU*iT==lDJN0BORX%YIY^CGCY6?ecB7D!L~h}R_HHwXPKO@^CJk&fSSouF`!b6r?Ghv}U-Vx@emToEZ*t5|;pFyac;n^1;K82X z4d=T>_{sd(lR4IGb*4L>hX(;XShYrF-Ch(!i_X6AjO9`Se7*{5b?KteCp7e={2!~&?7>c?#g>MyW&(b~Bwzle(*6lx63}UlO+0S&z2K z0Qsa&gFlY{dUX`p9EQfwn)ope2-Eu&yRke@sKC`EW~zcTFjvp)ZdOIkJRqSby2OZ) zI$(G2XtI0~A1<&~k2Nz9Ds~}xp}rq{>$<;ui!Mpp1M2EP+SgjtVSe7 z2Bv5{o)QVf^lqkONvkQh7pNc%euI#THlN{%`o04q9QuS>}d7gj7BGbfP`tUcU56{ z(>HI9#epd|bdI4dq+MW5U5?wE$crLNla5s=S`Z8rU$2`^_<1G+V*{@~fPc&rJ*{HT zYW%Cg0O`W)L5-VuOmVM<(Z**&p%NiU?3t#?oAX^H+biNU7P6vEg1;e&Fe&&)VS1n* z#j~KoETS~d5mtr=u}rTCzzlO6AX)EYjt|Rgy=ag4O}X!H?@=P2ft#X2BAx?JR=!iT zhC|Si>WlX4Yxh|tb)o7CJRt7#O654LA$d_oI+{dS`qRWFlBhG=Y~`$}q1>1|{{JyLWU zmx|`h#RTvLsNx?nX|F-Cn;+yMzzgA<&&-btlSbPYfasOa9`0|~bIJ+GO|rRnR^mO6 zr+h;>*JrKrhLSHgaOhoj?)D%??F_SOQNP}01SiSX>|1xsnMgy#fx-Hx7r_kF=AM}2 zhXHNDsHEzJ%QXwZ$@xSjn0cIVEeKa+RP_6*i>HLuwQaes{hT5@Q8^R(iM4;GdgR|> z*<`>%7tca7yFL{>^x)YXlOB-!ZCCcQFI>?S8u}R9=i*TVf*Nk$`Wm8V$}r8?|Jc!O zY!bdduhKRMxcO9P{LB--h(>)^@56PV`#XsEcfKwQyo(bYh&mJVT(4etPoQ zF`0pcXonG(SVN#iz(D$CFX>^}%t5$xok_EUSayG5Q$PR2BEWBGVb5Ef^<=uQCsxsP zqLc;tS{(2wKj9H8)k96dUx;bKA1Eq>n2y^t<9kaf8MIY<-=^AM3hPsRD6K_CUOw?}nj4)`>67I^MQgS}%IlVaFt&uQ!}-k&=*0 zwj2w5d#ahWXv#f5(?oL7=h|qsI)3*1$4qq1VW~jUK5O~>IUq5Cmxl0+K@wT%S4f3y zy-0)uyY@=A&FG5++l~h3&5~L|?o__GxiYd6d}ukq2v|#F&oL_UXlS(@l4~6|W^WFR<=Y(NfBGu$oLSh$5B{5%NB>~qeI=~4GT$7RVgteGR-R|PSj^%)s3|0}wH|~8$_{qj7tYy6hFF$>K z&70tP>A{HyU9qUc6C-O=oEYMvKw@Ejf2rpvgu}vb1H6LmW0??`+cCHxgs~QNMvB>m zD^USn(5TFZkM< za{(#h>7+-(1#zzo8E1uhWYIi8YK%tY=0{3B(jnq1^A5s~j;2FVxh?PVfw)ma&uBD8 z^DlN3EkYmOQvcjZPp90V#x5OA4;%hAxLN`4CG5F=Y<=hZdhP}Er(X~`@vj+=VQM!8 z(KVHgsw>fEKRo@_0QwAztCPMpg>2;HT5s=^%XVB=-5iqXu^wCGisPEuTx4Ai>43ep zb!mSxjYTVN*Ik=61nF*qh|K^#O=#3*j~Y2#RhgF1BqMz47B;x{32W^t20jqST{|ph z010Cb-CyzSn6n;Oq&9zQVd0MCULzjzfKPnAa$B(z`w#%u6YaPo&ZdgCUe_sRiIFc3 zn*ioCzM@G_1ASmG6VPFgtKbv4+iTt*nA(tP{hN#X<*ZbxZ|4J~Kwcz6p63ZsxH@); zTx8TGqfpZ^C|j2`O4nX>1tt|C*2I^k5OXwxut?sC&)7(ZU*UKI*n)zkE>{CB5|fuh zIL7UTy`gNAt@a8fv#jYFmX_eB-UQ)jtOvv*@ybE}8YA~OtC!Xn`O?Uzoacg>boHW; zTSTY^swmpHrO*21JNjV*^9Zk6|LilGcP1!?t%5cNiRU#+g)hv0><`FXmMz2i`4e(~ zxqpKOyH)GmP`#Qk!sF<_Gbc_uE1QI3ufJEup?D(M_?9xkp4;4G z32#$c!}jmd>*69GlJ+FVs3FIX5xww(VSX7T-#@7Nd#(<~$PCKrJ4(3nI{Mvy zAnJW~1_Ti0mX44IyzaLgke?UVzwS2{TRHq-faf+I73^{|`Tf>T{&tA`V1-|Lflmq- z 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%0AV&WkT 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%0DH}Npb^22jr$xtR=}|owk0T* z171Ef#ywk;wJUS#T#@(A6i6q-n`~&z<&C3x9(%NZ3_x`u~c=ga(;xQ{smM;Ydk6s|=mxSn|g6zb*!(fU>XI+!|wb=EmM&R~%bvI$CBQ zE??=Ize3E4T~XCsN{JyP87Fnq`?p-6w8pUw-agsSfuk1yFbv6P zuE-yL@jgDXySEk%7=0gj`vd;$d#}>m6t9Jl#~c&KHWthoQCfvPYf`-Q{ses^MeGmB zOj9G+*itQadjqrktIi-IvVLSknkRR*6SFLe-ixpt--NPnlth6laAAp zO^}GqE`5zV7A@HX&FNTeAICOtoK!V9rr-3ymTgbXNJJCic_=bu}}bNj|9yPAjYNwaZnY|e`AnUq2OLUooN z(bRZVx)VbhScXN(E8TPgj3N!+9XP>(z9ZGtr_)s*vRbqt?WAZ+wA|GGEk|gr38pY@ zP?hP;hT3AH(hE*$IvXMmx~(n77q++X)S)3vp)r=}?4GKqVRN%nQ=ip6GI7>+1r$9+ zXUgR3d)hfOT;^b3frEV$6y0FS=|l){eb~J=MN_Q46^fMt+X_qTOhvh(h&f?pi&Vnk z^Pgy)y>Hd;HLD!{*%O`9{w8JU#|qn+Jbv7f%RaDZA=ucm4pW+;@3(w&+n#DU|HZz) zqU@JR*{NyrJgqghX(NQ7E8Rghl?ARZzeod%gNUpjUY|hOOlEF0+1 z?QzeVWUX&E@;qM?QAdp&>MQX4nLJHSICU&k0$hLT%NB*!G&Cn|9^ppVQs9oZJ5hrcK@@K({0G3rwWXWdhFSr0Yue*DoDg6rnz!z_eE#j zn_Wvbmc|R*S=|nc1+6uTun56lzWz77cxFEtCv}B}TBC{CF@%(C%Jw3qyyf$KEGI-{ z{ZMb3HBC1EaCC%s2TBA=5i^&EgDP@+bfg`&cZIY28#TJF+4TXiwKLAs$42QJc9GTK z4O1@t;Dp*~cw|F{mV{YXYdRFH3kHT=j-M`a=jJ3@h3b-Q#^TP+DSq+lD8Jl4%J$n* zY~2_qlQieFz_iwkj{CfQvdFtTq_ScIq>` zzc!*Kw5nSZCZD>kiNAkqh=disHI|w~ga9{yHQ6|OH)N_(y85;u1^Axg`#f@cfeX_vwujhFB`C-y1ygBf}f;Cohcf{DCn{b7hcpgm3{`u%~+mZ(M$hl#?P~nHu>Q=HalURf`@3FbK!c zloqP$nh3YP%7va1C3h)znLpqES3Gn4IZ}2UW=UwNv?5_8kcMPK(^}TI^#U}k>1Bk7 z^!mnJe)irN*_gyM1QlOjky>>r5Y6se5*82jhCERZKDuTfbtI8_bYq%#2TB~hR3K@w z;8^>*p~}pU-;pI=bxqWpsI>;e49WI8Kkn!L9VH&#m7%+RQe(SqV}f7rA7gyN<(<4s z5P*=P7ILe!Mk|eBfYySRj4_R*JzsI+T$x|(8{@>;0*chGaPn=|8m z#H~0buM{re2}#~9@RMUd=bzsF#I#w77kK>YpGF)_;8(P_t#9+5iCRUuwRUV?2{C{#}rsm)N*()P>fub#Ib8(=; zxl0u;^p^<&jk5v^2Sm_l5{V=q?RkK+$Nmq^iDt^Va_w)9Y4ewFJjFA|pT(303XMck z_A88(a@eNBfB5--rKhPo%s(+p8v^iDK(0K_aB+-^Um;<|X^N!@=EyOkv?6IIu}quZ z^lJ93-5DOMLDI_(N{1C+9^aPb+pkxM8+ux$mZgFK+(5IYInLgV^_|^c7g5)u6&-^= zyuY2lIV3r9v4AC1O%YMcZ&9EA&50V#3wx$B3Hx%y?c12?;s~~XUN1ej2s%Pk!|<*(+xV?@dkKW1Bi&IWW2h=SrhaBw_?!Q84XO|zPyx;HW@1i^ z)rn4iXWM5m9gCF`Xfzee&5Ls*-4O!Nkgz4ce}6l>*QP1@0$)*6q=_4B<60pFR02(J zTaqX4Xjzom{dN1OBSalh8j`l;{&i{YUzbKH%`?Zxc<#g~*H#Ai`q~T>7>3DLcek;n zBfhA9=>`@L0)aN+(_22lrThS|4IE}wW)+vlFQJsWDZb%A1!NOhnvzY#EQhab`#h`K zR;{3T&`HgISlI?lL!!jOpG!kZOhe9@vQ$ceX@uK|dD;-iAP?vu8`zr3%V zO>GXpIyuf@!9@aw3>VL4#xB$oQh=u*6|?!u&Q=okjU`{23kxRdXqrB?L+8gT{NuYh zj$SGt>rB$Jx|$lZO}?_Ljk~*(D~_a>duGCVLjdtqf-i6XJjFvL-W++CuBI;f$NTXD zZ_#9NkuJL>*+NsI3EQ;z>g}In$GW@FOE`UA6jWK`vmf8ek$3wU9J#TA6o!PS{aBrpRyD4Z9lAX3^77dU_Mgj> zuXx0a`r6Ww|EDeO@Z|1xHn+uA97%_X*hN)Yvedn~dC)*hOABA$@kPG()(`w%ux*2fclVM`IX7&9M*Auq zre%I~V}?gJX7B>d{__+3!_kp2LamO7X7>uolRMiNU3Dh(0%Md5uHw{Ci6a+_9J^d( zyzJvh>Y5}aDidG!Ve6_SU%sc6_LNok0f~0(Tj)6^}wp$uR@Y$(Rg|_*iq0WxX+(ozLP6 zpUm>NKOH1D;o{hWB`hm=QxOqlOKS^XzWej^obKkC^S@>gMVGybLZ!e&c>*u+!tJk- zw8Q)!VV;hplOz+%U|AMY8tiJlgU@dI4SKrPg1NAlz=sJ!gtIoK^$nkCNQh!qcZJen zZuV(KlAXmKtLYz5PNE%7P)2u=&c)Htt-t zxR!K;S&6#jYkvOj2&YFplu}4EZlLhB#Pbze2Uv#064b1}dXQQ)jdFbrQnGDTlE=0+ zv%V#a0Mv^(AYt)Z$s>ER{OvRS7)BVL3yb=|!g0K9VuldTu2n=apn-(!UPRxp7 zm?nmh^d!6Z=;{aA({m5$Y-Z*8r00Q@0=dX%D}_KB^=;#dqlxLi2TF5!!sV??MGp2A zxG+}15SoN3P`W-O9nJ2G9&Bol^Lsnn=*rkP%>_HJ>*Mf+BF~@BacZbcpaL8TX7wT{ z%@n`&0voUXM-UFS8-x`k*0;pjyD81CHK|%#i#-@qg9x8_afDy(AEQ$7kh3L=t}}#y zQbqIWM_T#Z$6L8H=<@9!UFPy&nV2(4)+^QZF%udKzcG_FoSG=oZrJ&#{%3eUq zF~XcXN>lbU;}yj~-lcEMBv&A_+Xlnhc{&S%+_XNbq;8` zYCmQp>X`)a&gCNe&gVHXSSDBU0gWZYPDUNQCd+e*^%7d)8efGnolMMRQ)`U-)}^?s zD={TU#?mYro;qLR&G+&YN-Tbur3iCUceR`R#zQSg0mEY+fBB<+&R#4LcS1k*twPjO zp#x31P~y_)Wljv8=2Y$+m&${Tmd9|lPe4%BS%>#lm?ck=G~;x}+gO|E;`Y`}tZ(fh z+muDxMk6fzLxj|TcijgYL(Iy|}|!+q;g7_wTYaS7aI*QEN0>XS|F+(bE` zFXwV0S7xA~7%uvZ7d=W|fUhRSRD!TFO2Rft$4puhCLKwG)lD|5n;bH+$r|(#p)Uv7 zot}CEHwjalie6Nua==snIK+WtIZ`n}sd9@F^-So{+Ez-TtKp$SN`w^Qr$Njs0yCw1 z?+=&Re?HH#%OysN;ToD{2n?ZXv+${I%=r*KJ6eb2?CWsBHR+hFZ*{n@C&iBLB(@Q{ zKbO*Yye@g(ObN_P_<^SED?FuZL?;E`{#yu>EIXu zd+yBe|O(oX_Bx6 z-AxW#I$~_?jI%cDOxu2`jmHJ+s3Yqau8(9xvJc;ra}8tzlbA}z&%Qd!kA6AA{dcAK z+7k_;Zs68KjdP~l_eD40!njA@Xodc~&u}pyS8^%3K3)*2^Z^7K%MiqDleA;flCWq` zO1d*PtFsQRiRmJ^cM6lOLFewO|A;t zKm*GJHFpJ*Mohvs*xY8Yxoxs;sjoB@PvHg%rNf=12;H!bDX|Qg%}ks+yI(FO4L4v> zH*oV2-I$}}9?hBMkbt*=29_R^v->c@^_pk*Ot;XN5iehX22p>=&~SG&(7?6fYP0(f z6Bg|HXkcj&W!P(wbps8|kCpU@G|DS~2+<(v1{%1v&>-pt8fc(_WsU|>H_$)>4J>ms zh`NCW8fajdqe0XSG|)f;%Nz}&ZlHk%8d&D||D&kROx4hW+5i9m07*qoM6N<$f?4tC AmjD0& diff --git a/docs/index.rst b/docs/index.rst index f33910f7d..b4997916b 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -3,82 +3,49 @@ Welcome to PokeAlarm's documentation! ===================================== -PokeAlarm is a highly configurable application that filters and relays alerts -about Pokemon Go to your favorite online service, allowing you to be first to -know of any rare spawns or raids. - -.. image:: images/PokeAlarm.png +.. image:: images/logo.png :align: center -.. image:: https://discordapp.com/api/guilds/215181169761714177/widget.png?style=shield :https://discord.gg/S2BKC7p: .. image:: https://img.shields.io/badge/Donate-Patron-orange.svg :https://www.patreon.com/bePatron?u=5193416: .. image:: https://img.shields.io/badge/python-2.7-blue.svg .. image:: https://img.shields.io/github/license/PokeAlarm/PokeAlarm.svg - -| `GitHub `_ || `Discord `_ || `GitHub Issues `_ | +|discord| |nbsp| |patron| |nbsp| |repo| |nbsp| |issues| -.. toctree:: - :titlesonly: - :maxdepth: 2 - :caption: Contents: - :glob: - - contents/* - -.. toctree:: - :titlesonly: - :maxdepth: 2 - :caption: Settings: - :glob: - - settings/* - -.. toctree:: - :titlesonly: - :maxdepth: 2 - :caption: Filters: - :glob: +PokeAlarm is a highly configurable application that filters and relays alerts +about Pokemon Go to your favorite online service, allowing you to be first to +know of any rare spawns or raids. - filters/filters-overview - filters/monster-filters - filters/stop-filters - filters/gym-filters - filters/egg-filters - filters/raid-filters .. toctree:: - :titlesonly: - :maxdepth: 2 - :caption: DTS: - :glob: + :titlesonly: + :maxdepth: 1 + :caption: Getting Started: - dts/dynamic-text-substitution - dts/monster-dts - dts/stop-dts - dts/gym-dts - dts/egg-dts - dts/raid-dts + getting-started/installation + getting-started/FAQ .. toctree:: - :titlesonly: - :maxdepth: 2 - :caption: Alarms: - :glob: + :maxdepth: 1 + :caption: Configuration: - alarms/* + configuration/server-settings + configuration/events/index + configuration/filters/index + configuration/alarms/index + configuration/Managers + configuration/Geofences + configuration/Rules-Overview .. toctree:: - :titlesonly: - :maxdepth: 2 - :caption: Other: + :maxdepth: 1 + :caption: Guides: :glob: - other/* + guides/* .. toctree:: - :titlesonly: - :maxdepth: 2 - :caption: Documentation: + :maxdepth: 1 + :caption: Miscellaneous: :glob: - documentation/* + miscellaneous/* Indices and tables @@ -87,3 +54,14 @@ Indices and tables * :ref:`genindex` * :ref:`modindex` * :ref:`search` + +.. |discord| image:: https://discordapp.com/api/guilds/215181169761714177/widget.png?style=shield + :target: https://discord.gg/S2BKC7p +.. |patron| image:: https://img.shields.io/badge/Donate-Patron-orange.svg + :target: https://www.patreon.com/pokealarm +.. |repo| image:: https://img.shields.io/badge/github-PokeAlarm-green.svg + :target: https://github.com/PokeAlarm/PokeAlarm +.. |issues| image:: https://img.shields.io/github/issues/PokeAlarm/PokeAlarm.svg + :target: https://github.com/PokeAlarm/PokeAlarm/issues +.. |nbsp| unicode:: 0xA0 + :trim: diff --git a/docs/other/object-caching.md b/docs/miscellaneous/Object-Caching.md similarity index 53% rename from docs/other/object-caching.md rename to docs/miscellaneous/Object-Caching.md index 5e3a760a6..e1c401eee 100644 --- a/docs/other/object-caching.md +++ b/docs/miscellaneous/Object-Caching.md @@ -1,7 +1,6 @@ -# Object Caching - -## Overview +# Caching +### Overview * [Prerequisites](#prerequisites) * [Introduction](#introduction) * [Caching Methods](#caching-methods) @@ -10,23 +9,19 @@ * [Multiple Instances](#multiple-instances) * [Clearing Cache](#clearing-cache) -## Prerequisites +### Prerequisites This guide assumes: 1. You have a functional PokeAlarm installation 2. You have a basic understanding of how to manage binary files -3. You have read and understood the available Command Line Arguments in the -[Server Settings](server-settings) Wiki +3. You have read and understood the available Command Line Arguments in the [Server Settings](server-settings) Wiki -## Introduction +### Introduction -PokeAlarm uses `Cache` objects to store information that is not present on -runtime. The cached objects store information such as `gym-info` and other -dynamic objects sent into PokeAlarm via webhook. Cached data is used for -internal calculations as well as to provide details for [Dynamic Text Substitution](dynamic-text-substitution) in [Alarms](alarms). +PokeAlarm uses `Cache` objects to store information that is not present on runtime. The cached objects store information such as `gym-info` and other dynamic objects sent into PokeAlarm via webhook. Cached data is used for internal calculations as well as to provide details for [Dynamic Text Substitution](dynamic-text-substitution) in [Alarms](alarms). -## Caching Methods +### Caching Methods There are currently two methods available for object caching: @@ -39,29 +34,17 @@ _Note: If no cache-type is selected, `mem` will be chosen as the default._ ## Memory Cache -When using the `mem` cache type, cached data is stored in memory only and is -cleared whenever PA exits. This will cause all [DTS](dynamic-text-substitution) -fields which require this data to display an `unknown` or `null` value until -the data is received by PA through webhooks. +When using the `mem` cache type, cached data is stored in memory only and is cleared whenever PA exits. This will cause all [DTS](dynamic-text-substitution) fields which require this data to display an `unknown` or `null` value until the data is received by PA through webhooks. ## Binary File Cache -When using the `file` cache type, cached data is written to a binary file -located in the `cache/` directory. Each [Manager](managers) has a unique -binary cache file stored as `cache/.cache`. Cached data is -backed up to this binary file once per minute and immediately before PA exits. +When using the `file` cache type, cached data is written to a binary file located in the `cache/` directory. Each [Manager](managers) has a unique binary cache file stored as `cache/.cache`. Cached data is backed up to this binary file once per minute and immediately before PA exits. # Multiple Instances -Using File caching with multiple instances can cause conflicts as cache files -are stored under `.cache`. When using the `file` cache type and -multiple instances, take caution and ensure that all managers are assigned an -explicitly unique name. +Using File caching with multiple instances can cause conflicts as cache files are stored under `.cache`. When using the `file` cache type and multiple instances, take caution and ensure that all managers are assigned an explicitly unique name. ### Clearing Cache * **Memory Cache** is cleared whenever PA exits for any reason. -* **File Caches** may be cleared by deleting the `cache/.cache` -file that corresponds to the manager you wish to clear the cache for. (To clear - all cached data, delete all files in the cache folder). PA will need to be - restarted once cache files are erased. +* **File Caches** may be cleared by deleting the `cache/.cache` file that corresponds to the manager you wish to clear the cache for. (To clear all cached data, delete all files in the cache folder). PA will need to be restarted once cache files are erased. diff --git a/docs/documentation/patch-notes.md b/docs/miscellaneous/Patch-Notes.md similarity index 57% rename from docs/documentation/patch-notes.md rename to docs/miscellaneous/Patch-Notes.md index 5c9fc6248..e79a0c971 100644 --- a/docs/documentation/patch-notes.md +++ b/docs/miscellaneous/Patch-Notes.md @@ -2,12 +2,196 @@ ## Patch History +* [Patch 3.6](#patch-36) * [Patch 3.5](#patch-35) * [Patch 3.4](#patch-34) * [Patch 3.3](#patch-33) * [Patch 3.2](#patch-32) * [Patch 3.1](#patch-31) +--- + +## Patch 3.6 + +This patch contains several breaking changes - make sure to read +carefully, back up your current configuration, and have some free time +before attempting to upgrade. + + +### Rules (Optional) + +**New Feature** - The "Rules" feature will allow users to create rules +that dictate which filters trigger which alarms. Rules are loaded via +a file containing a json object, which has 5 sections similar to the +Filters file. Each section is a key-value pair of "rule names" to "rules". +Each rule can be described as a json object containing just two fields: +"filters" and "alarms". Each field is an array of strings corresponding to +the name of a filter or alarm from a manager. Rules cannot be loaded if +they do not match an existing filter or alarm. + +Rules are evaluated by checking the listed filters one by one (in order), +until a match is found. Once a match is found, PA will them notify each alarm +listed in the Rule. **Every** rule is always evaluated **every** time. + +Rules are an optional configuration setting and if no rules are set then PA +will check every filter in the order that they are listed in the filters file +and will target every alarm. + +Rules can be loaded via a rules file with `-r` and `--rules` via commandline +or `rules: rules.json` in config.ini. + +Each rules file must be configured key-value objects and contain at least one +or more of following rules sections: +* `monsters` +* `stops` +* `gyms` +* `eggs` +* `raids` + +The inner section of each rule must be configured as a key-value object where +the key is the rule's name, and the value is the rule's setting. + +Each rule can be described as follows: +```json +"example_rule" : { + "filters": [ "filter1", "filter2" ], + "alarms": [ "alarm1", "alarm2" ] +} +``` + + +### Alarms + +**Breaking Changes** - To fully take advantage of the "Rules" feature, the +"Alarms" feature was changed to require a key-value json object instead of +a list. Alarms should now be a list of "name" -> "alarm settings". +The alarms.json.example has been updated to match this. + + +#### Changed Alert Sections + +The Alert sections of alarms has been updated to match the event names: + +* `pokemon` -> `monsters` +* `pokestop` -> `stops` +* `gym` -> `gyms` +* `egg` -> `eggs` +* `raid` -> `raids` + + +#### Alerts Converter + +A new tool has been added to `tools/convert_alarms_file.py`, this tool is +designed to convert Alerts files from 3.5 and prior to the 3.6 alert format. + +**Usage**: +```bash +python convert_alarms_file.py /path/to/alarms.json +``` + + +#### Telegram Changes + +**Breaking Changes** - Telegram alarms have been reworked to resolve multiple +issues and address Telegram API changes. + +* **Content Changes** - Telegram now uses markdown instead of html to reduce +conflicts caused by using invalid DTS fields. Existing alerts will have to be +reconfigured to make this change. +* The `venue` field does not support markdown or html coding +* `title` and `body` have been merged into `message` to better represent how +the Telegram API actually treats messages. The old behavior can be mimiced +by using the following example content: `*TITLE GOES HERE*\n BODY GOES HERE` +* **Field Changes** - The following fields have been changed: + * `bot_token`: Can now be set at an Alert level. DTS compatible. + * `chat_id`: Now DTS compatible. + * `stickers` -> `sticker`: Set to "true" for sticker with message, + set to "false" for no sticker. + * `sticker_notify`: Whether or not sticker messages causes a notification. + * `sticker_url`: Url to be used for the sticker. Must be .webp file. + * `location` -> `map`: true for map after message, false for no map. + * `map_notify`: Whether or not map messages causes a notification. + * `venue`: Sends the map and message in a single condensed format. + * `venue_notify`: Whether or not venue messages causes a notification. + * `max_retries`: Max attempts to send for each message. + (Telegram no longer uses the command line equivalent) + + +### Filters + +* Listed filters now evaluate in the order listed in the file. +* The `"geofences" : [ "all" ]` shortcut now evaluates in the order that +the geofences are listed in the geofence file. +* `gym_name_contains` is now case-insensitive. + +#### Time Based Filtering + +Filters now support filtering based on event timing. This allows for +greater control over event alerts than what was previously supported via the +`timelimit` configuration option. + +* **New Filters** + * `min_time_left` - The minimum amount of time in seconds until the event + * `max_time_left` - The maximum amount of time in seconds until the event +* **Filter Events** + * **Monsters** - Filters based on time until monster despawns + * **Stops** - Filters based on time until the lure ends + * **Raids** - Filters based on time until the raid ends + * **Eggs** - Filters based on time until the egg hatches + + +### Locale + +* Added multi-lingual support for the `Size` DTS & Filter setting. + + +### Dynamic Text Substitutions + +* **Monsters & Raids** + * `size` - Changed to support locales + * `weather` - Outputs the current weather conditions in the alert + * `weather_id` - Outputs the current weather condition id + * `weather_or_empty` - Same as `weather` or an empty value + * `weather_emoji` - Outputs a unicode emoji for the current weather + * `boosted_weather` - Outputs the weather conditions if boosted + * `boosted_weather_id` - Outputs the boosted weather condition id + * `boosted_weather_or_empty` - `boosted_weather` or an empty value + * `boosted_weather_emoji` - Outputs an emoji for the boosted weather + * `boosted_or_empty` - Outputs the word **boosted** if Raid/Mon is boosted + * `type1` - Outputs the name of the Monster's Primary Type or `?` + * `type1_or_empty` - Same as `type1` or an empty value + * `type1_emoji` - Outputs an emoji for the Monster's Primary Type or Empty + * `type2` - Outputs the name of the Monster's Secondary Type or ? + * `type2_or_empty` - Same as `type2` or an empty value + * `type2_emoji` - Outputs an emoji for the Monster's Primary Type or Empty + * `types` - Outputs the Monster's Type formated as "type1/type2" + * `types_emoji` - Outputs an emoji for the Monster's Type(s) or Empty + +* **Eggs** + * `weather` - Outputs the current weather conditions in the alert + * `weather_id` - Outputs the current weather condition id + * `weather_or_empty` - Same as `weather` or an empty value + * `weather_emoji` - Outputs an emoji for the current weather conditions + + +### Server Settings + +* **Performance Fixes** - Users should now see improved performance + and less system resource usage overall. + + +### Bug Fixes + +* **Twitter Alarms** + * Maximum length has been extended to 280 characters to match Twitter + standards and settings + * All URLs are now counted as 23 characters towards the overall + character limit detection. URLs that would cause the tweet to exceed + 280 characters will be dropped from the tweet. + * DTS is now evaluated before the length of the status update is + calculated. This corrects issues with improper Twitter Status Truncation + + --- ## Patch 3.5 @@ -15,15 +199,17 @@ This patch contains several breaking changes - make sure to read carefully, back up your current configuration, and have some free time before attempting to upgrade. + ### Filters **Breaking Changes** - Filters have been completely reworked, with the design focused on reducing managers and optimizing system resources. Several filter parameter's have changed or been updated. For full instructions on the new system, please see the new -[Filters](filters-overview) page in the wiki. +[Filters](Filters-Overview) page in the wiki. Some highlights include: + * Custom DTS - new feature to define filter specific DTS ### Server Settings diff --git a/docs/documentation/webhook-standard.md b/docs/miscellaneous/Webhook-Standard.md similarity index 96% rename from docs/documentation/webhook-standard.md rename to docs/miscellaneous/Webhook-Standard.md index b6de66669..5c3f71538 100644 --- a/docs/documentation/webhook-standard.md +++ b/docs/miscellaneous/Webhook-Standard.md @@ -7,9 +7,9 @@ * [Gyms](#gyms) * [Gym-details Example](#gym-details-example) * [Egg example](#egg-example) -* [Raid Example](#raid-example) +* [Raid example](#raid-example) -## ***Pokemon*** +## Pokemon Pokemon standard now includes moveset and IVs as of commit [oc1b4](https://github.com/RocketMap/PokeAlarm/commit/0c1b4cce80e0ceb3cc6dbb2d802204af4dd3ce60). @@ -92,7 +92,7 @@ Pokemon standard now includes moveset and IVs as of commit [oc1b4](https://githu } ``` -#### Gym-details Example: +#### Gym-details example: ```json { @@ -104,7 +104,7 @@ Pokemon standard now includes moveset and IVs as of commit [oc1b4](https://githu "description": "Sculpture on the exterior of the Graduate School of Public Health building.", "team": 1, "latitude": 37.7876146, - "longitude": -122.390624, + "longitude": -122.390624, "pokemon": [{ "num_upgrades": 0, "move_1": 234, @@ -172,8 +172,8 @@ Pokemon standard now includes moveset and IVs as of commit [oc1b4](https://githu ## Egg example -Take note that the type for egg is `raid` because it is collected from the -same webhook event from RocketMap as raids are. +Take note that the type for egg is `raid` because it is collected from the same +webhook event from RocketMap as raids are. ```json { @@ -189,7 +189,7 @@ same webhook event from RocketMap as raids are. } ``` -## Raid Example +## Raid example ```json { diff --git a/docs/other/google-maps-api-key.md b/docs/other/google-maps-api-key.md deleted file mode 100644 index 117dd60c1..000000000 --- a/docs/other/google-maps-api-key.md +++ /dev/null @@ -1,191 +0,0 @@ -# Google Maps API Keys - -## Overview - -* [Prerequisites](#prerequisites) -* [Introduction](#introduction) -* [Enabling the Various Google Maps APIs and Obtaining a Key](#enabling-the-various-google-maps-apis-and-obtaining-a-key) -* [Testing Your API Key](#testing-your-api-key) - * [Geocoding](#geocoding) - * [Distance Matrix](#distance-matrix) - * [Static Maps](#static-maps) -* [Starting PokeAlarm with a Google Maps API Key](#starting-pokealarm-with-a-google-maps-api-key) -* [Google API Daily Limit](#google-api-daily-limit) - -## Prerequisites - -This guide assumes: - -1. You have a functional PokeAlarm installation -2. You have an available Google account (e.g., Gmail) -3. You have read and understood the available Command Line Arguments in the [Server Settings](server-settings) wiki - -## Introduction - -Using a Google Maps API key in PokeAlarm is **optional**. -It enable additional features in PokeAlarm. - -In order to use a feature, you must have the corresponding API enabled in -Google API Manager, and have a generated Google Maps API key. - -Below are the available features, and Google Map API to enable for that feature: - -| PokeAlarm Feature | Google Maps API to Enable | -|:--------------------------------------------------------------|:-----------------------------| -| Set a location by name or address | Google Maps Geocoding | -| Calculate walking/biking/driving distance from a set location | Google Maps Distance Matrix | -| Show a Mini Map of pokemon, gyms, lures, eggs or raids | Google Static Maps | - -You will enable the APIs per the requirements of you own PokeAlarm installation. -In other words, if you only want static maps, enable just the Google Static -Maps API. If you want static maps and to set your location, enable the Google -Static Maps and Google Maps Geocoding APIs. - -In this guide, we will: - -1. Enable all 3 APIs and generate an API key that will allow PokeAlarm to -provide these features -2. Test the key to make sure it working correctly -3. Start **PokeAlarm** with your API key - -## Enabling the Various Google Maps APIs and Obtaining a Key -Now we're going create a new project, add our 3 APIs to it, then generate our -API key. - -1. Log into [Google API Manager](https://console.developers.google.com/). - -2. Click **Dashboard** at the left. If this is your first time visiting the -developers console, you should see "No APIs enabled" in the middle, like the -image below. - -![](../images/01-blank-dashboard.png) - -3. At the top of the page, click the **Project** dropdown, then select -**Create project**. - -![](../images/02-create-project.png) - -4. Name this project whatever you would like, e.g., "PokeAlarm". Click **Create**. - -![](../images/03-new-project-name.png) - -5. You should now see your project name at the top. Click the blue -**+ENABLE API** button at the top middle, which will bring your to the -Google API Library. (You can also click **Library** at the left.) - -![](../images/04_project_created.png) - -6. The Google API Library is where we will select our 3 APIs to enable. -Let's enable the **Google Maps Geocoding** API first. You can either -type **Google Maps Geocoding API** in the middle search bar, or click -on it under the "Google Maps API" section in the middle right. - -![](../images/05_library.png) - -7. You should see **Google Maps Geocoding API**. Click the blue -**ENABLE** button at the top to enable the Google Maps Geocoding API. - -![](../images/06_enable_geocoding_api.png) - -You should see this screen if enabled: - -![](../images/07_enabled_geocoding_api.png) - -Click on **Dashboard** at the left. You should now see **Google Maps -Geocoding API** at the middle bottom. - -![](../images/08_dashboard_with_geocoding_api_enabled.png) - -8. Click on **Library** at the left and repeat the same process of enabling -APIs for the **Google Maps Distance Matrix** and **Google Static Maps** APIs. -When you are finished, click **Dashboard** on the left and make sure that you -see all 3 APIs at the middle bottom. - -![](../images/09_dashboard_with_geocoding_distance_staticmaps_api_enabled.png) - -9. Now that we have the 3 APIs enabled, let's generate our API key. Click -on **Credentials** at the left, then the blue **Create Credentials** in -the middle. - -![](../images/10_credentials.png) - -10. Click **API key** in the middle. - -![](../images/11_credentials2.png) - -11. Select **Browser key**. - -![](../images/12_select_browser_key.png) - -12. If desired, name your key, or leave it as the default name. Click the -blue **Create** button. - -![](../images/13_key_name.png) - -13. Your new API key will appear. Click the blue **OK** button. - -![](../images/14_here_is_your_key.png) - -To find your key later, click on the blue **Credentials** button at the left. - -![](../images/15_find_your_key.png) - -## Testing Your API Key - -Now that you have your various APIs enabled and your API key created, -let's test to see if it is working correctly. - -### Geocoding - -To verify that your API key is working for geocoding and reverse geocoding, -visit the URLs below and replace `YOUR_API_KEY` with your Google Maps API key. - -**Geocoding** -``` -https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY -``` -**Reverse Geocoding** -``` -https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY -``` - -### Distance Matrix - -To verify that your API key is working for travel distance and time, visit -the URLs below and replace `YOUR_API_KEY` with your Google Maps API key. - -``` -https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=Washington,DC&destinations=New+York+City,NY&key=YOUR_API_KEY -``` - -### Static Maps - -To verify that your API key is working for Static Maps, visit the URL below -and replace `YOUR_API_KEY` with your Google Maps API key. -``` -https://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=600x300&maptype=roadmap&markers=color:blue%7Clabel:S%7C40.702147,-74.015794&markers=color:green%7Clabel:G%7C40.711614,-74.012318&markers=color:red%7Clabel:C%7C40.718217,-73.998284&key=YOUR_API_KEY -``` -If your key is valid, you should see this same static map image in your browser: - -![](../images/staticmaptest.png) - -## Starting PokeAlarm with a Google Maps API Key - -There are 2 methods to start **PokeAlarm** with your Google Maps API key: - -1. Run the command `python start_pokealarm.py -k YOUR_GOOGLE_MAPS_API_KEY` - -2. Add `key:YOUR_GOOGLE_MAPS_API_KEY` to `config.ini` located in the `config` -subfolder of your PokeAlarm installation, then run the command -`python start_pokealarm.py`. - -## Google API Daily Limit - -Google allows up to 2,500 API requests per day for free. You may view your -API usage from the Dashboard of the -[Google API Manager](https://console.developers.google.com/). If you have -exceeded the free daily quota of 2,500 hits, the mapping elements in PokeAlarm -may not function correctly. If you find that you are exceeding the free daily -2,500 API calls, you may either switch to another valid Google Maps API key -for the day or sign up for a Google Maps API Premium plan. For pricing -information, visit the [Google Maps API Pricing and Plans page](https://developers.google.com/maps/pricing-and-plans/#details). diff --git a/docs/other/v3-guide.md b/docs/other/v3-guide.md deleted file mode 100644 index 0158ecbb3..000000000 --- a/docs/other/v3-guide.md +++ /dev/null @@ -1,422 +0,0 @@ -# Remedy's v3 Guide - -Updated: 28 August 2017 - -## Purpose - -* This document is intended to quickly provide PokeAlarm users with info to -get started. It is not intended to replace the full wiki. - -## Overview - -* [Before you begin](#before-you-begin) -* [Notes](#notes) -* [Introduction](#introduction) - * [Changes to JSON files](#changes-to-json-files) - * [Config file: `filters.json`](#config-file-filtersjson) - * [Gyms](#gyms) - * [Changes in move filtering](#changes-in-move-filtering) - * [Filtering on a single `quick_move`](#filtering-on-a-single-quick_move) - * [Filtering on more than one `charge_move`](#filtering-on-multiple-charge_move-moves) - * [NEW: filtering on `moveset`](#new-filtering-on-moveset) - * [NEW: filtering on `size`](#new-filtering-on-size) - * [New: Optional ignoring of pokemon with missing IVs or moves](#new-optional-ignoring-of-pokemon-with-missing-ivs-or-moves) - * [Config file: `geofence.txt` (optional)](#config-file-geofencetxt-optional) - * [Config file: `alarms.json`](#config-file-alarmsjson) - * [New and updated Dynamic Text Substitutions](#new-and-updated-dynamic-text-substitutions) -* [Upgrading from PokeAlarm Version 2 to Version 3](#upgrading-from-pokealarm-version-2-to-version-31) -* [Running PokeAlarm v3](#running-pokealarm-v3) - * [Optional Arguments for `start_pokealarm.py`](#optional-arguments-for-start_pokealarmpy) - * [Running multiple alarms, filters, etc., in a single `start_pokealarm.py` instance from the command line](#running-multiple-alarms-filters-etc-in-a-single-start_pokealarmpy-instance-from-the-command-line) - * [Running one Manager from the command line](#running-one-manager-from-the-command-line) - * [Running two Managers from the command line](#running-two-managers-from-the-command-line) - * [Special case: using one `filters.json`, `geofence.txt`, `alarms.json`, etc., for all Managers in the command line](#special-case-using-one-filtersjson-geofencetxt-alarmsjson-etc-for-all-managers-from-the-command-line) - * [Using `config.ini` to simplify Manager... management](#using-configini-to-simplify-manager-management) - * [Naming your Managers](#naming-your-managers) - * [Running Multiple Instances of the PokeAlarm Server](#running-multiple-instances-of-the-pokealarm-server) -* [Final notes](#final-notes) - -## Before you begin - -* Deadly has to eat! Get the word out about PokeAlarm and send a [Paypal tip](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=5W9ZTLMS5NB28&lc=US&item_name=PokeAlarm¤cy_code=USD) or [Patreon pledge](https://www.patreon.com/pokealarm) his way for a job well done and to keep the features coming. -* Version 3.1 is now in the master branch. Read the patch notes if you are upgrading from version 3. -* Version 2 is now in a separate branch, [v2](https://github.com/kvangent/PokeAlarm/tree/v2) -* If you have experience with PokeAlarm v2, use the .example files in v3 root to quickly get started -* Features are constantly being added. Always visit the #announcements discord channel for udpates -* Contact us in the [#troubleshooting discord channel](https://discordapp.com/channels/215181169761714177/218822834225545216) or open a ticket on our [github page](https://github.com/RocketMap/PokeAlarm/issues) - -## Notes - -* If RocketMap is not configured to send moves or IVs for particular pokemon, e.g., `-eblk`, then you will get a `unkn` message for stats if you do not set that particular pokemon to `"false"` in `filters.json`. This behavior is intentional in PokeAlarm v3. This is to ensure that you get the snorlax notification even if RocketMap sends the webhook without IVs or moves. To bypass, use `"ignore_missing":"True"` in your `filters.json` either globally or individually for each Pokemon. -* RocketMap webhooks have been recently undergoing changes. You may see errors in the PokeAlarm v3 log such as `[ MainProcess][WebhookStr][ ERROR] Encountered error while processing webhook (TypeError: int() argument must be a string or a number, not 'NoneType') -`. This is because RocketMap is sending new webhook information that PokeAlarm hasn't yet incorporated. Your PokeAlarm setup will still function normally. -* Remember - you only need to edit the JSON, `geofence.txt`, and `config.ini` files. Other modifications to the code are not supported!!! -* PyCharm is a great IDE to manage your JSON and config files. The EDU edition is free: https://www.jetbrains.com/pycharm-edu . This will will help you avoid those pesky formatting errors. -* Alternatively, use an online JSON editor like http://www.jsoneditoronline.org which will yell at you if the json is incorrectly formatted - -## Introduction -PokeAlarm v3 takes advantage of multiprocessing to simplify running multiple configurations. To further simplify configuration, the `alarms.json` as you know it in v2 has been split into `alarms.json` and `filters.json`. Geofencing is still handled by `geofence.txt`, which now allows for multiple geofences in the same file. You can add multiple config files in a list in `config.ini`. - -Here's a visual on the PokeAlarm v3 workflow: - -![](../images/v3_overview.png) - -* The PokeAlarm Server is initiated by `start_pokealarm.py` -* The number of managers is set etiher in the command line or `config.ini` -* Each Manager is assigned a `filters.json`, `geofence.txt` (optional), and `alarms.json` -* `filters.json` contains the pokemon, gym, and pokestop configs -* `geofences.txt` is optional, and contains coordinates for one or more areas to limit notifications -* `alarms.json` contains one or more services, e.g., twitter, slack, discord, to send the custom notifications - -## Changes to JSON files - -The `alarms.json` in PokeAlarm v2 contained four sections - alarms, gyms, pokemon, pokestops. - -In PokeAlarm v3, the configuration has been split between three files - filters, geofences, and alarms: - -| config file | description | -|:-----------:|:----------| -`filters.json` | enables pokemon, gym, and pokestop settings -`geofence.txt` | optional, handles geofence(s) -`alarms.json` | configures alarms only - -See the .example files in your PokeAlarm root directory for sample setups. - -### Config file: `filters.json` - -* This is a **required** file -* The `pokemon:` section in the PokeAlarm v2 has been moved to its own file, `filters.json`. - -#### Gyms - -``` -"gyms":{ - "enabled":"False", - "ignore_neutral":"False", - "filters":[ - { - "from_team":["Valor", "Instinct", "Mystic"], "to_team":["Valor", "Instinct", "Mystic"], - "min_dist":"0", "max_dist":"inf" - } - ] -}, -``` - -* A new key, `ignore_neutral`, has been added. This is to prevent those "It is now controlled by Neutral" gym messages. -* The keys for each team have been simplified. Setting a team value to `True` will filter for any gym action for that particular team. - -### Changes in move filtering - -#### Filtering on a single `quick_move` -The following example will filter for Dragonites with Dragon Breath. In Version 3, you must wrap the move in brackets `[ ]`. - -`"Dragonite": { "quick_move": [ "Dragon Breath" ] }` - -#### Filtering on multiple `charge_move` moves - -The following example will filter for Dragonites with either Dragon Claw or Hyper Beam. In Version 3, you must wrap the moves in brackets `[ ]`, and separate each move with a comma `,`. - -`"Dragonite": { "charge_move": [ "Dragon Claw", "Hyper Beam" ] }` - -#### NEW: filtering on `moveset` - -New to PokeAlarm Version 3 is the ability to filter on a moveset, that is, a specific combination of `quick_move` AND `charge_move`. This is useful for looking for attacking or defending Pokemon. - -The following example will filter for Dewgong with Frost Breath and Blizzard: - -`"Dewgong": { "moveset": [ "Frost Breath/Blizzard" ] }` - -The following example will filter for Dragonites with either -* Dragon Breath AND Dragon Claw - -OR - -* Steel Wing AND Dragon Pulse - -`"Dragonite": { "moveset": [ "Dragon Breath/Dragon Claw", "Steel Wing/Dragon Pulse" ] }` - -### NEW: filtering on `size` - -Want those tiny Rattata and big Magikarp badges? Here's how to add them to your `filters.json`. (Remember, you'll need two different JSON files if you're looking for either high IV or XL karp.) - -```json -"Rattata":{"size":['tiny'] }, -"Magikarp":{ "size":['big'] }, -``` - -If you'd like to filter on other sizes, select from the following: - -**PokeAlarm Version 3** - -| Filter | Description, Version 3 | -|:------:|:------------| -| `size` | `"XS"`,`"Small"`, `"Normal"`, `"Large"`, `"XL"` - -**PokeAlarm Version 3.1** renames `XS` and `XL` to `tiny` and `big`, to better match in-game text. - -| Filter | Description, Version 3.1 | -|:------:|:------------| -| `size` |`"tiny"`,`"small"`, `"normal"`, `"large"`, `"big"` - -#### New: Optional ignoring of pokemon with missing IVs or moves -If RocketMap is not configured to send moves or IVs for particular pokemon, e.g., `-eblk`, then you will get a `unknown` message for notifications if you do not set that particular pokemon to `"false"` in `filters.json`. This behavior is intentional in PokeAlarm v3. This is to ensure that you get the Snorlax notification even if RocketMap sends the webhook without IVs or moves. - -To bypass, use `"ignore_missing":"True"` in your `filters.json` either globally or individually for each Pokemon. - -`"Pidgey": { "ignore_missing":"True" }` - -It is highly recommended to disable this option for the rares - snorax, dragonite, lapras - since you'll want to be notified of those, regardless of stats. - -### Config file: `geofence.txt` (optional) - -* This is an *optional* file -* In version 3, you are permitted to have multiple geofences in a single file. In order to distinguish between different geofences, each set of coordinates in your geofence.txt file must contain a header with a set of brackets, like so: - -``` -[Central Park] -40.801206,-73.958520 -40.767827,-73.982835 -40.763798,-73.972808 -40.797343,-73.948385 - -[Other Place] -61.801206,-100.958520 -61.767827,-100.982835 -61.763798,-100.972808 -61.797343,-100.948385 - -``` - -PokeAlarm v3 will fail otherwise. - -### Config file: `alarms.json` -* This is a **required** file -* the `alarms:[]` section in PokeAlarm v2 configuration file has been moved into its own file, `alarms.json` -* The `alarms:` key has been removed from the file. Otherwise, everything is the same from v2 -* You may copy your alarm configuration from v2 into v3 -* The existing documentation for Alarm services should still be applicable to PokeAlarm v3. Some keys have changed in v3.1 - -#### New Filters - - -#### New and updated Dynamic Text Substitutions -Version 3 adds new DTS options and makes slight changes to some existing ones. - -| Version 2 | Version 3 | Version 3.1 | Notes | -|:---------:|:----------:|:------------:|:------| -| | | `` | Name of the geofence where the alerted Pokemon originated -| `` | ``| No Change | Pokemon ID. Primarily affects Pokemon image URL in notification -| `` | `` | `` | Added underscore to match code styling of project -| `` | `` | `` | Added underscore to match code styling of project -| | `` | No Change | New option -| | `` | No Change | | New option. When coupled with ``, useful for filtering on a specific IV range of pokemon. Or useful for finding 0% IV pokemon? :) -| | `` | No Change | IV, rounded to 0 decimals (great for Twitter) -| | `` | No Change | IV, rounded to 2 decimals -| | |`` -| | `` | `` | -| | `` |`` | -| | `` | `` -| | `` | `` -| | |`` -| | `` | `` -| | `` | `` -| | `` | `` -| | `` | `` -| | `` | No Change -| | `` | No Change -| | ``| No Change -| | `` | No Change -Want more options? [Buy Deadly a beer](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=5W9ZTLMS5NB28&lc=US&item_name=PokeAlarm¤cy_code=USD) and maybe he'll come around. =P - -## Upgrading from PokeAlarm Version 2 to Version 3.1 - -Run the following commands: -``` -git pull -pip install -r requirements.txt -``` - -If you run into significant issues during the pull, back up your JSON and config.ini files, then clone Pokelarm again. - -Remember that there are significant changes to the JSON files, so be sure that you've completed the prior steps before running PokeAlarm version 3. - - -## Running PokeAlarm v3 -PokeAlarm v3 is now started by running `start_pokealarm.py`. - -### Optional Arguments for `start_pokealarm.py` -Type `start_pokealarm.py -h` to view a list of arguments. Arguments that start with `--`, e.g., `--key`, can also be set in `config.ini`, located in the `config` folder of your PokeAlarm root directory. Command line values will override values stored in `config.ini`. - -The list of arguments are below: - - -| Argument | Default | Description -|:------------|:-------:|:-----------| -| `-h`, `--help` | | show this help message and exit -| `-cf`, `--config`| `config/config.ini` | Specify configuration file other than config.ini -| `-d`, `--debug` | | Debug Mode -| `-H HOST`, `--host HOST` | `127.0.0.1` | Set web server listening host -| `-P PORT`, `--port PORT` | `4000` | Set web server listening port -| `-m MANAGER_COUNT`, `--manager_count MANAGER_COUNT` | `1` | Number of Manager processes to start -| `-M MANAGER_NAME`, `--manager_name MANAGER_NAME` | | Names of Manager processes to start -| `-k KEY`, `--key KEY` | | Specify a Google API Key to use. -| `-f FILTERS`, `--filters FILTERS` | `filters.json` | Filters configuration file -| `-a ALARMS`, `--alarms ALARMS` | `alarms.json` | Alarms configuration file -| `-gf GEOFENCES`, `--geofences GEOFENCES` | | file containing list of coordinates to define a geofence -| `-l LOCATION`, `--location LOCATION` | | Location, can be an address or coordinates -| `-L {de,en,es,fr,it,pt,zh_hk}`, `--locale {de,en,es,fr,it,pt,zh_hk}` | |Locale for Pokemon and Move names: default en, check locale folder for more options -| `-u {metric,imperial}`, `--units {metric,imperial}` | | Specify either metric or imperial units to use for distance measurements. -| `-tl TIMELIMIT`, `--timelimit TIMELIMIT` | | Minimum number of seconds remaining on a pokemon to send a notify -| `-tz TIMEZONE`, `--timezone TIMEZONE` | | Timezone used for notifications. Ex: `America/Los_Angeles`. Visit [this article](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) for a list of valid timezones. - -Running `start_pokealarm.py` will start the PokeAlarm server and assume the following as default: - -``` -Host: 127.0.0.1 -Port: 4000 -filters: filters.json -alarms: alarms.json -``` - -Which is equivalent to running the command below: - -`start_pokealarm.py -H 127.0.0.1 -P 4000 -f filters.json -a alarms.json` - -### Running multiple alarms, filters, etc., in a single `start_pokealarm.py` instance from the command line -Version 3 requires `filters.json` and `alarms.json`. `Geofence.txt` is optional. - -| Command line parameter | default | Desciption | -|-----------|:----------:|---------------------| -`-f FILTERS.JSON` | `filters.json` | your desired pokemon, gym, and pokestop filters. Visit the [Filters](Filters) wiki article for more details. -`-gf GEOFENCE_FILE` | `geofence.txt` | File containing a list of coordinates for one or more geofence. Requires a header, in brackets `[ ]`, before each list of coordinates. Visit the [Geofences](geofences) wiki article for more details. -`-a ALARMS.JSON` | `alarms.json` | set of alarms, or services, e.g., Twitter, Discord, Slack. Visit the [Alarms](alarms) wiki article for details. -`-m NUMBER_OF_MANAGERS` | `1` | number of total PokeAlarm Managers (processes) - -### Running one Manager from the command line -If you want just one manager with one geofence, filter, and alarm config, run like so: - -`start_pokealarm.py -m 1 -f filters.json -gf geofences.txt -a alarms.json` - -(`-m 1` is the default. It's added above just for clarity. You can skip if you plan on running only 1 Manager.) - -### Running two Managers from the command line -If you want to run 2 managers, each with it's own filters, geofence, and alarms, you need to specify them in the desired order like so: - -`start_pokealarm.py -m 2 -f filters1.json -gf geofences1.txt -a alarms1.json -f filters2.json -gf geofences2.txt -a alarms2.json` - -This way, the configs are matched like so: - -| Manager Number | filter | geofence | alarm | -|:--------------:|:------:|:--------:|:-----:| -| Manager 1 | `filters1.json`| `geofences1.txt` | `alarms1.json` | -| Manager 2 | `filters2.json`|`geofences2.txt` | `alarms2.json` | - -### Special case: using one `filters.json`, `geofence.txt`, `alarms.json`, etc., for all Managers from the command line -Let's say you want one `filters_all.json` for two managers, like so: - -| Manager | Description | -|:-------:|:-----------:| -| PokeAlarm Manager 1 | `filters_all.json`, `geofences1.txt`, and `alarms1.json` -| PokeAlarm Manager 2 | `filters_all.json`, `geofences2.txt`, and `alarms2.json` - -If you run `start_pokealarm.py` with more than one manager and only specify one `-f filters_all.json` in the command line, PokeAlarm v3 will assign that `filters_all.json` to all managers. For example: - -`start_pokealarm.py -m 2 -f filters_all.json -gf geofences1.txt -a alarms1.json -gf geofences2.txt -a alarms2.json` - -### Using `config.ini` to simplify Manager... management -To faciliate multiple combinations of managers, filters, alarms, geofences, etc., PokeAlarm v3 allows you add a list of these parameters in `config.ini`. - -Scenario: Let's say you want to run PokeAlarm for 2 areas - Los Angeles and Tokyo - with 2 filters each (`filters_main.json`, `filters_nearby.json`). Three geofences are desired (`geofence_la.txt`, `None`, and `geofence_tk.txt`), and one alarm config each (`alarms_la_v3.json` and `alarms_tk_v3.json`) is added, for a total of 4 PokeAlarm managers. - -In a table, it looks like this: - -| Manager Number | Parameter | Value | -|:--------------:|:---------:|:-----:| -| 1 | location | `"Los Angeles CA"` | -| 1 | filter | `filters_main.json`| -| 1 | geofence | `geofence_la.txt` | -| 1 | alarms | `alarms_la.json` | -| 1 | unit | `imperial` | -| 1 | timezone | `Amer\Los_Angeles` | -| --------|---------- |-------| -| 2 | location | `"Los Angeles CA"` | -| 2 | filter | `filters_nearby.json`| -| 2 | geofence | `None` | -| 2 | alarms | `alarms_la.json` | -| 2 | unit | `imperial` | -| 2 | timezone | `Amer\Los_Angeles` | -| --------|---------- |-------| -| 3 | location | `"Tokyo Japan"` | -| 3 | filter | `filters_main.json`| -| 3 | geofence | `geofence_tk.txt` | -| 3 | alarms | `alarms_tk.json` | -| 3 | unit | `metric` | -| 3 | timezone | `Amer\Los_Angeles` | -| --------|---------- |-------| -| 4 | location | `"Tokyo Japan"` | -| 4 | filter | `filters_nearby.json`| -| 4 | geofence | `None` | -| 4 | alarms | `alarms_tk.json` | -| 4 | unit | `metric` | -| 4 | timezone | `Amer\Los_Angeles` | - -In the CLI, it would look like this: - -`start_pokealarm.py -l "Los Angeles CA" -l "Los Angeles CA" -l "Tokyo Japan" -l "Tokyo Japan" -f filters_main.json -f filters_nearby.json -f filters_main.json -f filters_nearby.json -gf geofence_la.txt -gf None -gf geofence_tk.txt -gf geofence_tk.txt -a alarms_la_v3.json -a alarms_la_v3.json -a alarms_tk_v3.json -a alarms_tk_v3.json -u imperial -u imperial -u metric -u metric -tz America/Los_Angeles` - -Pretty beastly, right? Here's an example of how to configure `config.ini` to achieve the same goal: - -``` -manager_count: 4 -location: [ "Los Angeles CA", "Los Angeles CA", "Tokyo Japan", "Tokyo Japan" ] -filter: [ filters_main.json, filters_nearby.json, filters_main.json, filters_nearby.json ] -geofence: [ geofence_la.txt, None, geofence_tk.txt, geofence_tk.txt ] -alarms: [ alarms_la_v3.json, alarms_la_v3.json, alarms_tk_v3.json, alarms_tk_v3.json ] -unit: [ imperial, imperial, metric, metric ] -timezone: America/Los_Angeles - -``` -(The spacing for alignment is purely for aesthetic purposes.) - -You would then run the following to launch the PokeAlarm server: - -`start_pokealarm.py` - -That's it. (=0 - -Some notes: - -* Order is important - the list elements are index matched with each other -* The geofence line in the example above contains a `None` entry, meaning that the second Manager will not use a geofence -* Location syntax is finicky. Use `"Los Angeles CA"` but not `"Los Angeles, CA"`. The comma will mess things up -* The `timezone` with only one element, `America/Los_Angeles`, will apply to all 4 managers. Don't wrap the timezone in double quotes - -The following parameters can be set in a list in `config.ini`: -* key -* manager name -* location -* filters -* geofences -* alarms -* unit -* timelimit - -### Naming your Managers -Similar to `-sn` in RocketMap, you can name individual PokeAlarm Managers. This helps to make the log files easier to read. - -* Use `-M "Manager 1" -M "Manager 2" -M "Manager 3"` in the commandline -* In `config.ini`, use `manager_name: [ "Manager 1, "Manager 2", "Manager 3" ]` in a list. - * Tip: As I did above, you can add extra white spaces to line up the different managers in `config.ini` for aesthetics - -### Running Multiple Instances of the PokeAlarm Server -Use the `-cf` flag for each instance you plan to run. Make sure that each instance is using a different port. -``` -start_pokealarm.py -cf config1.ini -start pokealarm.py -cf config2.ini -``` - -## Final notes - -* The wiki is being overhauled to reflect the above notes and more. -* If you have questions that haven't been addressed in this quick start guide, hit us up in the discord channel or submit a ticket on the Github page. -* If you enjoy PokeAlarm, [please support the developer by sending a small donation.](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=5W9ZTLMS5NB28&lc=US&item_name=PokeAlarm¤cy_code=USD) PokeAlarm is used by literally thousands of people on a daily basis. Pretty much every public twitter feed uses PokeAlarm - why not send a beer to the dev for a job well done? (=0 Happy Hunting and Good Luck! diff --git a/docs/other/v3.2-guide.md b/docs/other/v3.2-guide.md deleted file mode 100644 index f10f15270..000000000 --- a/docs/other/v3.2-guide.md +++ /dev/null @@ -1,145 +0,0 @@ -# Remedy's v3.2 Guide - -Updated: 18 July 2017 - -## Purpose - -* This document is intended to quickly provide PokeAlarm users with info to get started. It is not intended to replace the full wiki. - -## Overview - -* [Before you begin](#before-you-begin) -* [Notes](#notes) -* [Introduction](#introduction) - * [Upgrading from 3.1](#upgrading-from-31) - * [Filters](#updating-filter-configuration) - * [Alarms](#alarms) - -## Before you begin -* Version 3.2 is now in the master branch. Read the patch notes if you are upgrading from version 3. -* Features are constantly being added. Always visit the #announcements discord channel for udpates -* Contact us in the [#troubleshooting discord channel](https://discordapp.com/channels/215181169761714177/218822834225545216) or open a ticket on our [github page](https://github.com/PokeAlarm/PokeAlarm/issues) - -## Notes -* Remember - you only need to edit the JSON, `geofence.txt`, and `config.ini` files. Other modifications to the code are not supported!!! -* PyCharm is a great IDE to manage your JSON and config files. The EDU edition is free: https://www.jetbrains.com/pycharm-edu . This will will help you avoid those pesky formatting errors. -* Alternatively, use an online JSON editor like http://www.jsoneditoronline.org which will yell at you if the json is incorrectly formatted - -## Introduction -PokeAlarm v3.2 introduces support for -* Raid alarms -* New Dynamic Text Substitution for pokemon CP, level and more gym information - -## Upgrading from 3.1 - -1. Update PokeAlarm `git pull` -2. Make sure requirements are in oder `pip install -r requirements.txt` -3. Change the configuration with the new raid filters - see the information below -4. (Optional) modify your `alarms.json` to customize egg and raid messages. - -### Updating Filter Configuration -To use 3.2, existing filters.json file must be updated with the two new sections describing eggs and raids in filters.example.json. Either copy the new sections into your existing configuration(s) or start from scratch by making a copy of the example file. - -The filter following new egg filters are available: - -- **min_level**: An integer describing the minimum level of the raid you want to send alarms about. Raids with a lower level will not be sent -- **max_level**: An integer describing he maximum level of the raid you want to send alarms about. Raids with a higher level will not be sent - -Example eggs filter: -```json - "eggs": { - "enabled":"True", - "min_level": "1", - "max_level": "5" - }, -``` - -The default pokemon filter is used for raids and kept the same way as pokemon filters for simplicity, but some values like iv and size will not have a meaningful use. Raid pokemon will only report CP and have perfect IVs. - -See the pokemon filter documentation ([Filters] ) for more information. - -Example raids filter: -```json - "raids":{ - "enabled":"True", - "default": { - "min_dist":"0", "max_dist":"inf", "min_cp": "0", "max_cp": "999999", "min_iv":"0", "max_iv":"100", - "min_atk": "0", "max_atk":"15", "min_def": "0", "max_def":"15", "min_sta": "0", "max_sta":"15", - "quick_move": null, "charge_move": null, "moveset": null, - "size": null, "gender": null, "form": null, "ignore_missing": "False" - }, - "Bayleef":"True", - "Croconaw":"True", - "Magikarp":"True", - "Quilava":"True", - "Electabuzz":"True", - "Exeggutor":"True", - "Magmar":"True", - "Muk":"True", - "Weezing":"True", - "Alakazam":"True", - "Arcanine":"True", - "Flareon":"True", - "Gengar":"True", - "Jolteon":"True", - "Machamp":"True", - "Vaporeon":"True", - "Blastoise":"True", - "Charizard":"True", - "Lapras":"True", - "Rhydon":"True", - "Snorlax":"True", - "Tyranitar":"True", - "Venusaur":"True", - "Articuno":"True", - "Zapdos":"True", - "Moltres":"True", - "Mewtwo":"True", - "Mew":"True", - "Raikou":"True", - "Entei":"True", - "Suicune":"True", - "Lugia":"True", - "Ho-Oh":"True", - "Celebi":"True" - } -``` - -## Alarms -if you want custom alarm messages you can use dynamic text substitution as with existing alarms. There are two new messages to set up: -- **egg** - Alarm when a raid battle is announced - only contains raid level and start/end times but no pokemon -- **raid** - Alarm when a pokemon battle has started in a gym. Contains raid level, start and end times and pokemon information - -For raid messages you can use the same keywords as pokemon alarms, including cp and moves. - -Additionally there are a few new keywords: -- : Puts in the level of the raid -- , , the time for the raid start in 24 hour, 12 hour and time left until start. - -The following is the default alarms for egg and raid in Discord: - -### Egg -```json - "egg": { - "username": "Egg", - "content": "", - "icon_url": "https://raw.githubusercontent.com/PokeAlarm/PokeAlarm/master/icons/egg_.png", - "avatar_url": "https://raw.githubusercontent.com/PokeAlarm/PokeAlarm/master/icons/egg_.png", - "title": "Raid is incoming!", - "url": "", - "body": "A level raid will hatch ()." - } -``` - -### Raid -```json - "raid": { - "username": "Raid", - "content": "", - "icon_url": "https://raw.githubusercontent.com/PokeAlarm/PokeAlarm/master/icons/.png", - "avatar_url": "https://raw.githubusercontent.com/PokeAlarm/PokeAlarm/master/icons/egg_.png", - "title": "Level Raid is available against !", - "url": "", - "body": "The raid is available until <24h_time> ()." - } -``` diff --git a/docs/settings/alarms.md b/docs/settings/alarms.md deleted file mode 100644 index f860941a0..000000000 --- a/docs/settings/alarms.md +++ /dev/null @@ -1,236 +0,0 @@ -# Alarms - -## Overview - -* [Prerequisites](#prerequisites) -* [Introduction](#introduction) -* [Editing or Adding Alarms](#editing-or-adding-alarms) -* [Customizing Alerts](#customizing-alerts) -* [Example `alarms.json`](#example-alarmsjson) - -## Prerequisites - -This guide assumes: - -1. You have a working RocketMap installation -2. You are familiar with [JSON formatting](https://www.w3schools.com/js/js_json_intro.asp) - -## Introduction - -In PokeAlarm, an "Alarm" is defined as a supported message service that sends a notification. Slack, Twitter, Telegram, each are considered message service. - -PokeAlarm allows you to add as many different supported message services as you'd like (e.g., Slack, Twitter, Telegram), and as many of each message service that you would like (e.g., 3 Slack channels, 10 Twitter feeds, 5 Telegrams.) - -You add alarms to the PokeAlarm alarm configuration file, which is `alarms.json` by default. - -`alarms.json` is where: - -1. Alarms are enable/disabled -2. Notification messages for each alarm are customized - -The alarm configuration file follows the JSON format and has six sections: - -1. `alarms` -2. `pokestop` -3. `gym` -4. `pokemon` -5. `egg` -6. `raid` - - -## Editing or Adding Alarms -To add, edit, or remove alarms, edit the `alarms.json` file. If you haven't created an `alarms.json` file before, you can make a copy of `alarms.json.example` and rename it to `alarms.json`. PokeAlarm uses `alarms.json` by default. - -Alarms are represented as a list of JSON Objects, inside an array labeled alarms. Each alarm should be surrounded by curly brackets, and the space in between fields should have a comma. Your default `alarms.json` looks like this: -```json -[ - { - "active": "False", - "type": "discord", - "webhook_url": "YOUR_WEBHOOK_URL" - }, - { - "active": "False", - "type": "facebook_page", - "page_access_token": "YOUR_PAGE_ACCESS_TOKEN" - }, - { - "active": "False", - "type": "pushbullet", - "api_key": "YOUR_API_KEY" - }, - { - "active": "False", - "type": "slack", - "api_key": "YOUR_API_KEY" - }, - { - "active": "False", - "type": "telegram", - "bot_token": "YOUR_BOT_TOKEN", - "chat_id": "YOUR_CHAT_ID" - }, - { - "active": "False", - "type": "twilio", - "account_sid": "YOUR_API_KEY", - "auth_token": "YOUR_AUTH_TOKEN", - "from_number": "YOUR_FROM_NUM", - "to_number": "YOUR_TO_NUM" - }, - { - "active": "False", - "type": "twitter", - "access_token": "YOUR_ACCESS_TOKEN", - "access_secret": "YOUR_ACCESS_SECRET", - "consumer_key": "YOUR_CONSUMER_KEY", - "consumer_secret": "YOUR_CONSUMER_SECRET" - } -] -``` - -Each alarm requires some sort of API key or URL so that PokeAlarm can gain -permissions to post. Visit the wiki page of the service you are setting up -to make sure you have the proper config. - -Each alarm setting runs independent of the other alarms, so changes to one -alarm do not affect the others (even if they are of the same type). - -If is perfectly valid to have any combination of services, including repeats. - -## Customizing Alerts - -Most alarms have customizable fields for each alert that allow you to insert -your own message. This allows your to override the standard message and -provide your own. You may customize as few or as many fields as you want - -any field not present in your config will reset to default. - -In order to customize an Alert, you must specify what type of alert you -want to config: Either `pokemon`, `pokestop`, `gym`, `egg` or `raid`. Each -of these has different defaults available. The following is a config where -a portion of the Alert has been updated: - -```json -{ - "type":"slack", - "active":"True", - "api_key":"YOUR_API_KEY_HERE", - "pokemon":{ - "channel":"Pokemon", - "username":"", - "title":"A GIANT jumped out of the grass!", - "body": "Available until <24h_time> ()." - }, - "pokestop":{ - "channel":"Pokestop", - "title":"Someone has placed a lure on a Pokestop!", - "body":"Better hurry! The lure only has remaining!" - } -} -``` - -For more information about Dynamic Text Substitutions (the ``), please see the Dynamic Text Substitution wiki. - -For what service has what fields, please check the specific wiki page for that service. - -## Example `alarms.json` - -Below is a working alarm configuration for Discord and Slack: - -```json -[ - { - "active": "True", - "type":"discord", - "webhook_url":"DISCORD_WEBHOOK_URL_FOR_FALLBACK", - "startup_message":"False", - "pokemon":{ - "webhook_url":"DISCORD_WEBHOOK_URL_FOR_POKEMON_CHANNEL", - "username":"", - "title": " **CP** (**% //**, /) at

", - "url": "", - "body": "Available until <24h_time> ( remaining)" - }, - "pokestop":{ - "username":"Pokestop", - "webhook_url":"DISCORD_WEBHOOK_URL_FOR_POKESTOP_CHANNEL", - "title": "[]
", - "url": "", - "body": "expires at <24h_time> ()." - }, - "gym":{ - "webhook_url":"DISCORD_WEBHOOK_URL_FOR_GYM_CHANNEL", - "username":" Gym Alerts", - "title": "[]
", - "url": "", - "body": "A team gym has fallen to ." - }, - "egg": { - "webhook_url":"DISCORD_WEBHOOK_URL_FOR_EGG_CHANNEL", - "username": "Egg", - "title": "Raid is incoming!", - "url": "", - "body": "A level raid will hatch at <24h_hatch_time> ()." - }, - "raid": { - "webhook_url":"DISCORD_WEBHOOK_URL_FOR_RAID_CHANNEL", - "username": " Raid", - "title": "Level raid is available against !", - "url": "", - "body": "The raid is available until <24h_raid_end> ()." - } - }, - { - "active": "True", - "type": "slack", - "api_key": "YOUR_SLACK_API_KEY", - "startup_message": "False", - "pokemon": { - "channel": "pokemon", - "username": "Pokemon", - "title": "** (% //) in at
", - "url": "", - "body": "Available until <24h_time> ()\n*Moves:* / ", - "map": { - "enabled": "True", - "width": "330", - "height": "250", - "maptype": "roadmap", - "zoom": "17" - } - }, - "pokestop": { - "channel": "pokestops", - "username": "Pokestop", - "title": "[]
", - "url": "", - "body": "expires at <24h_time> ().", - "map": { - "enabled": "False", - "width": "330", - "height": "250", - "maptype": "roadmap", - "zoom": "15" - } - }, - "gym": { - "channel": "gyms", - "username": " Gym Alerts", - "title": "[]
", - "url": "", - "body": "A team gym has fallen to .", - "map": { - "enabled": "True", - "width": "330", - "height": "250", - "maptype": "terrain", - "zoom": "13" - } - } - } -] -``` - -Note both have `"active":"true"` set, meaning both alarms are enabled. Setting either to "false" will disable the specific alarm.. This allows you to have alarms set up and ready to go, but only enabled when you want them. - -Visit the wiki article on [Filters](filters-overview) to limit pokemon notifications by distance, %IV, and moves with the `filters.json` file. From 204f3fc4f1c357eb5f90f72c693db5b7b0029cfa Mon Sep 17 00:00:00 2001 From: Ronny Andersen Date: Thu, 1 Mar 2018 00:04:52 +0100 Subject: [PATCH 45/79] Add precision DTS for height and weight (#624) --- PokeAlarm/Events/MonEvent.py | 20 ++++++++++++++++++-- docs/configuration/events/monster-events.rst | 4 ++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/PokeAlarm/Events/MonEvent.py b/PokeAlarm/Events/MonEvent.py index f19bfb1b1..406fe12f2 100644 --- a/PokeAlarm/Events/MonEvent.py +++ b/PokeAlarm/Events/MonEvent.py @@ -250,8 +250,24 @@ def generate_dts(self, locale, timezone, units): # Cosmetic 'gender': self.gender, - 'height': self.height, - 'weight': self.weight, + 'height_0': ( + "{:.0f}".format(self.height) if Unknown.is_not(self.height) + else Unknown.TINY), + 'height': ( + "{:.1f}".format(self.height) if Unknown.is_not(self.height) + else Unknown.SMALL), + 'height_2': ( + "{:.2f}".format(self.height) if Unknown.is_not(self.height) + else Unknown.SMALL), + 'weight_0': ( + "{:.0f}".format(self.weight) if Unknown.is_not(self.weight) + else Unknown.TINY), + 'weight': ( + "{:.1f}".format(self.weight) if Unknown.is_not(self.weight) + else Unknown.SMALL), + 'weight_2': ( + "{:.2f}".format(self.weight) if Unknown.is_not(self.weight) + else Unknown.SMALL), 'size': locale.get_size_name(self.size_id), # Attack rating diff --git a/docs/configuration/events/monster-events.rst b/docs/configuration/events/monster-events.rst index 9ee32c5bc..a16500448 100644 --- a/docs/configuration/events/monster-events.rst +++ b/docs/configuration/events/monster-events.rst @@ -136,7 +136,11 @@ costume_id Costume ID of the monster. costume_id_3 Costume ID of the monster, formatted to there digits. gender Gender of the monster, represented as a single character. height Height of the monster. +height_0 Height of the monster, rounded to the nearest integer. +height_2 Height of the monster, rounded to 2 decimal places. weight Weight of the monster. +weight_0 Weight of the monster, rounded to the nearest integer. +weight_2 Weight of the monster, rounded to 2 decimal places. size Estimated size of the monster. big_karp Return `big` if Magikarp weight is >=13.13. tiny_rat Return `tiny` if Rattata weight is <=2.41. From f344d86f36bd1e14f9c43a694a91390f2dc1258e Mon Sep 17 00:00:00 2001 From: MARTINI1 Date: Fri, 2 Mar 2018 05:19:06 +0100 Subject: [PATCH 46/79] RTD - Installation & FAQ (#627) --- docs/getting-started/{FAQ.md => faq.md} | 90 +++++++++++++------------ docs/getting-started/installation.rst | 27 ++++---- docs/index.rst | 7 +- 3 files changed, 66 insertions(+), 58 deletions(-) rename docs/getting-started/{FAQ.md => faq.md} (62%) diff --git a/docs/getting-started/FAQ.md b/docs/getting-started/faq.md similarity index 62% rename from docs/getting-started/FAQ.md rename to docs/getting-started/faq.md index 18081da9a..fc95f20d9 100644 --- a/docs/getting-started/FAQ.md +++ b/docs/getting-started/faq.md @@ -11,72 +11,73 @@ These are general questions about PA and it's development. #### Where should I go for support? * If, after *carefully* reading the Wiki and the rest of this FAQ, you -can visit our [Discord](https://discordapp.com/invite/S2BKC7p). Make -sure to read the rules channel, so you don't inadvertently get banned. + can visit our [Discord](https://discordapp.com/invite/S2BKC7p). Make + sure to read the rules channel, so you don't inadvertently get banned. #### What scanners are supported? * Currently RocketMap (RM) and Monocle are compatible with PA. -If you are interested in adding support for your program, feel free to -read the [Webhook Standards](webhook-standard) and ask us in Discord -what you can do to add support for PA. + If you are interested in adding support for your program, feel free to + read the [Webhook Standard](../miscellaneous/webhook-standard.html) and + ask us in Discord what you can do to add support for PA. #### I have a great idea for a new feature! * Open a Feature Request on our Github page. Use the -[correct template](https://github.com/PokeAlarm/PokeAlarm/issues/new) + [correct template](https://github.com/PokeAlarm/PokeAlarm/issues/new) - Please **DO NOT** just ask for a feature in Discord. There is a lot of -chat in discord and your request will certainly get lost. Issues let us -track the request and real with it in a more concrete manor. + chat in discord and your request will certainly get lost. Issues let us + track the request and real with it in a more concrete manor. - If you see a request you like, be sure to comment on it to show your -support! + support! #### Do you accept PRs? * Yup - you can submit them via Github. If it is a big change, feel free -to approach us before so we can coordinate better. + to approach us before so we can coordinate better. #### Do you support new services? * Please check in the -[New/Upcoming Services MEGA-THREAD](https://github.com/RocketMap/PokeAlarm/issues/147) -to see if the service has already been requested. If it hasn't, feel -free to leave a post requesting it. + [New/Upcoming Services MEGA-THREAD](https://github.com/RocketMap/PokeAlarm/issues/147) + to see if the service has already been requested. If it hasn't, feel + free to leave a post requesting it. #### How can I support PokeAlarm? * Besides submitting PRs or helping us with the -[Wiki](https://github.com/PokeAlarm/PokeAlarmWiki), you can support -Deadly (the creator of PA) on -[Patreon](https://www.patreon.com/pokealarm). + [Wiki](https://github.com/PokeAlarm/PokeAlarmWiki), you can support + Deadly (the creator of PA) on + [Patreon](https://www.patreon.com/pokealarm). ## Troubleshooting #### PokeAlarm complains about a `ValueError` error and says I need to talk to some guy named JSON? 1. Make sure you didn't open any files with Notepad or TextEdit - they -can break the encoding on your files. Use Notepad++ or a better editor. + can break the encoding on your files. Use Notepad++ or a better editor. 2. If you sure that isn't the problem, then you probably have an error -with your JSON Formatting. Look up how JSON formatting works and use a -[JSON Editor](http://www.jsoneditoronline.org/) to find your problem. + with your JSON Formatting. Look up how JSON formatting works and use a + [JSON Editor](http://www.jsoneditoronline.org/) to find your problem. #### Why isn't `` working right? * You must have gym-details enabled in your scanner and webhook options. * Most scanners don't send the gym-details with every gym related -webhook - PA will cache the details and try to remember them, but -this goes away upon restart. It takes time for the scanner to send all -the details. + webhook - PA will cache the details and try to remember them, but this + goes away upon restart. It takes time for the scanner to send all the + details. You can use file-caching to save the gym names to a file so that they are available upon restart. Check out the -[Object Caching](Object-Caching) page for more information. +[Object Caching](../miscellaneous/object-caching.html) page for more information. #### How can I optimize PokeAlarm? PA uses Gevent and Multiprocessing to be as responsive as possible to incoming requests. However (due to language and hardware limitations), it is possible for PA to be overwhelmed and have a hard time handling requests for large setups. If you are experiencing problems, you can try -the following options: +the following options: + 1. If on Windows, try Linux (even a VM will see large improvements). 2. Run PA on a separate server. 3. Lower the number of managers you are using. Each manager runs in its -own process, which makes it expensive. + own process, which makes it expensive. 4. If possible, separate scanners and pa instances into smaller groups -and even onto different servers. + and even onto different servers. 5. Upgrade your server hardware. PA also has a `concurrency` setting that can be lowered - it limits the @@ -84,18 +85,19 @@ number of active connections allowed to it. This will prevent PA Additionally, there are a number of settings in RM to optimize: 1. Disable extra webhooks - use RM's blacklist/whitelist and disable -webhook types you aren't using. + webhook types you aren't using. 2. Lower webhook-threads (`wh-concurrent` or similar) - This will cause -RM to send less connections at once. + RM to send less connections at once. 3. Increase `wh-frame-interval` - Increase the number of events RM sends -at once to lower overhead. + at once to lower overhead. 5. Increase `wh-lfu-size` - this will increase RM's cache size to repeat -less information. + less information. 6. Increase `wh-backoff-factor` - Increase break between webhooks. 7. Increase `wh-connect-timeout` and `#wh-read-timeout` timeouts for RM. -This gives your server more time to react. + This gives your server more time to react. 8. Decrease database threads `db-concurrency` or similar - uses less -sockets. + sockets. + **Note:** Decreasing/Increase these settings may cause queue build up in a variety of different places. It is a matter of trial and error to find the ideal settings for your setup. @@ -104,35 +106,37 @@ Try the RM (or PA) Discord for more info. #### Error 10053 on Windows or Error 53 on Linux? * This is an issue with too many open sockets on windows that causes -PA to be unable to open an new connections. See the above steps for -some suggestions on optimization. + PA to be unable to open an new connections. See the above steps for + some suggestions on optimization. #### RocketMap repeatedly spams `Caused by ReadTimeoutError("HTTPConnectionPool(host='127.0.0.1', port=4000)`? * This mean's that RM is not connecting to PA for some reason: + 1. Make sure PA is running. 2. Make sure RM is sending to the correct IP:PORT combo. 3. If the PokeAlarm instance is on a remote server, try increasing RM's -`wh-timeout` parameter (which defaults to 1s). + `wh-timeout` parameter (which defaults to 1s). 4. Check hardware for a bottleneck. See above for optimizations. #### Why do some DTS (``, etc) or another DTS show up as `?`? * PA replaces DTS that are used with `?`, `???`, or `unknown` when it -doesn't know the correct information. This could be a variety of reasons + doesn't know the correct information. This could be a variety of reasons #### Map images aren't showing up correctly... What can I do? -* Make sure you have added a [Google API Key](Google-Maps-API-Key) and -have the Static Maps API enabled. If you already have it enabled, make -sure that you haven't hit the limit for free users. +* Make sure you have added a [Location Services](../miscellaneous/location-services.html) + and have the Static Maps API enabled. If you already have it enabled, make + sure that you haven't hit the limit for free users. #### Missing icons in your alerts? * Remove your lines from `icon_url` and `avatar_url` from your -[Alarms](alarms) to use the default images in the PA. + [Alarms](../configuration/alarms) to use the default images in the PA. #### Do you want to use custom images in your alerts? * Add in your alarms the option to add images (depends on the service -that is used) and add your url where the images are. For example, if you -use [Discord](Discord) it will be something like this: + that is used) and add your url where the images are. For example, if you + use [Discord](../configuration/alarms/discord.html) it will be something + like this: ``` "icon_url":"https://raw.githubusercontent.com/user/PokeIcons/master/icons/.png" -```` +``` diff --git a/docs/getting-started/installation.rst b/docs/getting-started/installation.rst index d316f02f7..07c5201c3 100644 --- a/docs/getting-started/installation.rst +++ b/docs/getting-started/installation.rst @@ -1,7 +1,6 @@ Installation ===================================== - This guide will walk you through installing a fresh copy of PokeAlarm. .. contents:: Table of Contents @@ -29,19 +28,19 @@ Installing ------------------------------------- 1. **Clone a local copy of PokeAlarm** - Navigate a new folder to install - PokeAlarm in (It is recommended you store it in a different folder than your - scanner). In a terminal, run the command - ``git clone https://github.com/PokeAlarm/PokeAlarm.git`` to create a local - copy of the project. This create a folder called 'PokeAlarm' that will - contain the application. + PokeAlarm in (It is recommended you store it in a different folder than + your scanner). In a terminal, run the command + ``git clone https://github.com/PokeAlarm/PokeAlarm.git`` to create a + local copy of the project. This create a folder called 'PokeAlarm' that + will contain the application. -2. **Install the Requirements** - In a terminal, naviagate into the root folder +2. **Install the Requirements** - In a terminal, navigate into the root folder of your PA installation. Run ``pip install -r requirements.txt --upgrade``. This will install and update the modules that PokeAlarm needs to run. 3. **Configure PokeAlarm** - Next you need to configure PokeAlarm. - - :doc:`../configuration/Server-Settings` let you configure things like host + - :doc:`../configuration/server-settings` let you configure things like host IP, port, language, and more. - :doc:`../configuration/filters/index` represent which Events trigger notifications. You will need to create a filters file before starting PA. @@ -67,8 +66,12 @@ Running 2. **Setup Scanner Webhook** - Next, configure your scanner to send information to PA's address. - - For Monocle, * TODO * - - For RocketMap, * TODO * + - **For Monocle:** + The webhook info only works in `Hydro's fork `_. + + - **For RocketMap:** + Configure the webhook types to send info as explained in + `RocketMap wiki `_. Finally, start your scanner. If everything is set up correctly, PA will start logging information about what it is doing to the console. @@ -78,9 +81,9 @@ Updating .. warning:: Updating PokeAlarm can be complicated if you edit files you aren't supposed to. For this reason, we recommend not to edit any files ending in - '.py'. + ``.py``. -1. Check the :doc:`../miscellaneous/Patch-Notes` for any big changes +1. Check the :doc:`../miscellaneous/patch-notes` for any big changes that might break your current configuration. 2. Open up a command line and change directory to the root folder of your install. diff --git a/docs/index.rst b/docs/index.rst index b4997916b..2af0c44f0 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -14,12 +14,13 @@ know of any rare spawns or raids. .. toctree:: - :titlesonly: + :titlesonly: :maxdepth: 1 - :caption: Getting Started: + :caption: Getting Started + :glob: getting-started/installation - getting-started/FAQ + getting-started/faq .. toctree:: :maxdepth: 1 From edf18d3ac1c030364dceec990d80480d8a493b4a Mon Sep 17 00:00:00 2001 From: MARTINI1 Date: Fri, 2 Mar 2018 05:22:44 +0100 Subject: [PATCH 47/79] RTD - Add Misc Changes (#628) --- docs/images/01-blank-dashboard.png | Bin 0 -> 20457 bytes docs/images/02-create-project.png | Bin 0 -> 24978 bytes docs/images/03-new-project-name.png | Bin 0 -> 42656 bytes docs/images/04_project_created.png | Bin 0 -> 18871 bytes docs/images/05_library.png | Bin 0 -> 53813 bytes docs/images/06_enable_geocoding_api.png | Bin 0 -> 45192 bytes docs/images/07_enabled_geocoding_api.png | Bin 0 -> 39988 bytes .../08_dashboard_with_geocoding_enabled.png | Bin 0 -> 40319 bytes ...9_dashboard_geocoding_distance_enabled.png | Bin 0 -> 46418 bytes docs/images/10_credentials.png | Bin 0 -> 34221 bytes docs/images/11_credentials2.png | Bin 0 -> 48190 bytes docs/images/12_select_browser_key.png | Bin 0 -> 43276 bytes docs/images/13_key_name.png | Bin 0 -> 37464 bytes docs/images/14_here_is_your_key.png | Bin 0 -> 34652 bytes docs/images/15_find_your_key.png | Bin 0 -> 37938 bytes docs/images/fb-example.png | Bin 0 -> 38543 bytes docs/images/managers.png | Bin 0 -> 41004 bytes docs/images/minimap.png | Bin 0 -> 4694 bytes docs/images/slack_example.png | Bin 0 -> 68076 bytes docs/images/staticmaptest.png | Bin 0 -> 49428 bytes docs/images/telegram.png | Bin 0 -> 47678 bytes docs/index.rst | 11 +- docs/miscellaneous/Object-Caching.md | 50 ----- docs/miscellaneous/contributing.md | 83 ++++++++ docs/miscellaneous/docker.md | 178 ++++++++++++++++ docs/miscellaneous/location-services.rst | 195 ++++++++++++++++++ docs/miscellaneous/object-caching.rst | 76 +++++++ .../{Patch-Notes.md => patch-notes.md} | 80 ++++--- ...ebhook-Standard.md => webhook-standard.md} | 76 +++---- docs/miscellaneous/webhook-tester.md | 10 + 30 files changed, 625 insertions(+), 134 deletions(-) create mode 100644 docs/images/01-blank-dashboard.png create mode 100644 docs/images/02-create-project.png create mode 100644 docs/images/03-new-project-name.png create mode 100644 docs/images/04_project_created.png create mode 100644 docs/images/05_library.png create mode 100644 docs/images/06_enable_geocoding_api.png create mode 100644 docs/images/07_enabled_geocoding_api.png create mode 100644 docs/images/08_dashboard_with_geocoding_enabled.png create mode 100644 docs/images/09_dashboard_geocoding_distance_enabled.png create mode 100644 docs/images/10_credentials.png create mode 100644 docs/images/11_credentials2.png create mode 100644 docs/images/12_select_browser_key.png create mode 100644 docs/images/13_key_name.png create mode 100644 docs/images/14_here_is_your_key.png create mode 100644 docs/images/15_find_your_key.png create mode 100644 docs/images/fb-example.png create mode 100644 docs/images/managers.png create mode 100644 docs/images/minimap.png create mode 100644 docs/images/slack_example.png create mode 100644 docs/images/staticmaptest.png create mode 100644 docs/images/telegram.png delete mode 100644 docs/miscellaneous/Object-Caching.md create mode 100644 docs/miscellaneous/contributing.md create mode 100644 docs/miscellaneous/docker.md create mode 100644 docs/miscellaneous/location-services.rst create mode 100644 docs/miscellaneous/object-caching.rst rename docs/miscellaneous/{Patch-Notes.md => patch-notes.md} (91%) rename docs/miscellaneous/{Webhook-Standard.md => webhook-standard.md} (74%) create mode 100644 docs/miscellaneous/webhook-tester.md diff --git a/docs/images/01-blank-dashboard.png b/docs/images/01-blank-dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..1fdab53312e097f0cc301091c1a70fb697d4e3fc GIT binary patch literal 20457 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 literal 0 HcmV?d00001 diff --git a/docs/images/02-create-project.png b/docs/images/02-create-project.png new file mode 100644 index 0000000000000000000000000000000000000000..d753a8f54e3835721d4f32739dff5f75e53ad54f GIT binary patch literal 24978 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 literal 0 HcmV?d00001 diff --git a/docs/images/04_project_created.png b/docs/images/04_project_created.png new file mode 100644 index 0000000000000000000000000000000000000000..06e1381d746fa5f80ff839526daf48dccf63046c GIT binary patch literal 18871 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 literal 0 HcmV?d00001 diff --git a/docs/images/05_library.png b/docs/images/05_library.png new file mode 100644 index 0000000000000000000000000000000000000000..4cec1746781cc33bfc2db7020ccf42ba0ca3a46b GIT binary patch literal 53813 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%0ABpTIct?6-aV7i5S0yo=NmMCYb)bs0 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 literal 0 HcmV?d00001 diff --git a/docs/images/06_enable_geocoding_api.png b/docs/images/06_enable_geocoding_api.png new file mode 100644 index 0000000000000000000000000000000000000000..e543dde9d0df60927891fdf7a35024cb96ebef09 GIT binary patch literal 45192 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 bR%dpRBrV?4VP&mo`Z2ZD4X$Azw?h5{>L~+} literal 0 HcmV?d00001 diff --git a/docs/images/07_enabled_geocoding_api.png b/docs/images/07_enabled_geocoding_api.png new file mode 100644 index 0000000000000000000000000000000000000000..bba5083f9abf3d84f4883aed832603019b6560d5 GIT binary patch literal 39988 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
O^W@iCH{kS`P%`6Yaqw|*Ji=z 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 literal 0 HcmV?d00001 diff --git a/docs/images/telegram.png b/docs/images/telegram.png new file mode 100644 index 0000000000000000000000000000000000000000..bf230043c2f5b51f6725b9ad25a044ae6031511d GIT binary patch literal 47678 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 z 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%0AV&WkT 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 + Webhook Tester + Patch Notes + Caching + Docker + Location Services + Contributing Indices and tables diff --git a/docs/miscellaneous/Object-Caching.md b/docs/miscellaneous/Object-Caching.md deleted file mode 100644 index e1c401eee..000000000 --- a/docs/miscellaneous/Object-Caching.md +++ /dev/null @@ -1,50 +0,0 @@ -# Caching - -### Overview -* [Prerequisites](#prerequisites) -* [Introduction](#introduction) -* [Caching Methods](#caching-methods) - * [Memory Cache](#memory-cache) - * [Binary File Cache](#binary-file-cache) - * [Multiple Instances](#multiple-instances) -* [Clearing Cache](#clearing-cache) - -### Prerequisites - -This guide assumes: - -1. You have a functional PokeAlarm installation -2. You have a basic understanding of how to manage binary files -3. You have read and understood the available Command Line Arguments in the [Server Settings](server-settings) Wiki - -### Introduction - -PokeAlarm uses `Cache` objects to store information that is not present on runtime. The cached objects store information such as `gym-info` and other dynamic objects sent into PokeAlarm via webhook. Cached data is used for internal calculations as well as to provide details for [Dynamic Text Substitution](dynamic-text-substitution) in [Alarms](alarms). - -### Caching Methods - -There are currently two methods available for object caching: - -| Caching Method | Description | -|:------------------------|:-----------------------------------------------------------------| -| `mem` | Caches data to memory only, information is lost between sessions | -| `file` | Caches data to binary files located in the `cache` folder | - -_Note: If no cache-type is selected, `mem` will be chosen as the default._ - -## Memory Cache - -When using the `mem` cache type, cached data is stored in memory only and is cleared whenever PA exits. This will cause all [DTS](dynamic-text-substitution) fields which require this data to display an `unknown` or `null` value until the data is received by PA through webhooks. - -## Binary File Cache - -When using the `file` cache type, cached data is written to a binary file located in the `cache/` directory. Each [Manager](managers) has a unique binary cache file stored as `cache/.cache`. Cached data is backed up to this binary file once per minute and immediately before PA exits. - -# Multiple Instances - -Using File caching with multiple instances can cause conflicts as cache files are stored under `.cache`. When using the `file` cache type and multiple instances, take caution and ensure that all managers are assigned an explicitly unique name. - -### Clearing Cache - -* **Memory Cache** is cleared whenever PA exits for any reason. -* **File Caches** may be cleared by deleting the `cache/.cache` file that corresponds to the manager you wish to clear the cache for. (To clear all cached data, delete all files in the cache folder). PA will need to be restarted once cache files are erased. diff --git a/docs/miscellaneous/contributing.md b/docs/miscellaneous/contributing.md new file mode 100644 index 000000000..cb911c072 --- /dev/null +++ b/docs/miscellaneous/contributing.md @@ -0,0 +1,83 @@ +# Contributing + +## Overview + +This guide will show you how to submit issues, suggestions, feature requests, +and wiki corrections to the PokeAlarm team. + +* [Before You Begin](#before-you-begin) +* [Introduction](#introduction) +* [Submitting an Issue](#submitting-an-issue) +* [Submitting a Pull Request](#submitting-a-pull-request) +* [Submitting a change to the to the readthedocs](#submitting-a-change-to-the-readthedocs) + +## Before You Begin + +If you're trying to troubleshoot an issue that you're having that may not be a +issue needing to be fixed within PokeAlarm itself, try visiting the PokeAlarm +[#troubleshooting](https://discord.gg/S2BKC7p) channel on Discord. + +## Introduction + +There are two ways to submit information to the PokeAlarm Github, each with +its own template to be used. +* An [Issue](https://github.com/PokeAlarm/PokeAlarm/issues) can be submitted to + draw attention to a bug that needs to be fixed, to request a new feature, or + to give suggestions. +* If you know how to implement fix or a change that you'd like to see, you can + submit a [Pull Request](https://github.com/PokeAlarm/PokeAlarm/pulls). + +## Submitting an Issue + +1. From within the master branch of PokeAlarm, click on the Issues tab. +2. Click on the green button labeled "New issue". +3. Create a relevant title for your submission. +4. There are two templates preloaded into the Issue submission box - one for + bugs and user issues and the other for enhancements and suggestions. All + submissions do require the use of a template in order to be considered. + Make sure to address only one issue per submission. Copy the applicable + template and remove the one that you do not need. +5. Click on "Submit new issue" button when finished. + +## Submitting a Pull Request + +Pull Requests (PRs) are submitted through the `dev` branch of PokeAlarm to be +tested prior to being included in periodic patches merged to the Master branch. +All coding to be considered must meet PEP 8 standards for Python and should +be checked using [Flake8](http://flake8.pycqa.org/en/latest/index.html). + +Our development team utilizes Travis CI for automated testing. Travis CI is a +continuous integration service that checks for issues when PRs are first opened +and when commits are added to them. Feedback on PRs will typically be given +within 4 days from the date of the initial submission, excluding holidays. If +changes are requested, please comment on the PR when those changes have been +completed. + +Please keep your PR up to date so that we can pull it without conflicts. For +clean git histories, use `rebase` instead of merging. To do this: + +``` +git fetch origin +git rebase -i origin/dev +(comment out all the commits that aren't related to yours) +(handle any conflicts that arise from rebase) +git push +``` + +## Submitting a change to the readthedocs + +Submissions for changes to the readthedocs are to be made through Pull Requests +on the [PokeAlarm](https://github.com/PokeAlarm/PokeAlarm) repository, all the +readthedocs files are inside `docs` folder. + +The Wiki consists of files written using +[Markdown](https://help.github.com/articles/basic-writing-and-formatting-syntax/) +or [reStructuredText](http://docutils.sourceforge.net/docs/user/rst/quickref.html), +saved with the `.md`/`.rst` file extension. + +1. From within the Master branch of the PokeAlarm repo, click on the **Branch** + dropdown and choose `dev` from the menu. +2. Once the dev branch page loads, click the `New Pull Request` button. +3. Add a title for your request and include some information about your + submission in the textbox. +4. Upload a new or updated file and click `Create Pull Request`. diff --git a/docs/miscellaneous/docker.md b/docs/miscellaneous/docker.md new file mode 100644 index 000000000..ace6494ee --- /dev/null +++ b/docs/miscellaneous/docker.md @@ -0,0 +1,178 @@ +# Docker + +## Overview + +* [Prerequisites](#prerequisites) +* [Introduction](#introduction) +* [Setup](#setup) + * [Cloning the repo](#cloning-the-repo) + * [Configuring the alarm](#configuring-the-alarm) + * [Building the docker image](#building-the-docker-image) + * [Launching PokeAlarm](#launching-pokealarm) + * [Stopping PokeAlarm](#stopping-pokealarm) +* [Integrating with RocketMap](#integrating-with-rocketmap) + * [Docker network](#docker-network) + * [Using links](#using-links) + * [RocketMap running without docker](#rocketmap-running-without-docker) +* [Updating alarms](#updating-alarms) +* [Running multiple alarm containers](#running-multiple-alarm-containers) + +## Prerequisites + +This guide assumes: + +1) You have [Docker](https://docs.docker.com/) installed and running on your machine +2) You have [Git](https://git-scm.com/downloads) installed and running on your machine +3) You have read and understood the [Alarms](../configuration/alarms) wiki + +Please familiarize yourself with all of the above before proceeding. + +## Introduction + +By leveraging [Docker](https://docs.docker.com/), we can run PokeAlarm +instances without the need of installing Python, pip or other tools related to it. + +This means that you don't have to go through the hassle of managing python and +its multiple versions if you don't feel comfortable doing it, or for any +other reason. + +## Setup + +### Cloning the repo + +The first thing that you need to do is to clone the PokeAlarm repository in +the directory you'd like: + +``` +git clone https://github.com/PokeAlarm/PokeAlarm.git +``` + +### Configuring the alarm + +Now, enter the repository's directory and copy the file called +`alarms.json.default` to a file named `alarms.json`. Once that is done, +open `alarms.json` and edit it to your liking. Refer to the alarm +configuration documentation linked above as needed. + +It's also possible, but not required, to edit the configurations file. +This will allow you to set default values to be used for most of the alarm's +configuration, reducing the number of arguments when launching the instance. +To do so, make a copy of the `config.ini.example` file located inside the +config dir and rename it to `config.ini`. Now, just uncomment the desired +lines and provide the values. + +### Building the docker image + +Once alarms.json is edited, we've got to build the docker image that we +will use to launch our PokeAlarm container. To do so, execute the following +command from the repository's root directory: + +``` +docker build -t pokealarm . +``` + +This will create an image with the tag pokealarm, the dot indicates it should +use the contents from the directory it was executed. + +### Launching PokeAlarm + +With the docker image created, we can launch a PokeAlarm container. To do so +is as simple as executing: + +``` +docker run --name alarm -d pokealarm -k YOUR_GMAPS_API_KEY +``` + +This will launch a docker container named `alarm` using the image we just +created and tagged `pokealarm` + +### Stopping PokeAlarm + +Simply execute `docker stop alarm` and `docker rm alarm`. The removal of the +container is a necessary step because we want to reuse its name. + +## Integrating with RocketMap + +We will cover 3 scenarios for integration with your RocketMap. For the +first two scenarios, we will assume that given your interest in PokeAlarm with +docker, you are already running [RocketMap on docker containers](https://rocketmap.readthedocs.io/en/develop/advanced-install/docker.html). +For the last, we will assume you have it running locally with python. + +### Docker network + +If you have followed the RocketMap documentation for docker, you probably have +a docker network already setup. All you would need to do is to add the +network's name to you docker run command that was used before, like this: + +``` +docker run --name alarm --net=NETWORK_NAME -d pokealarm -k YOUR_GMAPS_API_KEY +``` + +Once that's done, you are able to reach your PokeAlarm container from any +other container in the same network, using the container's name as host +value. For example, you could add `-wh 'http://alarm:4000'` to your RocketMap +instances. + +### Using links + +If you are not running a docker network what you need to do is to link your +RocketMap container to your PokeAlarm container. To do so, launch you +PokeAlarm container as we've done before, but this time launch you RocketMap +container with the added flag `--link alarm` before the image's name on your +docker run command. With that link declared, you can add +`-wh 'http://alarm:4000'` to the end of the docker run command and it will +be able to find your PokeAlarm container. + +### RocketMap running without docker + +If you are not running RocketMap on docker, what we need to do for it to be +reachable is to bind a port on your host to the container's port. This is +easily done by adding the `-p` docker flag to your docker run command: + +``` +docker run --name alarm -d -p 4000:4000 pokealarm -k YOUR_GMAPS_API_KEY +``` + +Once you execute that, you will be able to reach your PokeAlarm container on +port `4000` by port `4000` on your localhost. This means you could add +`-wh 'http://127.0.0.1:4000'` to your `./runserver.py` command and it would be +able to post to the webhook. + +## Updating alarms + +If you want to update the `alarms.json` or `config.ini` files or wish to +create any other alarm configuration file, you are free to do so at any time. +However, you will need to rebuild your docker image afterwards, so that it can +copy the new/edited files into the image. + +## Running multiple alarm containers + +All you have to do is to execute the appropriate (described above) docker +run command multiple times, giving each container a new name. For example, +this is how we could do that using the docker network approach described before: + +``` +docker run --name commons --net=NETWORK_NAME -d pokealarm -k YOUR_GMAPS_API_KEY +docker run --name rares --net=NETWORK_NAME -d pokealarm -k YOUR_GMAPS_API_KEY -c rares.json +docker run --name ultra --net=NETWORK_NAME -d pokealarm -k YOUR_GMAPS_API_KEY -c ultra-rares.json +``` + +In the above block we are launching 3 containers of the `pokealarm` image in +a docker network, all of which could be accessed by other containers in the +network by their names. + +* The first is named `commons` and using the default configuration `alarms.json` +* The second is named `rares` and uses the configuration file named `rares.json` +* The third is named `ultra` and used the configuration file named `ultra-rares.json` + +If running RocketMap without docker, you would simply have to add different +port bindings to each container, like: + +``` +docker run --name commons -p 4000:4000 -d pokealarm -k YOUR_GMAPS_API_KEY +docker run --name rares -p 4001:4000 -d pokealarm -k YOUR_GMAPS_API_KEY -c rares.json +docker run --name ultra -p 4002:4000 -d pokealarm -k YOUR_GMAPS_API_KEY -c ultra-rares.json +``` + +Meaning that the containers would be reachable on `http://localhost:4000`, +`http://localhost:4001` and `http://localhost:4002` respectively. diff --git a/docs/miscellaneous/location-services.rst b/docs/miscellaneous/location-services.rst new file mode 100644 index 000000000..d20ec3563 --- /dev/null +++ b/docs/miscellaneous/location-services.rst @@ -0,0 +1,195 @@ +Location Services +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + + +Prerequisites +------------------------------------- + +This guide assumes: + +1. You have a functional PokeAlarm installation +2. You have an available Google account (e.g., Gmail) +3. You have read and understood the available Command Line Arguments + in the :doc:`../configuration/server-settings` wiki + +Introduction +------------------------------------- + +Using a Google Maps API key in PokeAlarm is **optional**. It enable additional +features in PokeAlarm. + +In order to use a feature, you must have the corresponding API enabled in +Google API Manager, and have a generated Google Maps API key. Below are the +available features, and Google Map API to enable for that feature: + +============================================================== ============================= +PokeAlarm Feature Google Maps API to Enable +============================================================== ============================= +Set a location by name or address Google Maps Geocoding +Calculate walking/biking/driving distance from a set location Google Maps Distance Matrix +Show a Mini Map of pokemon, gyms, lures, eggs or raids Google Static Maps +============================================================== ============================= + +You will enable the APIs per the requirements of you own PokeAlarm +installation. In other words, if you only want static maps, enable just the +Google Static Maps API. If you want static maps and to set your location, +enable the Google Static Maps and Google Maps Geocoding APIs. + +In this guide, we will: + +1. Enable all 3 APIs and generate an API key that will allow PokeAlarm to + provide these features +2. Test the key to make sure it working correctly +3. Start **PokeAlarm** with your API key + +Enabling the Various Google Maps APIs and Obtaining a Key +------------------------------------- + +Now we're going create a new project, add our 3 APIs to it, then generate our +API key. + +1. Log into `Google API Manager `_. + +2. Click **Dashboard** at the left. If this is your first time visiting the + developers console, you should see "No APIs enabled" in the middle, like the + image below. + +.. image:: ../images/01-blank-dashboard.png + +3. At the top of the page, click the **Project** dropdown, then + select **Create project**. + +.. image:: ../images/02-create-project.png + +4. Name this project whatever you would like, e.g., "PokeAlarm". Click **Create**. + +.. image:: ../images/03-new-project-name.png + +5. You should now see your project name at the top. Click the blue + **+ENABLE API** button at the top middle, which will bring your to the Google + API Library. (You can also click **Library** at the left.) + +.. image:: ../images/04_project_created.png + +6. The Google API Library is where we will select our 3 APIs to enable. Let's + enable the **Google Maps Geocoding** API first. You can either type + **Google Maps Geocoding API** in the middle search bar, or click on it under + the "Google Maps API" section in the middle right. + +.. image:: ../images/05_library.png + +7. You should see **Google Maps Geocoding API**. Click the blue **ENABLE** + button at the top to enable the Google Maps Geocoding API. + +.. image:: ../images/06_enable_geocoding_api.png + +You should see this screen if enabled: + +.. image:: ../images/07_enabled_geocoding_api.png + +Click on **Dashboard** at the left. You should now see **Google Maps Geocoding +API** at the middle bottom. + +.. image:: ../images/08_dashboard_with_geocoding_enabled.png + +8. Click on **Library** at the left and repeat the same process of enabling + APIs for the **Google Maps Distance Matrix** and **Google Static Maps** APIs. + When you are finished, click **Dashboard** on the left and make sure that + you see all 3 APIs at the middle bottom. + +.. image:: ../images/09_dashboard_geocoding_distance_enabled.png + +9. Now that we have the 3 APIs enabled, let's generate our API key. Click on + **Credentials** at the left, then the blue **Create Credentials** in the + middle. + +.. image:: ../images/10_credentials.png + +10. Click **API key** in the middle. + +.. image:: ../images/11_credentials2.png + +11. Select **Browser key**. + +.. image:: ../images/12_select_browser_key.png + +12. If desired, name your key, or leave it as the default name. Click the + blue **Create** button. + +.. image:: ../images/13_key_name.png + +13. Your new API key will appear. Click the blue **OK** button. + +.. image:: ../images/14_here_is_your_key.png + +To find your key later, click on the blue **Credentials** button at the left. + +.. image:: ../images/15_find_your_key.png + +Testing Your API Key +------------------------------------- + +Now that you have your various APIs enabled and your API key created, let's +test to see if it is working correctly. + +Geocoding +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To verify that your API key is working for geocoding and reverse geocoding, +visit the URLs below and replace ``YOUR_API_KEY`` with your Google Maps API key. + +**Geocoding** + +``https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY`` + +**Reverse Geocoding** + +``https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY`` + + +Distance Matrix +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To verify that your API key is working for travel distance and time, visit the +URLs below and replace ``YOUR_API_KEY`` with your Google Maps API key. + +``https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=Washington,DC&destinations=New+York+City,NY&key=YOUR_API_KEY`` + + +Static Maps +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To verify that your API key is working for Static Maps, visit the URL below +and replace ``YOUR_API_KEY`` with your Google Maps API key. + +``https://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=600x300&maptype=roadmap&markers=color:blue%7Clabel:S%7C40.702147,-74.015794&markers=color:green%7Clabel:G%7C40.711614,-74.012318&markers=color:red%7Clabel:C%7C40.718217,-73.998284&key=YOUR_API_KEY`` + +If your key is valid, you should see this same static map image in your browser: + +.. image:: ../images/staticmaptest.png + +Starting PokeAlarm with a Google Maps API Key + +There are 2 methods to start **PokeAlarm** with your Google Maps API key: + +1. Run the command ``python start_pokealarm.py -k YOUR_GOOGLE_MAPS_API_KEY`` + +2. Add ``key:YOUR_GOOGLE_MAPS_API_KEY`` to ``config.ini`` located in the + ``config`` subfolder of your PokeAlarm installation, then run the command + ``python start_pokealarm.py``. + + +Google API Daily Limit +------------------------------------- + +Google allows up to 2,500 API requests per day for free. You may view your +API usage from the Dashboard of the `Google API Manager `_. +If you have exceeded the free daily quota of 2,500 hits, the mapping elements +in PokeAlarm may not function correctly. If you find that you are exceeding +the free daily 2,500 API calls, you may either switch to another valid Google +Maps API key for the day or sign up for a Google Maps API Premium plan. For +pricing information, visit the `Google Maps API Pricing and Plans page `_. diff --git a/docs/miscellaneous/object-caching.rst b/docs/miscellaneous/object-caching.rst new file mode 100644 index 000000000..8f071488c --- /dev/null +++ b/docs/miscellaneous/object-caching.rst @@ -0,0 +1,76 @@ +.. _object-caching: + +Object Caching +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + +Prerequisites +------------------------------------- + +This guide assumes: + +1. You have a functional PokeAlarm installation +2. You have a basic understanding of how to manage binary files +3. You have read and understood the available Command Line Arguments in + the :doc:`../configuration/server-settings` wiki + +Introduction +------------------------------------- + +PokeAlarm uses `Cache` objects to store information that is not present on +runtime. The cached objects store information such as ``gym-info`` and other +dynamic objects sent into PokeAlarm via webhook. Cached data is used for +internal calculations as well as to provide details for :doc:`../configuration/events/index` +in :doc:`../configuration/alarms/index`. + +Caching Methods +------------------------------------- + +There are currently two methods available for object caching: + ++--------------------+------------------------------------------------------------------+ +| Caching Method | Description | ++--------------------+------------------------------------------------------------------+ +| `mem` | Caches data to memory only, information is lost between sessions | ++--------------------+------------------------------------------------------------------+ +| `file` | Caches data to binary files located in the `cache` folder | ++--------------------+------------------------------------------------------------------+ + +.. note:: If no cache-type is selected, ``mem`` will be chosen as the default. + +Memory Cache +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +When using the ``mem`` cache type, cached data is stored in memory only and is +cleared whenever PA exits. This will cause all :doc:`../configuration/events/index` +fields which require this data to display an ``unknown`` or ``null`` value until +the data is received by PA through webhooks. + +Binary File Cache +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +When using the ``file`` cache type, cached data is written to a binary file +located in the ``cache/`` directory. Each :doc:`../configuration/managers` has +a unique binary cache file stored as ``cache/.cache``. Cached +data is backed up to this binary file once per minute and immediately before +PA exits. + +Multiple Instances +------------------------------------- + +Using File caching with multiple instances can cause conflicts as cache files +are stored under ``.cache``. When using the ``file`` cache type +and multiple instances, take caution and ensure that all managers are assigned +an explicitly unique name. + +Clearing Cache +------------------------------------- + ++ **Memory Cache** is cleared whenever PA exits for any reason. ++ **File Caches** may be cleared by deleting the ``cache/.cache`` + file that corresponds to the manager you wish to clear the cache for. (To + clear all cached data, delete all files in the cache folder). PA will need + to be restarted once cache files are erased. diff --git a/docs/miscellaneous/Patch-Notes.md b/docs/miscellaneous/patch-notes.md similarity index 91% rename from docs/miscellaneous/Patch-Notes.md rename to docs/miscellaneous/patch-notes.md index e79a0c971..e258b50db 100644 --- a/docs/miscellaneous/Patch-Notes.md +++ b/docs/miscellaneous/patch-notes.md @@ -2,12 +2,12 @@ ## Patch History -* [Patch 3.6](#patch-36) -* [Patch 3.5](#patch-35) -* [Patch 3.4](#patch-34) -* [Patch 3.3](#patch-33) -* [Patch 3.2](#patch-32) -* [Patch 3.1](#patch-31) +* [Patch 3.6](#patch-3-6) +* [Patch 3.5](#patch-3-5) +* [Patch 3.4](#patch-3-4) +* [Patch 3.3](#patch-3-3) +* [Patch 3.2](#patch-3-2) +* [Patch 3.1](#patch-3-1) --- @@ -17,14 +17,13 @@ This patch contains several breaking changes - make sure to read carefully, back up your current configuration, and have some free time before attempting to upgrade. - ### Rules (Optional) **New Feature** - The "Rules" feature will allow users to create rules that dictate which filters trigger which alarms. Rules are loaded via a file containing a json object, which has 5 sections similar to the Filters file. Each section is a key-value pair of "rule names" to "rules". -Each rule can be described as a json object containing just two fields: +Each rule can be described as a json object containing just two fields: "filters" and "alarms". Each field is an array of strings corresponding to the name of a filter or alarm from a manager. Rules cannot be loaded if they do not match an existing filter or alarm. @@ -42,6 +41,7 @@ or `rules: rules.json` in config.ini. Each rules file must be configured key-value objects and contain at least one or more of following rules sections: + * `monsters` * `stops` * `gyms` @@ -52,6 +52,7 @@ The inner section of each rule must be configured as a key-value object where the key is the rule's name, and the value is the rule's setting. Each rule can be described as follows: + ```json "example_rule" : { "filters": [ "filter1", "filter2" ], @@ -59,15 +60,13 @@ Each rule can be described as follows: } ``` - -### Alarms +### Alarms **Breaking Changes** - To fully take advantage of the "Rules" feature, the "Alarms" feature was changed to require a key-value json object instead of -a list. Alarms should now be a list of "name" -> "alarm settings". +a list. Alarms should now be a list of "name" -> "alarm settings". The alarms.json.example has been updated to match this. - #### Changed Alert Sections The Alert sections of alarms has been updated to match the event names: @@ -78,36 +77,35 @@ The Alert sections of alarms has been updated to match the event names: * `egg` -> `eggs` * `raid` -> `raids` - #### Alerts Converter A new tool has been added to `tools/convert_alarms_file.py`, this tool is designed to convert Alerts files from 3.5 and prior to the 3.6 alert format. **Usage**: + ```bash python convert_alarms_file.py /path/to/alarms.json ``` - #### Telegram Changes **Breaking Changes** - Telegram alarms have been reworked to resolve multiple -issues and address Telegram API changes. +issues and address Telegram API changes. -* **Content Changes** - Telegram now uses markdown instead of html to reduce +* **Content Changes** - Telegram now uses markdown instead of html to reduce conflicts caused by using invalid DTS fields. Existing alerts will have to be reconfigured to make this change. -* The `venue` field does not support markdown or html coding -* `title` and `body` have been merged into `message` to better represent how -the Telegram API actually treats messages. The old behavior can be mimiced -by using the following example content: `*TITLE GOES HERE*\n BODY GOES HERE` + * The `venue` field does not support markdown or html coding + * `title` and `body` have been merged into `message` to better represent how + the Telegram API actually treats messages. The old behavior can be mimiced + by using the following example content: `*TITLE GOES HERE*\n BODY GOES HERE` * **Field Changes** - The following fields have been changed: * `bot_token`: Can now be set at an Alert level. DTS compatible. * `chat_id`: Now DTS compatible. - * `stickers` -> `sticker`: Set to "true" for sticker with message, + * `stickers` -> `sticker`: Set to "true" for sticker with message, set to "false" for no sticker. - * `sticker_notify`: Whether or not sticker messages causes a notification. + * `sticker_notify`: Whether or not sticker messages causes a notification. * `sticker_url`: Url to be used for the sticker. Must be .webp file. * `location` -> `map`: true for map after message, false for no map. * `map_notify`: Whether or not map messages causes a notification. @@ -116,44 +114,41 @@ by using the following example content: `*TITLE GOES HERE*\n BODY GOES HERE` * `max_retries`: Max attempts to send for each message. (Telegram no longer uses the command line equivalent) - -### Filters +### Filters * Listed filters now evaluate in the order listed in the file. -* The `"geofences" : [ "all" ]` shortcut now evaluates in the order that -the geofences are listed in the geofence file. +* The `"geofences" : [ "all" ]` shortcut now evaluates in the order that the +geofences are listed in the geofence file. * `gym_name_contains` is now case-insensitive. #### Time Based Filtering Filters now support filtering based on event timing. This allows for greater control over event alerts than what was previously supported via the -`timelimit` configuration option. +`timelimit` configuration option. * **New Filters** - * `min_time_left` - The minimum amount of time in seconds until the event + * `min_time_left` - The minimum amount of time in seconds until the event * `max_time_left` - The maximum amount of time in seconds until the event * **Filter Events** - * **Monsters** - Filters based on time until monster despawns + * **Monsters** - Filters based on time until monster despawns * **Stops** - Filters based on time until the lure ends * **Raids** - Filters based on time until the raid ends * **Eggs** - Filters based on time until the egg hatches - ### Locale -* Added multi-lingual support for the `Size` DTS & Filter setting. - +* Added multi-lingual support for the `Size` DTS & Filter setting. ### Dynamic Text Substitutions * **Monsters & Raids** - * `size` - Changed to support locales - * `weather` - Outputs the current weather conditions in the alert + * `size` - Changed to support locales + * `weather` - Outputs the current weather conditions in the alert * `weather_id` - Outputs the current weather condition id * `weather_or_empty` - Same as `weather` or an empty value * `weather_emoji` - Outputs a unicode emoji for the current weather - * `boosted_weather` - Outputs the weather conditions if boosted + * `boosted_weather` - Outputs the weather conditions if boosted * `boosted_weather_id` - Outputs the boosted weather condition id * `boosted_weather_or_empty` - `boosted_weather` or an empty value * `boosted_weather_emoji` - Outputs an emoji for the boosted weather @@ -164,34 +159,31 @@ greater control over event alerts than what was previously supported via the * `type2` - Outputs the name of the Monster's Secondary Type or ? * `type2_or_empty` - Same as `type2` or an empty value * `type2_emoji` - Outputs an emoji for the Monster's Primary Type or Empty - * `types` - Outputs the Monster's Type formated as "type1/type2" + * `types` - Outputs the Monster's Type formatted as "type1/type2" * `types_emoji` - Outputs an emoji for the Monster's Type(s) or Empty * **Eggs** - * `weather` - Outputs the current weather conditions in the alert + * `weather` - Outputs the current weather conditions in the alert * `weather_id` - Outputs the current weather condition id * `weather_or_empty` - Same as `weather` or an empty value - * `weather_emoji` - Outputs an emoji for the current weather conditions + * `weather_emoji` - Outputs an emoji for the current weather conditions - ### Server Settings * **Performance Fixes** - Users should now see improved performance and less system resource usage overall. - ### Bug Fixes * **Twitter Alarms** - * Maximum length has been extended to 280 characters to match Twitter + * Maximum length has been extended to 280 characters to match Twitter standards and settings - * All URLs are now counted as 23 characters towards the overall + * All URLs are now counted as 23 characters towards the overall character limit detection. URLs that would cause the tweet to exceed 280 characters will be dropped from the tweet. - * DTS is now evaluated before the length of the status update is + * DTS is now evaluated before the length of the status update is calculated. This corrects issues with improper Twitter Status Truncation - --- ## Patch 3.5 diff --git a/docs/miscellaneous/Webhook-Standard.md b/docs/miscellaneous/webhook-standard.md similarity index 74% rename from docs/miscellaneous/Webhook-Standard.md rename to docs/miscellaneous/webhook-standard.md index 5c3f71538..6ab669845 100644 --- a/docs/miscellaneous/Webhook-Standard.md +++ b/docs/miscellaneous/webhook-standard.md @@ -24,22 +24,22 @@ Pokemon standard now includes moveset and IVs as of commit [oc1b4](https://githu "pokemon_id": 201, "pokemon_level": 30, "player_level": 31, - "latitude": 37.7876146, - "longitude": -122.390624, + "latitude": 37.7876146, + "longitude": -122.390624, "disappear_time": 1506897031, "last_modified_time": 1475033386661, "time_until_hidden_ms": 5000, - "seconds_until_despawn": 1754, - "spawn_start": 2153, - "spawn_end": 3264, - "verified": false, - "cp_multiplier": 0.7317000031471252, - "form": 15, + "seconds_until_despawn": 1754, + "spawn_start": 2153, + "spawn_end": 3264, + "verified": false, + "cp_multiplier": 0.7317000031471252, + "form": 15, "cp": 768, "individual_attack": 10, "individual_defense": 1, "individual_stamina": 9, - "move_1": 281, + "move_1": 281, "move_2": 133, "height": 0.5694651007652283, "weight": 5.733094215393066, @@ -58,8 +58,8 @@ Pokemon standard now includes moveset and IVs as of commit [oc1b4](https://githu "message": { "pokestop_id": 0, "enabled": "True", - "latitude": 37.7876146, - "longitude": -122.390624, + "latitude": 37.7876146, + "longitude": -122.390624, "last_modified_time": 1572241600, "lure_expiration": 1572241600, "active_fort_modifier": 0 @@ -75,19 +75,19 @@ Pokemon standard now includes moveset and IVs as of commit [oc1b4](https://githu { "type": "gyms", "message": { - "raid_active_until": 0, - "gym_id": 0, - "team_id": 0, - "guard_pokemon_id": 0, - "slots_available": 0, - "guard_pokemon_id": 99, - "lowest_pokemon_motivation": 0.8795773983001709, - "total_cp": 11099, - "occupied_since": 1506886787, - "enabled": "True", - "latitude": 37.7876146, - "longitude": -122.390624, - "last_modified": 1572241600 + "raid_active_until": 0, + "gym_id": 0, + "team_id": 0, + "guard_pokemon_id": 0, + "slots_available": 0, + "guard_pokemon_id": 99, + "lowest_pokemon_motivation": 0.8795773983001709, + "total_cp": 11099, + "occupied_since": 1506886787, + "enabled": "True", + "latitude": 37.7876146, + "longitude": -122.390624, + "last_modified": 1572241600 } } ``` @@ -98,14 +98,14 @@ Pokemon standard now includes moveset and IVs as of commit [oc1b4](https://githu { "type": "gym_details", "message": { - "id": "OWNmOTFmMmM0YTY3NGQwYjg0Y2I1N2JlZjU4OWRkMTYuMTY=", - "url": "http://lh3.ggpht.com/yBqXtFfq3nOlZmLc7DbgSIcXcyfvsWfY3VQs_gBziPwjUx7xOfgvucz6uxP_Ri-ianoWFt5mgJ7_zpsa7VNK", - "name": "Graduate School of Public Health Sculpture", - "description": "Sculpture on the exterior of the Graduate School of Public Health building.", - "team": 1, - "latitude": 37.7876146, - "longitude": -122.390624, - "pokemon": [{ + "id": "OWNmOTFmMmM0YTY3NGQwYjg0Y2I1N2JlZjU4OWRkMTYuMTY=", + "url": "http://lh3.ggpht.com/yBqXtFfq3nOlZmLc7DbgSIcXcyfvsWfY3VQs_gBziPwjUx7xOfgvucz6uxP_Ri-ianoWFt5mgJ7_zpsa7VNK", + "name": "Graduate School of Public Health Sculpture", + "description": "Sculpture on the exterior of the Graduate School of Public Health building.", + "team": 1, + "latitude": 37.7876146, + "longitude": -122.390624, + "pokemon": [{ "num_upgrades": 0, "move_1": 234, "move_2": 99, @@ -181,10 +181,10 @@ webhook event from RocketMap as raids are. "message": { "gym_id": "gym_id", "start": 1499244052, - "end": 1499246052 , + "end": 1499246052, "level": 5, - "latitude": 37.7876146, - "longitude": -122.390624 + "latitude": 37.7876146, + "longitude": -122.390624 } } ``` @@ -201,10 +201,10 @@ webhook event from RocketMap as raids are. "move_1": 123, "move_2": 123, "start": 1499244052, - "end": 1499246052 , + "end": 1499246052, "level": 5, - "latitude": 37.7876146, - "longitude": -122.390624 + "latitude": 37.7876146, + "longitude": -122.390624 } } ``` diff --git a/docs/miscellaneous/webhook-tester.md b/docs/miscellaneous/webhook-tester.md new file mode 100644 index 000000000..27181cade --- /dev/null +++ b/docs/miscellaneous/webhook-tester.md @@ -0,0 +1,10 @@ +# Webhook Tester + +## Overview + +* [Pokemon](#pokemon) +* [Pokestops](#pokestops) +* [Gyms](#gyms) + * [Gym-details Example](#gym-details-example) +* [Egg example](#egg-example) +* [Raid example](#raid-example) From 468d62a77869a46e7da4ec20be6d889e41d22b4b Mon Sep 17 00:00:00 2001 From: MARTINI1 Date: Fri, 2 Mar 2018 05:25:20 +0100 Subject: [PATCH 48/79] RTD - Add Guides Section (#629) --- docs/guides/bug-feedback.md | 20 +++++++++++ ...rted-Guide.md => getting-started-guide.md} | 35 ++++++++++--------- docs/guides/json-formatting.md | 20 +++++++++++ docs/guides/upgrade-tool.md | 20 +++++++++++ docs/index.rst | 8 +++-- 5 files changed, 84 insertions(+), 19 deletions(-) create mode 100644 docs/guides/bug-feedback.md rename docs/guides/{Getting-Started-Guide.md => getting-started-guide.md} (92%) create mode 100644 docs/guides/json-formatting.md create mode 100644 docs/guides/upgrade-tool.md diff --git a/docs/guides/bug-feedback.md b/docs/guides/bug-feedback.md new file mode 100644 index 000000000..12ce6efe4 --- /dev/null +++ b/docs/guides/bug-feedback.md @@ -0,0 +1,20 @@ +# Bug Reports / Feedback + +## Overview + +This guide contains an overview to the different parts of configuring +and customizing PokeAlarm to fit your needs. + +* [Prerequisites](#prerequisites) +* [Goals](#goals) +* [Setting up an Alarm](#setting-up-an-alarm) +* [Setting up Filters](#setting-up-filters) + * [Monster Filters](#monster-filters) + * [Gym Filters](#gym-filters) + * [Raid Filters](#raid-filters) +* [Customizing Alert Text](#customizing-alert-text) +* [Advanced: Managers](#advanced-managers) +* [Advanced: Missing Info](#advanced-missing-info) +* [Advanced: Custom DTS](#advanced-custom-dts) + +## Prerequisites diff --git a/docs/guides/Getting-Started-Guide.md b/docs/guides/getting-started-guide.md similarity index 92% rename from docs/guides/Getting-Started-Guide.md rename to docs/guides/getting-started-guide.md index 11b4e91a0..b9a5bfad6 100644 --- a/docs/guides/Getting-Started-Guide.md +++ b/docs/guides/getting-started-guide.md @@ -21,8 +21,8 @@ and customizing PokeAlarm to fit your needs. This guide assumes the following: -1. You have correctly [installed PokeAlarm](installation), including -setting up a source for your information. +1. You have correctly [installed PokeAlarm](../getting-started/installation.html), +including setting up a source for your information. 2. You are using Notepad++, Nano, or Vi(m) to configure any files. Do **NOT** use or open any files with Notepad or TextEdit - they will @@ -48,9 +48,9 @@ represents how you want to receive an alert. For our example, we will use Discord, but the steps are similar between types of Alarms. To create a Discord Alarm, you should be familiar with these two pages: -1. Learn how to configure your alarms file with the [Alarms](alarms) +1. Learn how to configure your alarms file with the [Alarms](../configuration/alarms) wiki page. -2. Learn how to set up a Discord webhook url with the [Discord](discord) +2. Learn how to set up a Discord webhook url with the [Discord](../configuration/alarms/discord.html) wiki page. Once we have our webhook url set up, we can edit the default discord @@ -74,7 +74,7 @@ you should see a start up message posted in your discord channel! Filters are how PokeAlarm decides which Events get sent to sent to the Alarms to trigger notifications. To get all the details of Filters, -read the [Filters](Filters-Overview) wiki page. +read the [Filters](../configuration/filters) wiki page. In PokeAlarm, there are five different types of events. In a filter's config file, there is a section for setting filters in each type of @@ -99,7 +99,7 @@ to accept only the Charmander family: }, "filters":{ "best_monsters":{ - "monsters":["Charmander", "Charmeleon", "Charizard"] + "monsters":["Charmander","Charmeleon","Charizard"] } } } @@ -162,7 +162,7 @@ team (so I can go put them back up). I'll start with setting This filter will allow in any gym that switches from Instinct to any other team. Additionally, we don't want to know about when it -switches to neutral, so we set `"ignore_neutral":"true"`. You can list +switches to neutral, so we set `"ignore_neutral":true`. You can list multiple different filters in the filters section of gyms, and PA will check them one by one. @@ -194,12 +194,12 @@ section of a filters file set up for legendary birds: PokeAlarm allows you to customize the Alerts that it sends out. We want to customize our Raid Alerts to show a more appropriate message. To add custom text to a Discord Alarm, you should be familiar with three pages: -1. Learn how to configure your alarms file with the [Alarms](alarms) +1. Learn how to configure your alarms file with the [Alarms](../configuration/alarms) wiki page. -2. Learn what fields Discord has to change with [Discord](discord) +2. Learn what fields Discord has to change with [Discord](../configuration/alarms/discord.html) wiki page. 3. Learn what DTS options are available to you with the -[Dynamic Text Substitution](dynamic-text-substitution) wiki page. +[Events](../configuration/events) wiki page. ```json { @@ -260,7 +260,7 @@ isn't a starter pokemon! Let's add a second manager that allow us to customize even more. You can find out more about Manager's and their settings on the -[Managers](managers) wiki page. +[Managers](../configuration/managers.html) wiki page. First, lets make two different filter files. We will call the following filter file `starters_filter.json`: @@ -354,13 +354,14 @@ Managers run in separate processes, so they run concurrently and scale well with the number of cores on your machine. However running too many managers can be inefficient and waste your computers resources. -> With great power comes great responsibility. +> *With great power comes great responsibility.* > -> \- Uncle Ben (about Managers, probably) +> \- **Uncle Ben** (about Managers, *probably*) Managers are a great tool that allow you to mix and match almost every setting to any filter or alarm settings. For full details on the power -of Managers, don't forget to check out [Managers](managers) wiki page. +of Managers, don't forget to check out [Managers](../configuration/managers.html) +wiki page. ## Advanced: Missing Info @@ -368,12 +369,12 @@ Sometimes, Event's are missing information needed to correctly filter them. In these instances, you can use the `"is_missing_info"` parameter to require a filter to reject or allow Events with missing information. You can read more about the feature on the -[Filters](filters-overview#missing-info) wiki page. +[Filters](../configuration/filters) wiki page. I really only want monsters like Bulbasaur and Squirtle to trigger notifications if they have the right ivs that I am looking for. If my scanner goofs up and doesn't get the ivs, I don't want to be bothered. -Setting `"is_missing_info": false` tells that filter to reject if +Setting `"is_missing_info":false` tells that filter to reject if any necessary information is missing. ```json @@ -399,7 +400,7 @@ any necessary information is missing. Custom DTS is a feature that let's you define filter-specific DTS that ONLY work when that filter passes. You can read more about it on the -[Filters](filters-overview#custom-dts) wiki page. +[Filters](../configuration/filters) wiki page. I can use it to change certain text depending on which filters pass. diff --git a/docs/guides/json-formatting.md b/docs/guides/json-formatting.md new file mode 100644 index 000000000..53b02d71e --- /dev/null +++ b/docs/guides/json-formatting.md @@ -0,0 +1,20 @@ +# JSON Formatting Help + +## Overview + +This guide contains an overview to the different parts of configuring +and customizing PokeAlarm to fit your needs. + +* [Prerequisites](#prerequisites) +* [Goals](#goals) +* [Setting up an Alarm](#setting-up-an-alarm) +* [Setting up Filters](#setting-up-filters) + * [Monster Filters](#monster-filters) + * [Gym Filters](#gym-filters) + * [Raid Filters](#raid-filters) +* [Customizing Alert Text](#customizing-alert-text) +* [Advanced: Managers](#advanced-managers) +* [Advanced: Missing Info](#advanced-missing-info) +* [Advanced: Custom DTS](#advanced-custom-dts) + +## Prerequisites diff --git a/docs/guides/upgrade-tool.md b/docs/guides/upgrade-tool.md new file mode 100644 index 000000000..c8b04b457 --- /dev/null +++ b/docs/guides/upgrade-tool.md @@ -0,0 +1,20 @@ +# 3.5 -> 3.6 Alarm Upgrade Tool + +## Overview + +This guide contains an overview to the different parts of configuring +and customizing PokeAlarm to fit your needs. + +* [Prerequisites](#prerequisites) +* [Goals](#goals) +* [Setting up an Alarm](#setting-up-an-alarm) +* [Setting up Filters](#setting-up-filters) + * [Monster Filters](#monster-filters) + * [Gym Filters](#gym-filters) + * [Raid Filters](#raid-filters) +* [Customizing Alert Text](#customizing-alert-text) +* [Advanced: Managers](#advanced-managers) +* [Advanced: Missing Info](#advanced-missing-info) +* [Advanced: Custom DTS](#advanced-custom-dts) + +## Prerequisites diff --git a/docs/index.rst b/docs/index.rst index 23336276b..3dc282486 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -35,11 +35,15 @@ know of any rare spawns or raids. configuration/Rules-Overview .. toctree:: + :titlesonly: :maxdepth: 1 - :caption: Guides: + :caption: Guides :glob: - guides/* + Getting Started + JSON Formatting Help + 3.5 -> 3.6 Alarm Upgrade Tool + Bug Reports / Feedback .. toctree:: :titlesonly: From 83d318806d73dd6bcf9988a40f58e18d16e93fde Mon Sep 17 00:00:00 2001 From: MARTINI1 Date: Fri, 2 Mar 2018 05:30:08 +0100 Subject: [PATCH 49/79] RTD - Added Server Settings (#630) --- docs/configuration/Server-Settings.md | 133 ------------ .../{Geofences.md => geofences.md} | 35 +-- .../{Managers.md => managers.md} | 8 +- .../{Rules-Overview.md => rules-overview.md} | 42 ++-- docs/configuration/server-settings.md | 200 ++++++++++++++++++ docs/index.rst | 13 +- 6 files changed, 249 insertions(+), 182 deletions(-) delete mode 100644 docs/configuration/Server-Settings.md rename docs/configuration/{Geofences.md => geofences.md} (91%) rename docs/configuration/{Managers.md => managers.md} (95%) rename docs/configuration/{Rules-Overview.md => rules-overview.md} (71%) create mode 100644 docs/configuration/server-settings.md diff --git a/docs/configuration/Server-Settings.md b/docs/configuration/Server-Settings.md deleted file mode 100644 index 3f2443e90..000000000 --- a/docs/configuration/Server-Settings.md +++ /dev/null @@ -1,133 +0,0 @@ -# Server Settings - -## Overview - -This guide will walk you through configuring server settings for PokeAlarm. - -* [Prerequisites](#prerequisites) -* [Server Settings](#server-settings) -* [Command Line](#command-line) -* [Configuration File](#configuration-file) - -## Prerequisites - -This guide assumes the following: - -1. You have correctly [installed PokeAlarm](installation). - -2. You are using Notepad++, Nano, or Vi(m) to configure any files. Do **NOT** -use or open any files with Notepad or TextEdit - they will break your files! - -## Server Settings - -Settings for the PokeAlarm server can be done the following two ways: - -1. **Command Line** - When starting PokeAlarm, you can specify certain settings -with flags following the start up command. For example, you can change the IP -that PokeAlarm binds itself to by using either `python start_pokealarm.py -H -192.168.0.1` or `python start_pokealarm.py --host 192.168.0.1`. - **Note**: when used together, command line flags will override arguments - specified in the configuration file. - -2. **Configuration File** - You can also use a configuration file in `ini` -format to set server settings for PokeAlarm. These settings use the same flags -at the command line. For example, you either `host: 192.168.0.1` or -`H: 192.168.0.1` line to the configuration file to change the IP that PokeAlarm -binds itself to. - -For files, all relative paths will being from the PokeAlarm root folder, but -absolute file paths can still be used. - -## Command Line - -To get the most recent command line settings for your version, use the -following command: `python start_pokealarm.py --help`. - -``` -usage: start_pokealarm.py [-h] [-cf CONFIG] [-d] [-H HOST] [-P PORT] - [-C CONCURRENCY] [-m MANAGER_COUNT] [-M MANAGER_NAME] - [-k KEY] [-f FILTERS] [-a ALARMS] [-r RULES] - [-gf GEOFENCES] [-l LOCATION] [-L {de,en,es,fr,it,ko,pt,zh_hk}] - [-u {metric,imperial}] [-ct {mem,file}] [-tl TIMELIMIT] - [-ma MAX_ATTEMPTS] [-tz TIMEZONE] - -optional arguments: - -h, --help Show this help message and exit. - -cf CONFIG, --config CONFIG - Configuration file. - -d, --debug Debug Mode. - -H HOST, --host HOST Set web server listening host - -P PORT, --port PORT Set web server listening port - -C CONCURRENCY, --concurrency CONCURRENCY - Maximum concurrent connections for the webserver. - -m MANAGER_COUNT, --manager_count MANAGER_COUNT - Number of Manager processes to start. - -M MANAGER_NAME, --manager_name MANAGER_NAME - Names of Manager processes to start. - -k KEY, --key KEY Specify a Google API Key to use. - -f FILTERS, --filters FILTERS - Filters configuration file. default: filters.json - -a ALARMS, --alarms ALARMS - Alarms configuration file. default: alarms.json - -r RULES, --rules Rules configuration file. - -gf GEOFENCES, --geofences GEOFENCES - Alarms configuration file. default: None - -l LOCATION, --location LOCATION - Location, can be an address or coordinates - -L {de,en,es,fr,it,ko,pt,zh_hk}, --locale {de,en,es,fr,it,ko,pt,zh_hk} - Locale for Pokemon and Move names: default en, check - locale folder for more options - -u {metric,imperial}, --units {metric,imperial} - Specify either metric or imperial units to use for - distance measurements. - -ct {mem,file}, --cache_type {mem,file} - Caching method used to cache data objects for use in Alerts. - -tl TIMELIMIT, --timelimit TIMELIMIT - Minimum number of seconds remaining on a pokemon to - send a notify - -ma MAX_ATTEMPTS, --max_attempts MAX_ATTEMPTS - Maximum number of attempts an alarm makes to send a - notification. - -tz TIMEZONE, --timezone TIMEZONE - Timezone used for notifications. Ex: - "America/Los_Angeles" -``` - -## Configuration File - -A copy of the most recent configuration file should be located at -`config/config.ini.example`. You can copy this file as a starting point. - -By default, PokeAlarm will load the file at `config/config.ini` if it exists. -You can manually specify a configuration file with either the `-cf` or -`--config` file via the command line. - -```ini -# Copy this file to config.ini and modify to suit your needs -# Uncomment a line (remove the #) when you want to change its default value. -# Multiple arguments can be listed as [arg1, arg2, ... ] -# Number of arguments must match manager_count or be a single argument (single arguments will apply to all Managers) -# To exclude an argument for a specific manager, use 'None' - -# Server Settings -#debug # Enables debugging mode -#host: # Address to listen on (default 127.0.0.1) -#port: # Port to listen on (default: 4000) -#concurrency: 200 # Maximum concurrent connections for the webserver(default: 200) -#manager_count: 1 # Number of Managers to run. (default: 1) - -# Manager-Specific Settings -#manager_name # Name of the Manager in the logs. Default(manager_0). -#key: # Google Maps API Key to use -#filters: # File containing filter rules (default: filters.json) -#alarms: # File containing alarm rules (default: alarms.json) -#rules: # File containing rules settings (default: None) -#geofence: # File containing geofence(s) used to filter (default: None) -#location: # Location for the manager. 'Name' or 'lat lng' (default: None) -#locale: # Language to be used to translate names (default: en) -#cache_type: # Method used to cache dynamic objects used in Alerts. (default: mem) -#unit: # Units used to measure distance. Either 'imperial' or 'metric' (default: imperial) -#timelimit: # Minimum number of seconds remaining to send a notification (default: 0) -#max_attempts: # Maximum number of attempts an alarm makes to send a notification. (default: 3) -#timezone: # Timezone used for notifications Ex: 'America/Los_Angeles' or '[America/Los_Angeles, America/New_York]' -``` diff --git a/docs/configuration/Geofences.md b/docs/configuration/geofences.md similarity index 91% rename from docs/configuration/Geofences.md rename to docs/configuration/geofences.md index c70ef061c..79d1e9bb6 100644 --- a/docs/configuration/Geofences.md +++ b/docs/configuration/geofences.md @@ -1,6 +1,7 @@ # Geofences ## Overview + * [Introduction](#introduction) * [Instructions](#instructions) * [Example: 4 point geofence - Central Park, New York, NY](#example-4-point-geofence---central-park-new-york-ny) @@ -9,15 +10,16 @@ * [Geofence Generator: Draw Your Own Geofence](#geofence-generator-draw-your-own-geofence) ## Introduction + Geofencing will restrict PokeAlarm alerts to a defined geographical area. The area is defined by a list of at least 2 sets of latitude and longitude -coordinates. You may provide as many coordinates as you'd like to define +coordinates. You may provide as many coordinates as you'd like to define your area of interest, provided that these sets are in the order that defines your polygon. **Note:** PokeAlarm will first check pokemon alert distance, *then* will check to see if the pokemon is located within your geofence. -See [Filters](Monster-Filters#parameters) on how to limit alerts +See [Monster Filters](filters/monster-filters.html) on how to limit alerts based on distance. ## Instructions @@ -79,7 +81,7 @@ If successful, you should receive a confirmation in your log: For our Central Park example, all 4 points encompass the entire park. The visual of the geofenced area is below. The red marker in the image denotes a selected location, here, -"The Pond, Central Park, NY". +`The Pond, Central Park, NY`. ![](images/geofence_central_park_bounded.png) @@ -89,8 +91,8 @@ PokeAlarm will then notify you of pokemon within the shaded area. or will not apply to alerts. Example: ``` -"filter_tiny_central_park": { - "geofences": [ "Central Park, NY" ] +"filter_tiny_central_park":{ + "geofences":["Central Park, NY"] } ``` @@ -129,8 +131,8 @@ file: `geofence_coronado.txt` And remember to set filters to apply geofence like this example: ``` -"filter_coronado": { - "geofences": [ "Coronado, CA" ] +"filter_coronado":{ + "geofences":["Coronado, CA"] } ``` @@ -176,32 +178,33 @@ coordinates. For example: In this example, you can configure an individual alarm to only check one geofence from your geofence.txt. This filter will only check the geofence -named "Central Park, NY: +named `Central Park, NY`: ``` "filter_central_park": { - "geofences": [ "Central Park, NY" ] + "geofences":["Central Park, NY"] } ``` Or check the 2 geofence zones with: ``` -"filter_central_park_coronado": { - "geofences": [ "Central Park, NY", "Coronado, CA" ] +"filter_central_park_coronado":{ + "geofences":["Central Park, NY","Coronado, CA"] } ``` -Additionally, you can use "geofences": [ "all" ] as a shortcut for checking +Additionally, you can use `"geofences":["all"]` as a shortcut for checking all geofences in a geofence file. Example: ``` -"filter_all_geofences": { - "geofences": [ "all" ] +"filter_all_geofences":{ + "geofences":["all"] } ``` ## Geofence Generator: Draw Your Own Geofence + These are handy web tool to create and visualize your desired geofence. Jason's [A Better Fence Editor](http://geo.jasparke.net/) - Recommended by PokeAlarm team @@ -224,5 +227,5 @@ To use it: coordinate list. 3. Complete your geofence area by clicking the original point, the last point, or double clicking. -4. Click "Show Coordinates", Assign a name - ie: [Seattle] and then -click "Copy to Clipboard" +4. Click `Show Coordinates`, Assign a name - ie: [Seattle] and then +click `Copy to Clipboard` diff --git a/docs/configuration/Managers.md b/docs/configuration/managers.md similarity index 95% rename from docs/configuration/Managers.md rename to docs/configuration/managers.md index 055b33531..e769b8942 100644 --- a/docs/configuration/Managers.md +++ b/docs/configuration/managers.md @@ -16,7 +16,7 @@ This guide will walk you through configuring server settings for PokeAlarm. This guide assumes the following: -1. You have correctly [installed PokeAlarm](installation). +1. You have correctly [installed PokeAlarm](../getting-started/installation.html). 2. You are using Notepad++, Nano, or Vi(m) to configure any files. Do **NOT** use or open any files with Notepad or TextEdit - they will break your files! @@ -27,7 +27,7 @@ In PokeAlarm, a **Manager** is a grouping of different settings. Managers allow you to configure multiple combinations of filters, alarms, geofences, and other settings behind single webserver. -![Manager Example](images/v3_overview.png) +![Manager Example](../images/managers.png) Webhooks are received by the PokeAlarm server, which then passes a copy to the manager. Each Manager determines (independently)if the alert passes one of the @@ -57,7 +57,7 @@ file to set up their alarms. This same configuration can be accomplished via the following in the configuration file: ```ini -manager_count: 1 +manager_count: 3 filters: [ common.json, rares.json, uncommon.json ] alarms: alarms.json ``` @@ -89,7 +89,7 @@ geofence: [ city1.json, none, city2.json ] As you can see, you can mix managers with geofences and without by using `none` for any managers that you don't want a geofence file loaded for. -You can find more information about Geofences on the [Geofences](geofences) +You can find more information about Geofences on the [Geofences](geofences.html) wiki page. ### Timezones diff --git a/docs/configuration/Rules-Overview.md b/docs/configuration/rules-overview.md similarity index 71% rename from docs/configuration/Rules-Overview.md rename to docs/configuration/rules-overview.md index 1ed507084..83c971375 100644 --- a/docs/configuration/Rules-Overview.md +++ b/docs/configuration/rules-overview.md @@ -12,9 +12,9 @@ This page assumes: 1. You have a working PA installations. -2. You read and understood the [Filters](Filters-Overview) page. +2. You read and understood the [Filters](filters) page. 3. You read and understood the [Alarms](alarms) page -4. You have an understanding on what a [Manager](Managers) is. +4. You have an understanding on what a [Manager](managers.html) is. ## Default Rule @@ -28,17 +28,16 @@ Imagine you have some filters( `"100-iv"`, `"90-iv"`, filter. If that doesn't match, it will check the `"90-iv"` filter. Once it finds a match, it will then send to all of the alarms. -This behavior is known as the 'default rule' - all filters to all +This behavior is known as the `default rule` - all filters to all alarms. If you don't specify any rules for a section, this is the -default behavior. The 'default rule' for the above scenario could be +default behavior. The `default rule` for the above scenario could be described as the following: ```json -"default": { - "filters": ["100-iv", "90-iv", "in_geofence", "rare-mon"], - "alarms": ["discord-rare", "discord-perfect", "telegram-all" ] +"default":{ + "filters":["100-iv","90-iv","in_geofence","rare-mon"], + "alarms":["discord-rare","discord-perfect","telegram-all"] } - ``` Each rule has a name, and 2 required sections: `"filters"` and @@ -56,15 +55,15 @@ Each rule file can have 5 sections, one for each type of event. An empty rules file would look like this, and would results in the default rules: ```json { - "monsters": { + "monsters":{ }, - "stops": { + "stops":{ }, - "gyms": { + "gyms":{ }, - "eggs": { + "eggs":{ }, - "raids": { + "raids":{ } } ``` @@ -72,19 +71,19 @@ rules file would look like this, and would results in the default rules: Adding rules will override the default rules and create new behavior. If multiple rules are specified, they will be checked independently and possible trigger a notification for each one. For example, the -following would send `"rare-mon"` events to the telegram alarm, and all +following would send `"rare-mon"` events to the telegram alarm, and all other events to the discord alarm. ```json { - "monsters": { - "discord-rule": { - "filters": [ "100-iv", "90-iv", "in_geofence" ], - "alarms": [ "discord-rare", "discord-perfect" ] + "monsters":{ + "discord-rule":{ + "filters":["100-iv","90-iv","in_geofence"], + "alarms":["discord-rare","discord-perfect"] }, - "telegram-rule": { - "filters": [ "rare-mon" ], - "alarms": [ "telegram-all" ] + "telegram-rule":{ + "filters":["rare-mon"], + "alarms":["telegram-all"] } } } @@ -93,4 +92,3 @@ other events to the discord alarm. ## Examples Coming soon! - diff --git a/docs/configuration/server-settings.md b/docs/configuration/server-settings.md new file mode 100644 index 000000000..a2048da7c --- /dev/null +++ b/docs/configuration/server-settings.md @@ -0,0 +1,200 @@ +# Server Settings + +## Overview + +This guide will walk you through configuring server settings for PokeAlarm. + +* [Prerequisites](#prerequisites) +* [Server Settings](#server-settings) +* [Command Line](#command-line) +* [Configuration File](#configuration-file) + +## Prerequisites + +This guide assumes the following: + +1. You have correctly [installed PokeAlarm](../getting-started/installation.html). + +2. You are using Notepad++, Nano, or Vi(m) to configure any files. Do **NOT** +use or open any files with Notepad or TextEdit - they will break your files! + +## Server Settings + +Settings for the PokeAlarm server can be done the following two ways: + +1. **Command Line** - When starting PokeAlarm, you can specify certain settings +with flags following the start up command. For example, you can change the IP +that PokeAlarm binds itself to by using either `python start_pokealarm.py -H +192.168.0.1` or `python start_pokealarm.py --host 192.168.0.1`. + **Note**: when used together, command line flags will override arguments + specified in the configuration file. + +2. **Configuration File** - You can also use a configuration file in `ini` +format to set server settings for PokeAlarm. These settings use the same flags +at the command line. For example, you either `host: 192.168.0.1` or +`H: 192.168.0.1` line to the configuration file to change the IP that PokeAlarm +binds itself to. + +For files, all relative paths will being from the PokeAlarm root folder, but +absolute file paths can still be used. + +## Command Line + +To get the most recent command line settings for your version, use the +following command: `python start_pokealarm.py --help`. + +``` +usage: start_pokealarm.py [-h] [-cf CONFIG] [-d] [-H HOST] [-P PORT] + [-C CONCURRENCY] [-m MANAGER_COUNT] + [-M MANAGER_NAME] [-f FILTERS] [-a ALARMS] + [-r RULES] [-gf GEOFENCES] [-l LOCATION] + [-L {de,en,es,fr,it,ko,pt,zh_hk}] + [-u {metric,imperial}] [-tz TIMEZONE] [-k GMAPS_KEY] + [--gmaps-rev-geocode GMAPS_REV_GEOCODE] + [--gmaps-dm-walk GMAPS_DM_WALK] + [--gmaps-dm-bike GMAPS_DM_BIKE] + [--gmaps-dm-drive GMAPS_DM_DRIVE] + [--gmaps-dm-transit GMAPS_DM_TRANSIT] + [-ct {mem,file}] [-tl TIMELIMIT] [-ma MAX_ATTEMPTS] + +optional arguments: + -h, --help Show this help message and exit. + -cf CONFIG, --config CONFIG + Configuration file. + -d, --debug Debug Mode. + -H HOST, --host HOST Set web server listening host. + -P PORT, --port PORT Set web server listening port. + -C CONCURRENCY, --concurrency CONCURRENCY + Maximum concurrent connections for the webserver. + -m MANAGER_COUNT, --manager_count MANAGER_COUNT + Number of Manager processes to start. + -M MANAGER_NAME, --manager_name MANAGER_NAME + Names of Manager processes to start. + -f FILTERS, --filters FILTERS + Filters configuration file. default: filters.json + -a ALARMS, --alarms ALARMS + Alarms configuration file. default: alarms.json + -r RULES, --rules RULES + Rules configuration file. default: None + -gf GEOFENCES, --geofences GEOFENCES + Alarms configuration file. default: None + -l LOCATION, --location LOCATION + Location, can be an address or coordinates. + -L {de,en,es,fr,it,ko,pt,zh_hk}, --locale {de,en,es,fr,it,ko,pt,zh_hk} + Locale for Pokemon and Move names: default en," + " + check locale folder for more options. + -u {metric,imperial}, --units {metric,imperial} + Specify either metric or imperial units to use for + distance " + "measurements. + -tz TIMEZONE, --timezone TIMEZONE + Timezone used for notifications. Ex: + "America/Los_Angeles" + -k GMAPS_KEY, --gmaps-key GMAPS_KEY + Specify a Google API Key to use. + --gmaps-rev-geocode GMAPS_REV_GEOCODE + Enable Walking Distance Matrix DTS. + --gmaps-dm-walk GMAPS_DM_WALK + Enable Walking Distance Matrix DTS. + --gmaps-dm-bike GMAPS_DM_BIKE + Enable Bicycling Distance Matrix DTS. + --gmaps-dm-drive GMAPS_DM_DRIVE + Enable Driving Distance Matrix DTS. + --gmaps-dm-transit GMAPS_DM_TRANSIT + Enable Transit Distance Matrix DTS. + -ct {mem,file}, --cache_type {mem,file} + Specify the type of cache to use. Options: ['mem', + 'file'] (Default: 'mem') + -tl TIMELIMIT, --timelimit TIMELIMIT + Minimum limit. + -ma MAX_ATTEMPTS, --max_attempts MAX_ATTEMPTS + Maximum attempts an alarm makes to send a + notification. +``` + +## Configuration File + +A copy of the most recent configuration file should be located at +`config/config.ini.example`. You can copy this file as a starting point. + +By default, PokeAlarm will load the file at `config/config.ini` if it exists. +You can manually specify a configuration file with either the `-cf` or +`--config` file via the command line. + +```ini +# DO NOT USE NOTEPAD OR TEXTEDIT TO EDIT FILES! +# USE AN EDITOR SUCH AS NOTEPAD++, ATOM, NANO OR VI(M) +# You can create a copy of this config and edit it to suit your needs. +# Uncomment a line (remove the #) when you want to change its default value. +# By default, PA will use `config/config.ini` to load settings. +# You can override the config file selection with `--config-file` or `-cf`. + + +######################## +# Webserver Settings +######################## + +#host: 127.0.0.1 # Interface to listen on (default='127.0.0.1') +#port: 4000 # Port to listen on (default='4000') +#concurrency: 200 # Maximum concurrent connections to webserver (default=200) +#manager_count: 1 # Number of Managers to run (default=1) +#debug # Enable debug logging (default='False) + + +######################### +# Manager Settings +######################### +# All of the settings below this line are manager-specific. +# If a single setting is supplied, it will apply to all Managers. +# Example: `locale: en` will set all Managers to english +# If an array of settings is supplied, they will be apply to Managers in order. +# Example: `locale: [ en, fr, en ]` sets a different language for 3 Managers. +# `None` can be used to exempt a Manager from an optional setting + +#manager_name: # Name of Manager, used for logging (default='manager#') + + +# File Settings +##################### +# File settings define location of files with settings for a Manager. +# Relative paths are presumed from install folder, root paths are absolute. + +#filters: filters.json # Filters for the Manager (default='filters.json') +#alarms: alarms.json # Alarms for the Manager (default='alarms.json') +#rules: rules.json # Rules for the Manager (default=None) +#geofence: geofence.txt # Geofences to be used in Filters (default=None) + + +# Location Specific +##################### +#location: # Location, as address or coordinates (default=None) +#locale: en # Language used for DTS translations (default='en') + # Options: ['de', 'en', 'es', 'fr', 'it', 'ko', 'pt', 'zh_hk' ] +#unit: imperial # Units used to measurements.(default='imperial') + # Options: ['imperial', 'metric' ] +#timezone: America/Los_Angeles # Timezones used for notifications. Default uses system time (default=None) + # Options: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones + + +# GMaps Settings +################ +#gmaps-key: # Google Maps API Key (default=None) +#gmaps-rev-geocode: yes # Enable Reverse Geocoded DTS. (default='no') + # Note: This requires the Reverse Geocoding API to be enabled on your GMAPs key. +#gmaps-dm-walk: yes # Enable Walking DM DTS. (default='no') + # Note: This requires the Distance Matrix API to be enabled on your GMAPs key. +#gmaps-dm-bike: yes # Enable Bicycling DM DTS. (default='no') + # Note: This requires the Distance Matrix API to be enabled on your GMAPs key. +#gmaps-dm-drive: yes # Enable Driving DM DTS. (default='no') + # Note: This requires the Distance Matrix API to be enabled on your GMAPs key. +#gmaps-dm-transit: yes # Enable Transit DM DTS. (default='no') + # Note: This requires the Distance Matrix API to be enabled on your GMAPs key. + + +# Miscellaneous +################ +#cache_type: file # Type of cache used to share information between webhooks. (default='mem') + # Options: ['mem', 'file'] +#timelimit: 0 # Minimum seconds remaining on an Event to trigger notification (default=0) + # Note - `max_attempts` is being deprecated and may be replaced by alarm-level settings +#max_attempts: 3 # Maximum number of attempts an alarm makes to send a notification. (default=3) +``` diff --git a/docs/index.rst b/docs/index.rst index 3dc282486..d33904d6f 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -23,16 +23,15 @@ know of any rare spawns or raids. getting-started/faq .. toctree:: + :titlesonly: :maxdepth: 1 - :caption: Configuration: + :caption: Configuration + :glob: configuration/server-settings - configuration/events/index - configuration/filters/index - configuration/alarms/index - configuration/Managers - configuration/Geofences - configuration/Rules-Overview + configuration/managers + configuration/rules-overview + configuration/geofences .. toctree:: :titlesonly: From 5a90ed26d30567b9ea35b2c65b806b9f5f42e0a0 Mon Sep 17 00:00:00 2001 From: MARTINI1 Date: Fri, 2 Mar 2018 17:04:21 +0100 Subject: [PATCH 50/79] RTD - Update Filters (#632) --- docs/configuration/filters/Egg-Filters.md | 47 ------ docs/configuration/filters/Gym-Filters.md | 47 ------ docs/configuration/filters/Monster-Filters.md | 67 -------- docs/configuration/filters/Raid-Filters.md | 53 ------ docs/configuration/filters/Stop-Filters.md | 43 ----- docs/configuration/filters/egg-filters.rst | 71 ++++++++ docs/configuration/filters/gym-filters.rst | 70 ++++++++ docs/configuration/filters/index.rst | 152 +++++++++++------- .../configuration/filters/monster-filters.rst | 104 ++++++++++++ docs/configuration/filters/raid-filters.rst | 75 +++++++++ docs/configuration/filters/stop-filters.rst | 55 +++++++ 11 files changed, 469 insertions(+), 315 deletions(-) delete mode 100644 docs/configuration/filters/Egg-Filters.md delete mode 100644 docs/configuration/filters/Gym-Filters.md delete mode 100644 docs/configuration/filters/Monster-Filters.md delete mode 100644 docs/configuration/filters/Raid-Filters.md delete mode 100644 docs/configuration/filters/Stop-Filters.md create mode 100644 docs/configuration/filters/egg-filters.rst create mode 100644 docs/configuration/filters/gym-filters.rst create mode 100644 docs/configuration/filters/monster-filters.rst create mode 100644 docs/configuration/filters/raid-filters.rst create mode 100644 docs/configuration/filters/stop-filters.rst diff --git a/docs/configuration/filters/Egg-Filters.md b/docs/configuration/filters/Egg-Filters.md deleted file mode 100644 index db3f4bc05..000000000 --- a/docs/configuration/filters/Egg-Filters.md +++ /dev/null @@ -1,47 +0,0 @@ -# Eggs - -## Overview - -* [Prerequisites](#prerequisites) -* [Introduction](#introduction) -* [Parameters](#parameters) - -## Prerequisites - -This page assumes: - -1. You have a working scanner. -2. You are familiar with -[JSON formatting](https://www.w3schools.com/js/js_json_intro.asp). -3. You are using the latest version of PokeAlarm. -4. You have read and understood the [Filters Overview](Filters-Overview) page. - -## Introduction - -The `"eggs"` section has three distinct settings. - -| Setting Name | Description | -| -------------------- |---------------------------------------------------------- | -| enabled | Process Egg Events only if `true` | -| defaults | See [filters](Filters-Overview#defaults) page on defaults | -| filters | See below parameters | - -## Parameters - -Egg Filters can use the following parameters to filter Egg Events: - -| Parameter | Description | Example | -| ------------- |---------------------------------------------- |---------| -| min_dist | Min distance of event from set location in miles or meters (depending on settings). | `0.0` *| -| max_dist | Max distance of event from set location in miles or meters (depending on settings). | `1000.0` *| -| min_time_left | Minimum time (in seconds) until egg hatches. | `1000` | -| max_time_left | Maximum time (in seconds) until egg hatches. | `2400` | -| min_egg_lvl | Minimum level of the egg when hatched. | `0` | -| max_egg_lvl | Maximum level of the egg when hatched. | `5` | -| current_teams | List of allowed current teams, by id or name. | `[ "Instinct", "Mystic" ]` | -| gym_name_contains | List of regex's required to be in the gym name. | `[ "Sponsored" , "West\\sOak"]` | -| geofences | See [filters](Filters-Overview#geofence) page on 'Geofences' | `[ "geofence1", "geofence2" ]` | -| custom_dts | See [filters](Filters-Overview#custom-dts) page on 'Custom DTS' | `{ "dts1" : "substitution" }` | -| is_missing_info | See [filters](Filters-Overview#missing-info) page on 'Missing Info' | `true` or `false` | - -\* Floats can use `"inf"` to represent infinity diff --git a/docs/configuration/filters/Gym-Filters.md b/docs/configuration/filters/Gym-Filters.md deleted file mode 100644 index 90e4ba363..000000000 --- a/docs/configuration/filters/Gym-Filters.md +++ /dev/null @@ -1,47 +0,0 @@ -# Gyms - -## Overview - -* [Prerequisites](#prerequisites) -* [Introduction](#introduction) -* [Parameters](#parameters) - -## Prerequisites - -This page assumes: - -1. You have a working scanner. -2. You are familiar with -[JSON formatting](https://www.w3schools.com/js/js_json_intro.asp). -3. You are using the latest version of PokeAlarm. -4. You have read and understood the [Filters Overview](Filters-Overview) page. - -## Introduction - -The `"gyms"` section has four distinct settings. - -| Setting Name | Description | -| -------------------- |---------------------------------------------------------- | -| enabled | Process Gym Events only if `true` | -| ignore_neutral | If `true`, ignore uncontested gyms | -| defaults | See [filters](Filters-Overview#defaults) page on defaults | -| filters | See below parameters | - -## Parameters - -Gym Filters can use the following parameters to filter Gym Events: - -| Parameter | Description | Example | -| ----------- |------------------------------------------------------------------------- |------------------- | -| min_dist | Min distance of event from set location in miles or meters (depending on settings). | `0.0` * | -| max_dist | Max distance of event from set location in miles or meters (depending on settings). | `1000.0` * | -| old_teams | List of allowed previous teams, by id or name. | `[ "Instinct", "Mystic" ]` | -| new_teams | List of allowed new teams, by id or name. | `[ "Valor", "Mystic" ]` | -| gym_name_contains | List of regex's required to be in the gym name. | `[ "Sponsored" , "West\\sOak"]` | -| min_slots | Minimum number of guard slots available. | `2` | -| max_slots | Maximum number of guard slots available. | `6` | -| geofences | See [filters](Filters-Overview#geofence) page on 'Geofences'. | `[ "geofence1", "geofence2" ]` | -| custom_dts | See [filters](Filters-Overview#custom-dts) page on 'Custom DTS'. | `{ "dts1" : "substitution" }` | -| is_missing_info | See [filters](Filters-Overview#missing-info) page on 'Missing Info'. | `true` or `false` | - -\* Floats can use `"inf"` to represent infinity diff --git a/docs/configuration/filters/Monster-Filters.md b/docs/configuration/filters/Monster-Filters.md deleted file mode 100644 index 4c2c9d58a..000000000 --- a/docs/configuration/filters/Monster-Filters.md +++ /dev/null @@ -1,67 +0,0 @@ -# Monsters - -## Overview - -* [Prerequisites](#prerequisites) -* [Introduction](#introduction) -* [Parameters](#parameters) - -## Prerequisites - -This page assumes: - -1. You have a working scanner. -2. You are familiar with -[JSON formatting](https://www.w3schools.com/js/js_json_intro.asp). -3. You are using the latest version of PokeAlarm. -4. You have read and understood the [Filters Overview](Filters-Overview) page. - -## Introduction - -The `"monsters"` section has three distinct settings. - -| Setting Name | Description | -| -------------------- |---------------------------------------------------------- | -| enabled | Process Monster Events only if `true` | -| defaults | See [filters](Filters-Overview#defaults) page on defaults | -| filters | See below parameters | - -## Parameters - -Monster Filters can use the following parameters to filter Events: - -| Parameter | Description | Example | -| ------------- |-------------------------------------------------- |---------- | -| monsters | Array of allowed monsters, by id or name. | `[ "Bulbasaur", "2", 3 ]`| -| ignore_monsters | Array of ignored monsters, by id or name. | `[ "Pidgey", "13", 14 ]`| -| min_dist | Min distance of event from set location in miles or meters (depending on settings). | `0.0` *| -| max_dist | Max distance of event from set location in miles or meters (depending on settings). | `1000.0` *| -| min_time_left | Minimum time (in seconds) until monster despawns. | `1000` | -| max_time_left | Maximum time (in seconds) until monster despawns. | `2400` | -| min_lvl | Minimum level of the monster. | `0` | -| max_lvl | Maximum level of the monster. | `40` | -| min_atk | Minimum attack IV of the monster. | `0` | -| max_atk | Maximum attack IV of the monster. | `15` | -| min_def | Minimum defense IV of the monster. | `0` | -| max_def | Maximum defense IV of the monster. | `15` | -| min_sta | Minimum stamina IV of the monster. | `0` | -| max_sta | Maximum stamina IV of the monster. | `15` | -| min_iv | Minimum total IV percentage of the monster. | `0.0` * | -| max_iv | Maximum total IV percentage of the monster. | `100.0` * | -| min_cp | Minimum CP of the monster. | `0` | -| max_cp | Maximum CP of the monster. | `10000` | -| form_ids | Array of allowed form ids for a monster. | `[ 0, "1" ]` | -| quick_moves | Accepted quick moves, by id or name. | `[ "Vine Whip", "Tackle"]` | -| charge_moves | Accepted charge moves, by id or name. | `[ "Sludge Bomb", "Seed Bomb"]` | -| genders | Array of acceptable genders. Options: `"male", "female", "neutral"` | `[ "female" ]` | -| min_height | Minimum height of the monster. | `0.0` * | -| max_height | Maximum height of the monster. | `250.0` * | -| min_weight | Minimum weight of the monster. | `0.0` * | -| max_weight | Maximum weight of the monster. | `250.0` * | -| sizes | Array of acceptable sizes. Options: `"tiny", "small", "normal", "large", "big"` | `[ "tiny", "big" ]` | -| weather | Accepted weathers, by id or name. | `[ "Clear", 2 ]` | -| geofences | See [filters](Filters-Overview#geofence) page on 'Geofences' | `[ "geofence1", "geofence2" ]` | -| custom_dts | See [filters](Filters-Overview#custom-dts) page on 'Custom DTS' | `{ "dts1" : "substitution" }` | -| is_missing_info | See [filters](Filters-Overview#missing-info) page on 'Missing Info' | `true` or `false` | - -\* Floats can use `"inf"` to represent infinity diff --git a/docs/configuration/filters/Raid-Filters.md b/docs/configuration/filters/Raid-Filters.md deleted file mode 100644 index 1ee3eca45..000000000 --- a/docs/configuration/filters/Raid-Filters.md +++ /dev/null @@ -1,53 +0,0 @@ -# Raids - -## Overview - -* [Prerequisites](#prerequisites) -* [Introduction](#introduction) -* [Parameters](#parameters) - -## Prerequisites - -This page assumes: - -1. You have a working scanner. -2. You are familiar with -[JSON formatting](https://www.w3schools.com/js/js_json_intro.asp). -3. You are using the latest version of PokeAlarm. -4. You have read and understood the [Filters Overview](Filters-Overview) page. - -## Introduction - -The `"raids"` section has three distinct settings. - -| Setting Name | Description | -| -------------------- |---------------------------------------------------------- | -| enabled | Process Raid Events only if `true` | -| defaults | See [filters](Filters-Overview#defaults) page on defaults | -| filters | See below parameters | - -## Parameters - -Raid Filters can use the following parameters to filter Raid Events: - -| Parameter | Description | Example | -| ------------- |---------------------------------------------- |--------- | -| monsters | Array of allowed monsters, by id or name. | `[ "Raikou", "244", 245 ]`| -| min_dist | Min distance of event from set location in miles or meters (depending on settings). | `0.0` *| -| max_dist | Max distance of event from set location in miles or meters (depending on settings). | `1000.0` *| -| min_time_left | Minimum time (in seconds) until raid ends. | `1000` | -| max_time_left | Maximum time (in seconds) until raid ends. | `2400` | -| min_raid_lvl | Minimum level of the raid. | `0` | -| max_raid_lvl | Maximum level of the raid. | `5` | -| min_cp | Minimum CP of the monster. | `0` | -| max_cp | Maximum CP of the monster. | `100000` | -| quick_moves | Accepted quick moves, by id or name. | `[ "Vine Whip", "Tackle"]` | -| charge_moves | Accepted charge moves, by id or name. | `[ "Sludge Bomb", "Seed Bomb"]` | -| current_teams | List of allowed current teams, by id or name. | `[ "Instinct", "Mystic" ]` | -| gym_name_contains | List of regex's required to be in the gym name. | `[ "Sponsored" , "West\\sOak"]` | -| weather | Accepted weathers, by id or name. | `[ "Clear", 2 ]` | -| geofences | See [filters](Filters-Overview#geofence) page on 'Geofences' | `[ "geofence1", "geofence2" ]` | -| custom_dts | See [filters](Filters-Overview#custom-dts) page on 'Custom DTS' | `{ "dts1" : "substitution" }` | -| is_missing_info | See [filters](Filters-Overview#missing-info) page on 'Missing Info' | `true` or `false` | - -\* Floats can use `"inf"` to represent infinity diff --git a/docs/configuration/filters/Stop-Filters.md b/docs/configuration/filters/Stop-Filters.md deleted file mode 100644 index 2b4d8c7ca..000000000 --- a/docs/configuration/filters/Stop-Filters.md +++ /dev/null @@ -1,43 +0,0 @@ -# Stops - -## Overview - -* [Prerequisites](#prerequisites) -* [Introduction](#introduction) -* [Parameters](#parameters) - -## Prerequisites - -This page assumes: - -1. You have a working scanner. -2. You are familiar with -[JSON formatting](https://www.w3schools.com/js/js_json_intro.asp). -3. You are using the latest version of PokeAlarm. -4. You have read and understood the [Filters Overview](Filters-Overview) page. - -## Introduction - -The `"stops"` section has three distinct settings. - -| Setting Name | Description | -| -------------------- |---------------------------------------------------------- | -| enabled | Process Stop Events only if `true` | -| defaults | See [filters](Filters-Overview#defaults) page on defaults | -| filters | See below parameters | - -## Parameters - -Stop Filters can use the following parameters to filter Stop Events: - -| Parameter | Description | Example | -| ------------- |--------------------------------------------- |---------| -| min_dist | Min distance of event from set location in miles or meters (depending on settings). | `0.0` *| -| max_dist | Max distance of event from set location in miles or meters (depending on settings). | `1000.0` *| -| min_time_left | Minimum time (in seconds) until lure ends. | `1000` | -| max_time_left | Maximum time (in seconds) until lure ends. | `2400` | -| geofences | See [filters](Filters-Overview#geofence) page on 'Geofences' | `[ "geofence1", "geofence2" ]` | -| custom_dts | See [filters](Filters-Overview#custom-dts) page on 'Custom DTS' | `{ "dts1" : "substitution" }` | -| is_missing_info | See [filters](Filters-Overview#missing-info) page on 'Missing Info' | `true` or `false` | - -\* Floats can use `"inf"` to represent infinity diff --git a/docs/configuration/filters/egg-filters.rst b/docs/configuration/filters/egg-filters.rst new file mode 100644 index 000000000..459596e82 --- /dev/null +++ b/docs/configuration/filters/egg-filters.rst @@ -0,0 +1,71 @@ +Eggs +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + +Prerequisites +------------------------------------- + +This page assumes: + ++ You have a working scanner. ++ You understand + `JSON formatting `_. ++ You are using the latest version of PokeAlarm. ++ You have read and understood the :doc:`index` page. + +Introduction +------------------------------------- + +The ``"eggs"`` section has three distinct settings. + ++----------------------+-----------------------------------------------------------+ +| Setting Name | Description | ++======================+===========================================================+ +| enabled | Process Egg Events only if ``true`` | ++----------------------+-----------------------------------------------------------+ +| defaults | Section for the default settings | ++----------------------+-----------------------------------------------------------+ +| filters | See below parameters | ++----------------------+-----------------------------------------------------------+ + + +Available DTS +------------------------------------- + +General +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +================== ================================================ ================================ +Parameter Description Example +================== ================================================ ================================ +min_egg_lvl Minimum level of the egg when hatched. ``0`` +max_egg_lvl Maximum level of the egg when hatched. ``5`` +current_teams List of allowed current teams, by id or name. ``["Instinct","Mystic"]`` +gym_name_contains List of regex's required to be in the gym name. ``["Sponsored","West\\sOak"]`` +gym_name_excludes List of regex's rejected to be in the gym name. ``["Sponsored","West\\sOak"]`` +================== ================================================ ================================ + + +Miscellaneous +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +=============== ====================================================== ============================== +Parameter Description Example +=============== ====================================================== ============================== +min_dist Min distance of event from set location in miles ``0.0`` * + or meters (depending on settings). +max_dist Max distance of event from set location in miles ``1000.0`` * + or meters (depending on settings). +min_time_left Minimum time (in seconds) until monster despawns. ``1000`` +max_time_left Maximum time (in seconds) until monster despawns. ``2400`` +weather Accepted weathers, by id or name. ``["Clear",2]`` +geofences See :ref:`geofences_filters` page on 'Geofences' ``["geofence1","geofence2"]`` +custom_dts See :ref:`custom_dts_filters` page on 'Custom DTS' ``{"dts1":"substitution"}`` +is_missing_info See :ref:`missing_info_filters` page on 'Missing Info' ``true`` or ``false`` +=============== ====================================================== ============================== + ++ Floats can use ``"inf"`` to represent infinity diff --git a/docs/configuration/filters/gym-filters.rst b/docs/configuration/filters/gym-filters.rst new file mode 100644 index 000000000..0f32de48f --- /dev/null +++ b/docs/configuration/filters/gym-filters.rst @@ -0,0 +1,70 @@ +Gyms +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + +Prerequisites +------------------------------------- + +This page assumes: + ++ You have a working scanner. ++ You understand + `JSON formatting `_. ++ You are using the latest version of PokeAlarm. ++ You have read and understood the :doc:`index` page. + +Introduction +------------------------------------- + +The ``"gyms"`` section has four distinct settings. + ++----------------------+-----------------------------------------------------------+ +| Setting Name | Description | ++======================+===========================================================+ +| enabled | Process Gym Events only if ``true`` | ++----------------------+-----------------------------------------------------------+ +| ignore_neutral | If ``true``, ignore uncontested gyms | ++----------------------+-----------------------------------------------------------+ +| defaults | Section for the default settings | ++----------------------+-----------------------------------------------------------+ +| filters | See below parameters | ++----------------------+-----------------------------------------------------------+ + + +Available DTS +------------------------------------- + +General +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +================== ================================================ ================================ +Parameter Description Example +================== ================================================ ================================ +old_teams List of allowed previous teams, by id or name. ``["Instinct","Mystic"]`` +new_teams List of allowed new teams, by id or name. ``["Valor","Mystic"]`` +gym_name_contains List of regex's required to be in the gym name. ``["Sponsored","West\\sOak"]`` +gym_name_excludes List of regex's rejected to be in the gym name. ``["Sponsored","West\\sOak"]`` +min_slots Minimum number of guard slots available. ``2`` +max_slots Maximum number of guard slots available. ``6`` +================== ================================================ ================================ + + +Miscellaneous +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +=============== ====================================================== ============================== +Parameter Description Example +=============== ====================================================== ============================== +min_dist Min distance of event from set location in miles ``0.0`` * + or meters (depending on settings). +max_dist Max distance of event from set location in miles ``1000.0`` * + or meters (depending on settings). +geofences See :ref:`geofences_filters` page on 'Geofences' ``["geofence1","geofence2"]`` +custom_dts See :ref:`custom_dts_filters` page on 'Custom DTS' ``{"dts1":"substitution"}`` +is_missing_info See :ref:`missing_info_filters` page on 'Missing Info' ``true`` or ``false`` +=============== ====================================================== ============================== + ++ Floats can use ``"inf"`` to represent infinity diff --git a/docs/configuration/filters/index.rst b/docs/configuration/filters/index.rst index 7d3bcaa57..bc967a0a6 100644 --- a/docs/configuration/filters/index.rst +++ b/docs/configuration/filters/index.rst @@ -12,46 +12,41 @@ Prerequisites This pages assumes the following: + You understand how :doc:`../events/index` work. -+ You understand - `JSON formatting `_. ++ You understand `JSON formatting `_. + You are using the latest version of PokeAlarm. - Introduction ------------------------------------- -A **Filter** object is what PA uses to decide if it is worth of a notification -or not. When PA receives a new Event, it is compared one by one against the -Filters. When PA finds a matching Filter, it triggers a notification. +A **Filter** is what PA uses to decide if it is worth of a notification or not. +When PA receives a new Event, it is compared one by one against the Filters. +When PA finds a matching Filter, it triggers a notification. .. note:: By default, PA processes Filters in the order they are listed in the filters file and only triggers on the first match. You can override - this behavior by using the advanced :doc:`../Rules-Overview` feature. + this behavior by using the advanced :doc:`../rules-overview` feature. There are 5 different types of Filters, each matching a category of Events: -.. toctree:: - :maxdepth: 1 - - Monster-Filters - Stop-Filters - Gym-Filters - Egg-Filters - Raid-Filters ++ :doc:`monster-filters` ++ :doc:`stop-filters` ++ :doc:`gym-filters` ++ :doc:`egg-filters` ++ :doc:`raid-filters` -Creating a Filter +Restrictions ------------------------------------- A Filter is represented as a *named* JSON Object containing several key-value pairs called *restrictions*. Each restriction represents a limit on which Events are allowed to pass. Restrictions are *explicit* (they must be listed to be -checked) and *conjunctive* (all restrictions must be passed to match) A Filter +checked) and *associative* (all restrictions must be passed to match) A Filter with no restrictions would allow any Event to pass: .. code-block:: json - "all-filter-name": { + "all-filter-name":{ } .. note:: Filters will *only* check an Event's value if a restriction requires @@ -64,16 +59,16 @@ following would only allow Monsters of certain species: .. code-block:: json - "only-starters": { - "monsters": [ "Charmander", "Squirtle", "Bulbasaur"] + "only-starters":{ + "monsters":["Charmander","Squirtle","Bulbasaur"] } Additional restrictions are added in the same way: .. code-block:: json - "only-high-iv-lvl-starters": { - "monsters": [ "Charmander", "Squirtle", "Bulbasaur"], + "only-high-iv-lvl-starters":{ + "monsters":["Charmander","Squirtle","Bulbasaur"], "min_iv": 90.0, "min_lvl": 15 } @@ -81,16 +76,17 @@ Additional restrictions are added in the same way: Each type of Filter has different restrictions, so make sure to check each page carefully. - Filters File ------------------------------------- -A *filters file* (sometimes referred to as a 'filters.json') is a file -containing then Filters that PA uses. By default, PA loads from the -`filters.json` located in the base folder of the project. See the -:doc:`../Server-Settings` page for instructions on specifying the file by a -different name. This file must contain a single JSON object to load -successfully: +.. note:: + + A *filters file* (often refereed to as ``filters.json``) is a file containing + then Filters that PA uses. By default, PA loads the Filter from the + ``filters.json`` located in the base folder of the project. See the + :doc:`../server-settings` page for instructions on specifying the file by + a different name. This file must contain a single JSON object to load + successfully: .. code-block:: json @@ -105,15 +101,15 @@ by default. .. code-block:: json { - "monsters": { + "monsters":{ }, - "stops": { + "stops":{ }, - "gyms": { + "gyms":{ }, - "eggs": { + "eggs":{ }, - "raids": { + "raids":{ } } @@ -128,7 +124,7 @@ example, adding ``"min_iv": 90`` in the monsters defaults section will add that restriction to all Filters - unless they already have a ``min_iv`` restriction. .. note:: You can use ``null`` to ignore a default value. Even with a default - ``"monsters"`` restriction set, ``"monsters": null`` inside a filter + ``"monsters"`` restriction set, ``"monsters":null`` inside a filter acts as if that the monster restriction is not set. The ``filters`` section is simply a JSON object containing the Filters, @@ -136,21 +132,21 @@ configured as described above. Here is an example of just the monsters section: .. code-block:: json - "monsters": { - "enabled": true, - "defaults": {}, - "filters": { - "filter_by_monsters_example": { - "monsters": ["Bulbasaur", "Charmander", 7] + "monsters":{ + "enabled":true, + "defaults":{}, + "filters":{ + "filter_by_monsters_example":{ + "monsters":["Bulbasaur","Charmander",7] }, - "filter_by_ivs_example": { + "filter_by_ivs_example":{ "min_atk": 0, "max_atk": 15, "min_iv": 0.0, "max_iv": 100 }, - "filter_by_moves_example": { - "monsters": ["Bulbasaur"], - "quick_moves": ["Vine Whip", "Tackle"], - "charge_moves": ["Sludge Bomb", "Seed Bomb"] + "filter_by_moves_example":{ + "monsters":["Bulbasaur"], + "quick_moves":["Vine Whip","Tackle"], + "charge_moves":["Sludge Bomb","Seed Bomb"] } } } @@ -159,24 +155,64 @@ configured as described above. Here is an example of just the monsters section: Advanced ------------------------------------- +.. _missing_info_filters: + Missing Information ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ As described on the :doc:`../events/index` page, sometimes an Event is missing information. Erring on the side of caution, a Filter will skip a restriction if the information needed to check it is missing. If your use the ``min_iv`` info, -but the IV is 'unknown' for any reason, then by default Filter will skip +but the IV is ``unknown`` for any reason, then by default Filter will skip checking a restriction as if it wasn't specified. The ``is_missing_info`` restriction can be used to require information to be -missing or not. When ``"is_missing_info": false`` is set, the Filter requires -all *checked* values to be known. When ``"is_missing_info": true`` is set, the +missing or not. When ``"is_missing_info":false`` is set, the Filter requires +all *checked* values to be known. When ``"is_missing_info":true`` is set, the Filter does the opposite - at least one *checked* value must be unknown to pass. .. warning:: The ``is_missing_info`` restriction only affects *checked* information. Filters only check information if a restriction - requires it. For example, IV is only checked if either ``min_iv`` or - ``max_iv`` is set. The same is true for other values. + requires it. For example, IV is only checked if either ``min_iv`` + or ``max_iv`` is set. The same is true for other values. + +.. _geofences_filters: + +Geofences +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +For more information on configuring your ``geofence.txt``, see the :doc:`../geofences` page. + +You can require an Event to be inside specific geofences for a Filter. + +This example will check if an event is inside either ``"fence1"`` or ``"fence2"`` +as defined in: + +.. code-block:: json + + "filter_name_1":{ + "geofences":["fence1","fence2"] + } + + +Geofences are checked in order. The first geofence with the event inside +will be used to define the ```` DTS. + +If no geofences are set, the ```` DTS will always return ``unknown``. + +If a geofence with the set name does not exist, it will be skipped and an +error will print out to the console. + +Another example would be to configure alerts inside all of your geofences. You +just have to configure the geofences like this: + +.. code-block:: json + + "filter_name_1":{ + "geofences":["all"] + } + +.. _custom_dts_filters: Custom DTS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -192,13 +228,13 @@ following configuration: .. code-block:: json - "filters": { - "filter_name_1": { - "monsters": [ 1, 2, 3 ], - "custom_dts": { "family": "Grass starters" } + "filters":{ + "filter_name_1":{ + "monsters":[1,2,3], + "custom_dts":{"family":"Grass starters"} }, - "filter_name_2": { - "monsters": [ 4, 5, 6 ], - "custom_dts": { "family": "Fire starters" } + "filter_name_2":{ + "monsters":[4,5,6], + "custom_dts":{"family":"Fire starters"} } } diff --git a/docs/configuration/filters/monster-filters.rst b/docs/configuration/filters/monster-filters.rst new file mode 100644 index 000000000..6fa34e258 --- /dev/null +++ b/docs/configuration/filters/monster-filters.rst @@ -0,0 +1,104 @@ +Monsters +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + +Prerequisites +------------------------------------- + +This page assumes: + ++ You have a working scanner. ++ You understand + `JSON formatting `_. ++ You are using the latest version of PokeAlarm. ++ You have read and understood the :doc:`index` page. + +Introduction +------------------------------------- + +The ``"monsters"`` section has three distinct settings. + ++----------------------+-----------------------------------------------------------+ +| Setting Name | Description | ++======================+===========================================================+ +| enabled | Process Monster Events only if ``true`` | ++----------------------+-----------------------------------------------------------+ +| defaults | Section for the default settings | ++----------------------+-----------------------------------------------------------+ +| filters | See below parameters | ++----------------------+-----------------------------------------------------------+ + + +Available DTS +------------------------------------- + +General +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +============== ================================================== ================================ +Parameter Description Example +============== ================================================== ================================ +monsters Array of allowed monsters, by id or name. ``["Bulbasaur","2",3]`` +form_ids Array of allowed form ids for a monster. ``[0,"1"]`` +genders Array of acceptable genders. Options: `"male", ``["female"]`` + "female", "neutral"` +============== ================================================== ================================ + + +Encounter Information +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. note:: + + Encounter information may require special settings or accounts for your + scanner to work correctly. Please consult the documentation for your + scanner. + +============== ================================================== ================================ +Parameter Description Example +============== ================================================== ================================ +min_lvl Minimum level of the monster. ``0`` +max_lvl Maximum level of the monster. ``40`` +min_atk Minimum attack IV of the monster. ``0`` +max_atk Maximum attack IV of the monster. ``15`` +min_def Minimum defense IV of the monster. ``0`` +max_def Maximum defense IV of the monster. ``15`` +min_sta Minimum stamina IV of the monster. ``0`` +max_sta Maximum stamina IV of the monster. ``15`` +min_iv Minimum total IV percentage of the monster. ``0.0`` * +max_iv Maximum total IV percentage of the monster. ``100.0`` * +min_cp Minimum CP of the monster. ``0`` +max_cp Maximum CP of the monster. ``10000`` +quick_moves Accepted quick moves, by id or name. ``["Vine Whip","Tackle"]`` +charge_moves Accepted charge moves, by id or name. ``["Sludge Bomb","Seed Bomb"]`` +min_height Minimum height of the monster. ``0.0`` * +max_height Maximum height of the monster. ``250.0`` * +min_weight Minimum weight of the monster. ``0.0`` * +max_weight Maximum weight of the monster. ``250.0`` * +sizes Array of acceptable sizes. Options: `"tiny", ``["tiny","big"]`` + "small", "normal", "large", "big"` +============== ================================================== ================================ + + +Miscellaneous +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +=============== ====================================================== ============================== +Parameter Description Example +=============== ====================================================== ============================== +min_dist Min distance of event from set location in miles ``0.0`` * + or meters (depending on settings). +max_dist Max distance of event from set location in miles ``1000.0`` * + or meters (depending on settings). +min_time_left Minimum time (in seconds) until monster despawns. ``1000`` +max_time_left Maximum time (in seconds) until monster despawns. ``2400`` +weather Accepted weathers, by id or name. ``["Clear",2]`` +geofences See :ref:`geofences_filters` page on 'Geofences' ``["geofence1","geofence2"]`` +custom_dts See :ref:`custom_dts_filters` page on 'Custom DTS' ``{"dts1":"substitution"}`` +is_missing_info See :ref:`missing_info_filters` page on 'Missing Info' ``true`` or ``false`` +=============== ====================================================== ============================== + ++ Floats can use ``"inf"`` to represent infinity diff --git a/docs/configuration/filters/raid-filters.rst b/docs/configuration/filters/raid-filters.rst new file mode 100644 index 000000000..1fe45afdb --- /dev/null +++ b/docs/configuration/filters/raid-filters.rst @@ -0,0 +1,75 @@ +Raids +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + +Prerequisites +------------------------------------- + +This page assumes: + ++ You have a working scanner. ++ You understand + `JSON formatting `_. ++ You are using the latest version of PokeAlarm. ++ You have read and understood the :doc:`index` page. + +Introduction +------------------------------------- + +The ``"raids"`` section has three distinct settings. + ++----------------------+-----------------------------------------------------------+ +| Setting Name | Description | ++======================+===========================================================+ +| enabled | Process Raid Events only if ``true`` | ++----------------------+-----------------------------------------------------------+ +| defaults | Section for the default settings | ++----------------------+-----------------------------------------------------------+ +| filters | See below parameters | ++----------------------+-----------------------------------------------------------+ + + +Available DTS +------------------------------------- + +General +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +================= ================================================ =============================== +Parameter Description Example +================= ================================================ =============================== +monsters Array of allowed monsters, by id or name. ``["Raikou","244",245]`` +min_raid_lvl Minimum level of the raid. ``0`` +max_raid_lvl Maximum level of the raid. ``5`` +min_cp Minimum CP of the monster. ``0`` +max_cp Maximum CP of the monster. ``100000`` +quick_moves Accepted quick moves, by id or name. ``["Vine Whip","Tackle"]`` +charge_moves Accepted charge moves, by id or name. ``["Sludge Bomb","Seed Bomb"]`` +current_teams List of allowed current teams, by id or name. ``["Instinct","Mystic"]`` +gym_name_contains List of regex's required to be in the gym name. ``["Sponsored","West\\sOak"]`` +gym_name_excludes List of regex's rejected to be in the gym name. ``["Sponsored","West\\sOak"]`` +================= ================================================ =============================== + + +Miscellaneous +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +=============== ====================================================== ============================== +Parameter Description Example +=============== ====================================================== ============================== +min_dist Min distance of event from set location in miles ``0.0`` * + or meters (depending on settings). +max_dist Max distance of event from set location in miles ``1000.0`` * + or meters (depending on settings). +min_time_left Minimum time (in seconds) until monster despawns. ``1000`` +max_time_left Maximum time (in seconds) until monster despawns. ``2400`` +weather Accepted weathers, by id or name. ``["Clear",2]`` +geofences See :ref:`geofences_filters` page on 'Geofences' ``["geofence1","geofence2"]`` +custom_dts See :ref:`custom_dts_filters` page on 'Custom DTS' ``{"dts1":"substitution"}`` +is_missing_info See :ref:`missing_info_filters` page on 'Missing Info' ``true`` or ``false`` +=============== ====================================================== ============================== + ++ Floats can use ``"inf"`` to represent infinity diff --git a/docs/configuration/filters/stop-filters.rst b/docs/configuration/filters/stop-filters.rst new file mode 100644 index 000000000..e383b961f --- /dev/null +++ b/docs/configuration/filters/stop-filters.rst @@ -0,0 +1,55 @@ +Stops +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + +Prerequisites +------------------------------------- + +This page assumes: + ++ You have a working scanner. ++ You understand + `JSON formatting `_. ++ You are using the latest version of PokeAlarm. ++ You have read and understood the :doc:`index` page. + +Introduction +------------------------------------- + +The ``"stops"`` section has three distinct settings. + ++----------------------+-----------------------------------------------------------+ +| Setting Name | Description | ++======================+===========================================================+ +| enabled | Process Stop Events only if ``true`` | ++----------------------+-----------------------------------------------------------+ +| defaults | Section for the default settings | ++----------------------+-----------------------------------------------------------+ +| filters | See below parameters | ++----------------------+-----------------------------------------------------------+ + + +Available DTS +------------------------------------- + +Miscellaneous +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +=============== ====================================================== ============================== +Parameter Description Example +=============== ====================================================== ============================== +min_dist Min distance of event from set location in miles ``0.0`` * + or meters (depending on settings). +max_dist Max distance of event from set location in miles ``1000.0`` * + or meters (depending on settings). +min_time_left Minimum time (in seconds) until monster despawns. ``1000`` +max_time_left Maximum time (in seconds) until monster despawns. ``2400`` +geofences See :ref:`geofences_filters` page on 'Geofences' ``["geofence1","geofence2"]`` +custom_dts See :ref:`custom_dts_filters` page on 'Custom DTS' ``{"dts1":"substitution"}`` +is_missing_info See :ref:`missing_info_filters` page on 'Missing Info' ``true`` or ``false`` +=============== ====================================================== ============================== + ++ Floats can use ``"inf"`` to represent infinity From 277e7db7fcb76bc95d5a2d882ba5f159400eb9f5 Mon Sep 17 00:00:00 2001 From: MARTINI1 Date: Fri, 2 Mar 2018 17:05:10 +0100 Subject: [PATCH 51/79] RTD - Update Events (#631) --- docs/configuration/events/Egg-DTS.md | 49 ------ docs/configuration/events/Gym-DTS.md | 43 ----- docs/configuration/events/Raid-DTS.md | 76 --------- docs/configuration/events/Stop-DTS.md | 32 ---- docs/configuration/events/egg-events.rst | 97 +++++++++++ docs/configuration/events/gym-events.rst | 75 +++++++++ docs/configuration/events/index.rst | 90 ++++++++-- docs/configuration/events/monster-events.rst | 87 +++++----- docs/configuration/events/raid-events.rst | 165 +++++++++++++++++++ docs/configuration/events/stop-events.rst | 71 ++++++++ 10 files changed, 523 insertions(+), 262 deletions(-) delete mode 100644 docs/configuration/events/Egg-DTS.md delete mode 100644 docs/configuration/events/Gym-DTS.md delete mode 100644 docs/configuration/events/Raid-DTS.md delete mode 100644 docs/configuration/events/Stop-DTS.md create mode 100644 docs/configuration/events/egg-events.rst create mode 100644 docs/configuration/events/gym-events.rst create mode 100644 docs/configuration/events/raid-events.rst create mode 100644 docs/configuration/events/stop-events.rst diff --git a/docs/configuration/events/Egg-DTS.md b/docs/configuration/events/Egg-DTS.md deleted file mode 100644 index f2463ee11..000000000 --- a/docs/configuration/events/Egg-DTS.md +++ /dev/null @@ -1,49 +0,0 @@ -# Eggs - -## Overview - -* [Prerequisites](#prerequisites) -* [Available DTS](#available-dts) - -## Prerequisites - -This page assumes: - -1. You have a working scanner. -2. You read and understood the [DTS](Dynamic-Text-Substitution) page. -3. You are using the latest version of PokeAlarm. - -## Available DTS - -| DTS | Description | -|----------------- |-------------------------------------------------------- | -| gym_id | The gym id. Unique per gym. | -| egg_lvl | The tier level of the egg. | -| hatch_time_left | Time remaining until the egg hatches. | -| 12h_hatch_time | Time when the egg will hatch, formatted in 12h. | -| 24h_hatch_time | Time when the egg will hatch, formatted in 24h. | -| raid_time_left | Time remaining until the raid ends. | -| 12h_raid_end | Time when the raid ends, formatted in 12h. | -| 24h_raid_end | Time when the raid ends, formatted in 24h. | -| lat | Latitude of the raid. | -| lng | Longitude of the raid. | -| lat_5 | Latitude of the raid, truncated to 5 decimal places. | -| lng_5 | Longitude of the raid, truncated to 5 decimal places. | -| distance | Distance of the raid from the set location. | -| direction | Cardinal direction of the raid, from the set location. | -| gmaps | Google Maps link to the location of the raid. | -| applemaps | Apple Maps link to the location of the raid. | -| geofence | Geofence around the event. See 'Geofences' section from [filters](Filters-Overview#geofence) page.| -| weather_id | Weather ID of the egg. | -| weather | Weather name of the egg. | -| weather_or_empty | Weather name of the egg, or empty string if unknown. | -| weather_emoji | Weather emoji of the egg, or empty string if unknown. | -| gym_name | * The name of the gym. | -| gym_description | * The description of the gym. | -| gym_image | * The url to the image of the gym. | -| team_id | The id of the team currently in control of the gym. | -| team_name | The team currently in control of the gym. | -| team_leader | The leader of the team currently in control of the gym. | - -\* Gym Info requires caching. See the -[Object Caching](Object-Caching) page for more information. diff --git a/docs/configuration/events/Gym-DTS.md b/docs/configuration/events/Gym-DTS.md deleted file mode 100644 index 7bbdc4d4c..000000000 --- a/docs/configuration/events/Gym-DTS.md +++ /dev/null @@ -1,43 +0,0 @@ -# Gyms - -## Overview - -* [Prerequisites](#prerequisites) -* [Available DTS](#available-dts) - -## Prerequisites - -This page assumes: - -1. You have a working scanner. -2. You read and understood the [DTS](Dynamic-Text-Substitution) page. -3. You are using the latest version of PokeAlarm. - -## Available DTS - -| DTS | Description | -|---------------- |--------------------------------------------------------- | -| gym_id | The gym id. Unique per gym. | -| lat | Latitude of the gym. | -| lng | Longitude of the gym. | -| lat_5 | Latitude of the gym, truncated to 5 decimal places. | -| lng_5 | Longitude of the gym, truncated to 5 decimal places. | -| distance | Distance of the gym from the set location. | -| direction | Cardinal direction of the gym, from the set location. | -| gmaps | Google Maps link to the location of the gym. | -| applemaps | Apple Maps link to the location of the gym. | -| geofence | Geofence around the event. See 'Geofences' section from [filters](Filters-Overview#geofence) page.| -| old_team | The team in control of the gym previously. | -| old_team_id | The id of the team in control of the gym previously. | -| old_team_leader | The leader of the team in control of the gym previously. | -| new_team | The team currently in control of the gym. | -| new_team_id | The id of the team currently in control of the gym. | -| new_team_leader | The leader of the team currently in control of the gym. | -| gym_name | * The name of the gym. | -| gym_description | * The description of the gym. | -| gym_image | * The url to the image of the gym. | -| slots_available | Number of open guard slots available in a gym. | -| guard_count | number of guards assigned to a gym. | - -\* Gym Info require caching. See the -[Object Caching](Object-Caching) page for more information. diff --git a/docs/configuration/events/Raid-DTS.md b/docs/configuration/events/Raid-DTS.md deleted file mode 100644 index 14e6463fe..000000000 --- a/docs/configuration/events/Raid-DTS.md +++ /dev/null @@ -1,76 +0,0 @@ -# Raids - -## Overview - -* [Prerequisites](#prerequisites) -* [Available DTS](#available-dts) - -## Prerequisites - -This page assumes: - -1. You have a working scanner. -2. You read and understood the [DTS](Dynamic-Text-Substitution) page. -3. You are using the latest version of PokeAlarm. - -## Available DTS - -| DTS | Description | -|----------------- |-------------------------------------------------------- | -| gym_id | The gym id. Unique per gym. | -| raid_lvl | The tier level of the raid. | -| raid_time_left | Time remaining until the raid ends. | -| 12h_raid_end | Time when the raid ends, formatted in 12h. | -| 24h_raid_end | Time when the raid ends, formatted in 24h. | -| type1 | Name of the monster's primary type. | -| type1_or_empty | Name of the monster's primary type, or empty string if unknown. | -| type1_emoji | Emoji for the monster's primary type, or empty string if unknown. | -| type2 | Name of the monster's secondary type. | -| type2_or_empty | Name of the monster's secondary type, or empty string if unknown. | -| type2_emoji | Emoji for the monster's secondary type, or empty string if unknown. | -| types | Monster's type formatted as "type1/type2". | -| types_emoji | Type emojis for the monster as "type1+type2", or empty string if unknown. | -| lat | Latitude of the raid. | -| lng | Longitude of the raid. | -| lat_5 | Latitude of the raid, truncated to 5 decimal places. | -| lng_5 | Longitude of the raid, truncated to 5 decimal places. | -| distance | Distance of the raid from the set location. | -| direction | Cardinal direction of the raid, from the set location. | -| gmaps | Google Maps link to the location of the raid. | -| applemaps | Apple Maps link to the location of the raid. | -| geofence | Geofence around the event. See 'Geofences' section from [filters](Filters-Overview#geofence) page.| -| weather_id | Weather ID of the raid. | -| weather | Weather name of the raid. | -| weather_or_empty | Weather name of the raid, or empty string if unknown. | -| weather_emoji | Weather emoji of the raid, or empty string if unknown. | -| boosted_weather_id | Return weather ID if monster is boosted. | -| boosted_weather | Return weather name if monster is boosted. | -| boosted_weather_or_empty | Return weather name if monster is boosted, or empty string if unknown. | -| boosted_weather_emoji | Return weather emoji if monster is boosted, or empty string if unknown. | -| boosted_or_empty | Return `boosted` if monster is boosted, or empty string if not. | -| mon_name | The name of the monster's species. | -| mon_id | ID of the monster's species. | -| mon_id_3 | ID of the monster's species, padded to 3 digits. | -| quick_move | Name of the monster's quick move. | -| quick_id | ID of the monster's quick move. | -| quick_damage | Damage of the monster's quick move. | -| quick_dps | DPS of the monster's quick move. | -| quick_duration | Duration of the monster's quick move. | -| quick_energy | Energy generated by the quick move. | -| charge_move | Name of the monster's charge move. | -| charge_id | ID of the monster's charge move. | -| charge_damage | Damage of the monster's charge move. | -| charge_dps | DPS of the monster's charge move. | -| charge_duration | Duration of the monster's charge move. | -| charge_energy | Energy cost by the quick move. | -| min_cp | Minimum potential CP of the monster. | -| max_cp | Maximum potential CP of the monster. | -| gym_name | * The name of the gym. | -| gym_description | * The description of the gym. | -| gym_image | * The url to the image of the gym. | -| team_id | The id of the team currently in control of the gym. | -| team_name | The team currently in control of the gym. | -| team_leader | The leader of the team currently in control of the gym. | - -\* Gym Info requires caching. See the -[Object Caching](Object-Caching) page for more information. diff --git a/docs/configuration/events/Stop-DTS.md b/docs/configuration/events/Stop-DTS.md deleted file mode 100644 index febc1faab..000000000 --- a/docs/configuration/events/Stop-DTS.md +++ /dev/null @@ -1,32 +0,0 @@ -# Stops - -## Overview - -* [Prerequisites](#prerequisites) -* [Available DTS](#available-dts) - -## Prerequisites - -This page assumes: - -1. You have a working scanner. -2. You read and understood the [DTS](Dynamic-Text-Substitution) page. -3. You are using the latest version of PokeAlarm. - -## Available DTS - -| DTS | Description | -|------------- |------------------------------------------------------- | -| stop_id | The stop id. Unique per stop. | -| time_left | Time remaining until the lure expires. | -| 12h_time | Time that the lure will disappear, in a 12h format. | -| 24h_time | Time that the lure will disappear, in a 24h format. | -| lat | Latitude of the stop. | -| lng | Longitude of the stop. | -| lat_5 | Latitude of the stop, truncated to 5 decimal places. | -| lng_5 | Longitude of the stop, truncated to 5 decimal places. | -| distance | Distance of the stop from the set location. | -| direction | Cardinal direction of the stop, from the set location. | -| gmaps | Google Maps link to the location of the stop. | -| applemaps | Apple Maps link to the location of the stop. | -| geofence | Geofence around the event. See 'Geofences' section from [filters](Filters-Overview#geofence) page.| diff --git a/docs/configuration/events/egg-events.rst b/docs/configuration/events/egg-events.rst new file mode 100644 index 000000000..9a47a0f86 --- /dev/null +++ b/docs/configuration/events/egg-events.rst @@ -0,0 +1,97 @@ +Eggs +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + + +Prerequisites +------------------------------------- + +This pages assumes the following: + +1. You have a working scanner. +2. You read and understood the :ref:`events_dts` page. +3. You are using the latest version of PokeAlarm. + +Description +------------------------------------- + +A **Egg Event** represents when a egg event appears in a gym. + + +Available DTS +------------------------------------- + +General +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +================= ======================================================== +DTS Description +================= ======================================================== +gym_id The gym id. Unique per gym. +egg_lvl The tier level of the egg. +gym_name The name of the gym. * +gym_description The description of the gym. * +gym_image The url to the image of the gym. * +team_id The id of the team currently in control of the gym. +team_name The team currently in control of the gym. +team_leader The leader of the team currently in control of the gym. +================= ======================================================== + +.. note:: + + \* Gym Info requires caching. See the :ref:`object-caching` + page for more information. + + +Location +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. warning:: + + Geofences are only evaluated per Filter - ```` will be unknown if + it passes through a Filter without a ``geofences`` restriction applied. + +=================== ========================================================= +DTS Description +=================== ========================================================= +lat Latitude of the egg. +lng Longitude of the egg. +lat_5 Latitude of the egg, truncated to 5 decimal places. +lng_5 Longitude of the egg, truncated to 5 decimal places. +distance Distance of the egg from the set location. +direction Cardinal direction of the egg, from the set location. +gmaps Google Maps link to the location of the egg. +applemaps Apple Maps link to the location of the egg. +geofence Geofence around the event. +=================== ========================================================= + + +Time +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +================= ========================================================= +DTS Description +================= ========================================================= +hatch_time_left Time remaining until the egg hatches. +12h_hatch_time Time when the egg will hatch, formatted in 12h. +24h_hatch_time Time when the egg will hatch, formatted in 24h. +raid_time_left Time remaining until the raid ends. +12h_raid_end Time when the raid ends, formatted in 12h. +24h_raid_end Time when the raid ends, formatted in 24h. +================= ========================================================= + + +Weather +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +================= ========================================================= +DTS Description +================= ========================================================= +weather_id Weather ID of the egg. +weather Weather name of the egg. +weather_or_empty Weather name of the egg, or empty string if unknown. +weather_emoji Weather emoji of the egg, or empty string if unknown. +================= ========================================================= diff --git a/docs/configuration/events/gym-events.rst b/docs/configuration/events/gym-events.rst new file mode 100644 index 000000000..8d0cf875f --- /dev/null +++ b/docs/configuration/events/gym-events.rst @@ -0,0 +1,75 @@ +Gyms +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + + +Prerequisites +------------------------------------- + +This pages assumes the following: + +1. You have a working scanner. +2. You read and understood the :ref:`events_dts` page. +3. You are using the latest version of PokeAlarm. + + +Description +------------------------------------- + +A **Gym Event** represents when a gym has been taken for another team. + + +Available DTS +------------------------------------- + + +General +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +================ ======================================================== +DTS Description +================ ======================================================== +gym_id The gym id. Unique per gym. +old_team The team in control of the gym previously. +old_team_id The id of the team in control of the gym previously. +old_team_leader The leader of the team in control of the gym previously. +new_team The team currently in control of the gym. +new_team_id The id of the team currently in control of the gym. +new_team_leader The leader of the team currently in control of the gym. +gym_name The name of the gym. * +gym_description The description of the gym. * +gym_image The url to the image of the gym. * +slots_available Number of open guard slots available in a gym. +guard_count Number of guards assigned to a gym. +================ ======================================================== + +.. note:: + + \* Gym Info requires caching. See the :ref:`object-caching` + page for more information. + + +Location +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. warning:: + + Geofences are only evaluated per Filter - ```` will be unknown if + it passes through a Filter without a ``geofences`` restriction applied. + +=================== ========================================================= +DTS Description +=================== ========================================================= +lat Latitude of the gym. +lng Longitude of the gym. +lat_5 Latitude of the gym, truncated to 5 decimal places. +lng_5 Longitude of the gym, truncated to 5 decimal places. +distance Distance of the gym from the set location. +direction Cardinal direction of the gym, from the set location. +gmaps Google Maps link to the location of the gym. +applemaps Apple Maps link to the location of the gym. +geofence Geofence around the event. +=================== ========================================================= diff --git a/docs/configuration/events/index.rst b/docs/configuration/events/index.rst index e9b0a8f69..a0ea1ff61 100644 --- a/docs/configuration/events/index.rst +++ b/docs/configuration/events/index.rst @@ -1,8 +1,8 @@ Events -======= +===================================== .. contents:: Table of Contents - :depth: 1 + :depth: 2 :local: Prerequisites @@ -12,32 +12,29 @@ This guide assumes the following: + You are using the latest version of PokeAlarm. - Introduction ------------------------------------- -In PokeAlarm, an **Event** represents something of interest that has happened in -the World. Events can be several different things - a new monster spawning, a -gym changing teams, or a new raid appearing. There are 5 different categories +In PokeAlarm, an **Event** represents something of interest that has happened +in the World. Events can be several different things - a new monster spawning, +a gym changing teams, or a new raid appearing. There are 5 different categories for Events, each with different information: -.. toctree:: - :maxdepth: 1 ++ :doc:`monster-events` ++ :doc:`stop-events` ++ :doc:`gym-events` ++ :doc:`egg-events` ++ :doc:`raid-events` - monster-events - Stop-DTS - Gym-DTS - Egg-DTS - Stop-DTS +.. _events_dts: -.. _events_dts Dynamic Text Substitutions ------------------------------------- Dynamic Text Substitutions (or DTS) are special text that can be used to customize notifications based on the triggered Event. These values are -surrounded with diamond brackets (`<` and `>`) and will by substituted with a -value based on the Event in question. For example, a notification with the +surrounded with diamond brackets (``<`` and ``>``) and will by substituted with +a value based on the Event in question. For example, a notification with the following text: .. code-block:: none @@ -68,7 +65,7 @@ Missing Information :doc:`../filters/index` page for instructions. When PA doesn't have the correct information needed to correctly do a -subsitution, it may replace it with one of the following: +substitution, it may replace it with one of the following: + ? + ??? @@ -76,6 +73,63 @@ subsitution, it may replace it with one of the following: This can happen for a variety of reasons - but generally is because the scanner did not send the information needed in the webhook. PA does it's best to fill in -the gaps by sharing and caching information between seperate webhooks (like gym +the gaps by sharing and caching information between separate webhooks (like gym names or teams), but some info may require a settings update with your scanner (like IVs or CP). + + +Advanced +------------------------------------- + + +Reverse Geocoding +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**Reverse Geocoding** is a process that to get the name or data of +places where the Events take place. This can be used to get things such +as address, city, state, or more. + +PA will only use Reverse Geocoding for Events that have been triggered. +Each Event will use up a single point of your API quota, regardless +of number of fields or alarms used. + +================== ======================================================== +Text Description +================== ======================================================== +```` Street number of the alert location +```` Street name of the alert location +``

`` Address of the alert location, includes both street + number and street name, in that order only +```` Address of the alert location, in european format (street + name and street number) +```` Postal code of the alert location +```` Neighborhood code of the alert location +```` Sublocality code of the alert location +```` City code of the alert location +```` County code of the alert location +```` State code of the alert location +```` Country code of the alert location +================== ======================================================== + + +Distance Matrix +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**Distance Matrix** calculations determine how far away an Event is, for +both time and distance. This can be Walking, Biking, Driving, or Transit. +These calculations require a set location, and a Google Maps API key. For more +information, see the Distance Matrix section of the +:doc:`../../miscellaneous/location-services` page. + +======================= ======================================================== +Text Description +======================= ======================================================== +```` Estimated walking distance to the alert location +```` Estimated walking time to alert location +```` Estimated bike distance to the alert location +```` Estimated bike time to alert location +```` Estimated drive distance to the alert location +```` Estimated drive time to alert location +```` Estimated public transit distance to the alert location +```` Estimated public transit time to alert location +======================= ======================================================== diff --git a/docs/configuration/events/monster-events.rst b/docs/configuration/events/monster-events.rst index a16500448..29d8ebaa2 100644 --- a/docs/configuration/events/monster-events.rst +++ b/docs/configuration/events/monster-events.rst @@ -1,18 +1,17 @@ Monsters -=========== +===================================== .. contents:: Table of Contents :depth: 2 :local: - Prerequisites ------------------------------------- This pages assumes the following: -1. You understand what :doc:`index` are. -2. You understand what :ref:`DTS ` are. +1. You have a working scanner. +2. You read and understood the :ref:`events_dts` page. 3. You are using the latest version of PokeAlarm. @@ -28,9 +27,9 @@ Available DTS General ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -=================== ============================================================ +=================== ========================================================== DTS Description -=================== ============================================================ +=================== ========================================================== mon_name The name of the monster's species. mon_id ID of the monster's species. mon_id_3 ID of the monster's species, padded to 3 digits. @@ -39,19 +38,19 @@ form_or_empty Form name of the monster, or empty string if unknown. form_id Form ID for the monster. form_id_3 Form ID of the monster, padded to 3 digits. type1 Name of the monster's primary type. -type1_or_empty Name of the monster's primary type, or empty string if - unknown. -type1_emoji Emoji for the monster's primary type, or empty string if - unknown. +type1_or_empty Name of the monster's primary type, or empty string + if unknown. +type1_emoji Emoji for the monster's primary type, or empty string + if unknown. type2 Name of the monster's secondary type. -type2_or_empty Name of the monster's secondary type, or empty string if - unknown. -type2_emoji Emoji for the monster's secondary type, or empty string if - unknown. +type2_or_empty Name of the monster's secondary type, or empty string + if unknown. +type2_emoji Emoji for the monster's secondary type, or empty string + if unknown. types Monster's type formatted as "type1/type2". types_emoji Type emojis for the monster as "type1+type2", or empty string if unknown. -=================== ============================================================ +=================== ========================================================== Stats @@ -64,9 +63,9 @@ Stats settings and accounts - see the documentation for your scanner for specifics. -=================== ============================================================ +=================== ========================================================= DTS Description -=================== ============================================================ +=================== ========================================================= mon_lvl Level of the monster. cp Combat Points of the monster. iv Individual Values percentage of the monster. @@ -76,9 +75,9 @@ atk Attack IV of the monster. def Defense IV of the monster. sta Stamina IV of the monster. base_catch Base catch rate of the monster. -great_catch Catch rate of the monster when using a great ball. -ultra_catch Catch rate of the monster when using a super ball. -=================== ============================================================ +great_catch Catch rate of the monster when using a super ball. +ultra_catch Catch rate of the monster when using a ultra ball. +=================== ========================================================= Moves @@ -91,30 +90,30 @@ Moves settings and accounts - see the documentation for your scanner for specifics. -=================== ============================================================ +=================== ========================================================= DTS Description -=================== ============================================================ +=================== ========================================================= quick_move Name of the monster's quick move. quick_id ID of the monster's quick move. +quick_type_id ID of the monster's quick move type. +quick_type Name of the monster's quick move type. +quick_type_emoji Emoji of the monster's quick move type. quick_damage Damage of the monster's quick move. quick_dps DPS of the monster's quick move. quick_duration Duration of the monster's quick move. quick_energy Energy generated by the quick move. -quick_type Type of the monster's quick move. -quick_type_emoji Emoji representing the monster's quick move. -quick_type_id ID of the type of the monster's quick move. charge_move Name of the monster's charge move. charge_id ID of the monster's charge move. +charge_type_id ID of the monster's charge move type. +charge_type Name of the monster's charge move type. +charge_type_emoji Emoji of the monster's charge move type. charge_damage Damage of the monster's charge move. charge_dps DPS of the monster's charge move. charge_duration Duration of the monster's charge move. -charge_energy Energy cost by the quick move. -charge_type Type of the monster's charge move. -charge_type_emoji Emoji representing the monster's charge move. -charge_type_id ID of the type of the monster's charge move. +charge_energy Energy generated by the charge move. atk_grade Offensive grade of the monster's moveset. def_grade Defensive grade of the monster's moveset. -=================== ============================================================ +=================== ========================================================= Cosmetic @@ -136,11 +135,11 @@ costume_id Costume ID of the monster. costume_id_3 Costume ID of the monster, formatted to there digits. gender Gender of the monster, represented as a single character. height Height of the monster. -height_0 Height of the monster, rounded to the nearest integer. -height_2 Height of the monster, rounded to 2 decimal places. +height_0 Height of the monster, rounded to the nearest integer. +height_2 Height of the monster, rounded to 2 decimal places. weight Weight of the monster. -weight_0 Weight of the monster, rounded to the nearest integer. -weight_2 Weight of the monster, rounded to 2 decimal places. +weight_0 Weight of the monster, rounded to the nearest integer. +weight_2 Weight of the monster, rounded to 2 decimal places. size Estimated size of the monster. big_karp Return `big` if Magikarp weight is >=13.13. tiny_rat Return `tiny` if Rattata weight is <=2.41. @@ -152,9 +151,9 @@ Location .. warning:: - Geofences are evaluated on a per Filter basis - ```` will always - be unknown if it passes through a Filter without a ``geofences`` restriction - applied. + Geofences are evaluated on a per Filter basis - ```` will + always be unknown if it passes through a Filter without a ``geofences`` + restriction applied. =================== ============================================================ DTS Description @@ -167,7 +166,7 @@ lat_5 Latitude of the monster, truncated to 5 decimal places. lng_5 Longitude of the monster, truncated to 5 decimal places. gmaps Google Maps link to the location of the monster. applemaps Apple Maps link to the location of the monster. -geofence Geofence the Event is located in. +geofence Geofence around the event. =================== ============================================================ @@ -197,12 +196,12 @@ weather_emoji Weather emoji of the monster, or empty string if unknown. boosted_weather_id Return weather ID if monster is boosted. boosted_weather Return weather name if monster is boosted. -boosted_weather_or_empty Return weather name if monster is boosted, or empty - string if unknown. -boosted_weather_emoji Return weather emoji if monster is boosted, or empty - string if unknown. -boosted_or_empty Return `boosted` if monster is boosted, or empty string if - not. +boosted_weather_or_empty Return weather name if monster is boosted, or + empty string if unknown. +boosted_weather_emoji Return weather emoji if monster is boosted, or + empty string if unknown. +boosted_or_empty Return `boosted` if monster is boosted, or empty + string if not. ======================== ======================================================= diff --git a/docs/configuration/events/raid-events.rst b/docs/configuration/events/raid-events.rst new file mode 100644 index 000000000..aefe07a06 --- /dev/null +++ b/docs/configuration/events/raid-events.rst @@ -0,0 +1,165 @@ +Raids +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + + +Prerequisites +------------------------------------- + +This pages assumes the following: + +1. You have a working scanner. +2. You read and understood the :ref:`events_dts` page. +3. You are using the latest version of PokeAlarm. + + +Description +------------------------------------- + +A **Raid Event** represents when a raid event appears in a gym. + + +Available DTS +------------------------------------- + +General +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +================= ============================================================ +DTS Description +================= ============================================================ +gym_id The gym id. Unique per gym. +mon_name The name of the monster's species. +mon_id ID of the monster's species. +mon_id_3 ID of the monster's species, padded to 3 digits. +raid_lvl The tier level of the raid. +form Form name of the monster. +form_or_empty Form name of the monster, or empty string if unknown. +form_id Form ID for the monster. +form_id_3 Form ID of the monster, padded to 3 digits. +min_cp Minimum potential CP of the monster. +max_cp Maximum potential CP of the monster. +type1 Name of the monster's primary type. +type1_or_empty Name of the monster's primary type, or empty string + if unknown. +type1_emoji Emoji for the monster's primary type, or empty string + if unknown. +type2 Name of the monster's secondary type. +type2_or_empty Name of the monster's secondary type, or empty string + if unknown. +type2_emoji Emoji for the monster's secondary type, or empty string + if unknown. +types Monster's type formatted as "type1/type2". +types_emoji Type emojis for the monster as "type1+type2", or empty + string if unknown. +gym_name The name of the gym. * +gym_description The description of the gym. * +gym_image The url to the image of the gym. * +team_id The id of the team currently in control of the gym. +team_name The team currently in control of the gym. +team_leader The leader of the team currently in control of the gym. +================= ============================================================ + +.. note:: + + \* Gym Info requires caching. See the :ref:`object-caching` + page for more information. + + +Moves +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +================== ========================================================= +DTS Description +================== ========================================================= +quick_move Name of the monster's quick move. +quick_id ID of the monster's quick move. +quick_type_id ID of the monster's quick move type. +quick_type Name of the monster's quick move type. +quick_type_emoji Emoji of the monster's quick move type. +quick_damage Damage of the monster's quick move. +quick_dps DPS of the monster's quick move. +quick_duration Duration of the monster's quick move. +quick_energy Energy generated by the quick move. +charge_move Name of the monster's charge move. +charge_id ID of the monster's charge move. +charge_type_id ID of the monster's charge move type. +charge_type Name of the monster's charge move type. +charge_type_emoji Emoji of the monster's charge move type. +charge_damage Damage of the monster's charge move. +charge_dps DPS of the monster's charge move. +charge_duration Duration of the monster's charge move. +charge_energy Energy generated by the charge move. +================== ========================================================= + + +Cosmetic +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +================== ========================================================= +DTS Description +================== ========================================================= +costume Costume name of the monster. +costume_or_empty Costume name of the monster, or empty string if unknown. +costume_id Costume ID for the monster. +costume_id_3 Costume ID of the monster, padded to 3 digits. +================== ========================================================= + + +Location +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. warning:: + + Geofences are only evaluated per Filter - ```` will be unknown if + it passes through a Filter without a ``geofences`` restriction applied. + +============= ======================================================= +DTS Description +============= ======================================================= +lat Latitude of the raid. +lng Longitude of the raid. +lat_5 Latitude of the raid, truncated to 5 decimal places. +lng_5 Longitude of the raid, truncated to 5 decimal places. +distance Distance of the raid from the set location. +direction Cardinal direction of the raid, from the set location. +gmaps Google Maps link to the location of the raid. +applemaps Apple Maps link to the location of the raid. +geofence Geofence around the event. +============= ======================================================= + + +Time +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +================ =============================================== +DTS Description +================ =============================================== +raid_time_left Time remaining until the raid ends. +12h_raid_end Time when the raid ends, formatted in 12h. +24h_raid_end Time when the raid ends, formatted in 24h. +================ =============================================== + + +Weather +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +======================== ======================================================= +DTS Description +======================== ======================================================= +weather_id Weather ID of the raid. +weather Weather name of the raid. +weather_or_empty Weather name of the raid, or empty string if unknown. +weather_emoji Weather emoji of the raid, or empty string if unknown. +boosted_weather_id Return weather ID if monster is boosted. +boosted_weather Return weather name if monster is boosted. +boosted_weather_or_empty Return weather name if monster is boosted, or empty + string if unknown. +boosted_weather_emoji Return weather emoji if monster is boosted, or empty + string if unknown. +boosted_or_empty Return `boosted` if monster is boosted, or empty + string if not. +======================== ======================================================= diff --git a/docs/configuration/events/stop-events.rst b/docs/configuration/events/stop-events.rst new file mode 100644 index 000000000..efff84da6 --- /dev/null +++ b/docs/configuration/events/stop-events.rst @@ -0,0 +1,71 @@ +Stops +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + + +Prerequisites +------------------------------------- + +This pages assumes the following: + +1. You have a working scanner. +2. You read and understood the :ref:`events_dts` page. +3. You are using the latest version of PokeAlarm. + + +Description +------------------------------------- + +A **Stop Event** represents when a stop is lured. + + +Available DTS +------------------------------------- + + +General +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +============ ============================== +DTS Description +============ ============================== +stop_id The stop id. Unique per stop. +============ ============================== + + +Location +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. warning:: + + Geofences are only evaluated per Filter - ```` will be unknown if + it passes through a Filter without a ``geofences`` restriction applied. + +============ ====================================================== +DTS Description +============ ====================================================== +lat Latitude of the stop. +lng Longitude of the stop. +lat_5 Latitude of the stop, truncated to 5 decimal places. +lng_5 Longitude of the stop, truncated to 5 decimal places. +distance Distance of the stop from the set location. +direction Cardinal direction of the stop, from the set location. +gmaps Google Maps link to the location of the stop. +applemaps Apple Maps link to the location of the stop. +geofence Geofence around the event. +============ ====================================================== + + +Time +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +============ ==================================================== +DTS Description +============ ==================================================== +time_left Time remaining until the lure expires. +12h_time Time that the lure will disappear, in a 12h format. +24h_time Time that the lure will disappear, in a 24h format. +============ ==================================================== From c8e246e8242ed7d20e5c9ef44905b7dbb8015d93 Mon Sep 17 00:00:00 2001 From: MARTINI1 Date: Fri, 2 Mar 2018 17:06:55 +0100 Subject: [PATCH 52/79] RTD - Update Alarms (#633) --- docs/configuration/alarms/Discord.md | 239 -------------- docs/configuration/alarms/Facebook-Pages.md | 279 ---------------- docs/configuration/alarms/Pushbullet.md | 137 -------- docs/configuration/alarms/Slack.md | 227 ------------- docs/configuration/alarms/Telegram.md | 194 ------------ docs/configuration/alarms/Twilio.md | 175 ----------- docs/configuration/alarms/Twitter.md | 148 --------- docs/configuration/alarms/discord.rst | 269 ++++++++++++++++ docs/configuration/alarms/facebook-pages.rst | 315 +++++++++++++++++++ docs/configuration/alarms/index.rst | 110 +++---- docs/configuration/alarms/pushbullet.rst | 157 +++++++++ docs/configuration/alarms/slack.rst | 258 +++++++++++++++ docs/configuration/alarms/telegram.rst | 228 ++++++++++++++ docs/configuration/alarms/twilio.rst | 221 +++++++++++++ docs/configuration/alarms/twitter.rst | 173 ++++++++++ 15 files changed, 1678 insertions(+), 1452 deletions(-) delete mode 100644 docs/configuration/alarms/Discord.md delete mode 100644 docs/configuration/alarms/Facebook-Pages.md delete mode 100644 docs/configuration/alarms/Pushbullet.md delete mode 100644 docs/configuration/alarms/Slack.md delete mode 100644 docs/configuration/alarms/Telegram.md delete mode 100644 docs/configuration/alarms/Twilio.md delete mode 100644 docs/configuration/alarms/Twitter.md create mode 100644 docs/configuration/alarms/discord.rst create mode 100644 docs/configuration/alarms/facebook-pages.rst create mode 100644 docs/configuration/alarms/pushbullet.rst create mode 100644 docs/configuration/alarms/slack.rst create mode 100644 docs/configuration/alarms/telegram.rst create mode 100644 docs/configuration/alarms/twilio.rst create mode 100644 docs/configuration/alarms/twitter.rst diff --git a/docs/configuration/alarms/Discord.md b/docs/configuration/alarms/Discord.md deleted file mode 100644 index a367f6e21..000000000 --- a/docs/configuration/alarms/Discord.md +++ /dev/null @@ -1,239 +0,0 @@ -# Discord - -## Overview - -* [Prerequisites](#prerequisites) -* [Introduction](#introduction) -* [Basic Config](#basic-config) - * [Required Parameters](#required-parameters) - * [Example: Basic Alarm Configuration using Required Parameters](#example-basic-alarm-configuration-using-required-parameters) -* [Advanced Config](#advanced-config) - * [Optional Parameters](#optional-parameters) - * [Example: Alarm Configuration Using Optional Parameters](#example-alarm-configuration-using-optional-parameters) - * [Mini Map Configuration](#mini-map-configuration) - * [Formatting alarms text](#formatting-alarms-text) -* [How to Enable Discord Webhooks](#how-to-enable-discord-webhooks) - -## Prerequisites - -This guide assumes - -1. You are familiar with [JSON formatting](https://www.w3schools.com/js/js_json_intro.asp) -2. You have read and understood the [Alarms](alarms) Wiki -3. You are comfortable with the layout of `alarms.json`. -4. You are using the latest version of PokeAlarm. - -Please familiarize yourself with all of the above before proceeding. - -## Introduction - -**Discord** is a free voice and text chat app designed specifically for gaming. -Available on Windows, Mac OS X, iOS and Android. It is also usable from any -Chrome, Firefox or Opera browser. - -PokeAlarm offers the following for Discord: - -* Custom username for posting -* High resolution icons for pokemon, gym, pokestop, egg or raid notifications -* Personalized notifications via [Dynamic Text Substitution](Dynamic-Text-Substitution) - -## Basic Config - -### Required Parameters - -The parameters below are required to enable the Discord alarm service: - - -| Parameters | Description | -|----------------|-----------------------------------------| -| `type` | Must be `discord` | -| `active` | `true` for alarm to be active | -| `webhook_url`* | Your Webhook URL for a specific channel | - - -**Note:** *In PokeAlarm version 3.1, `webhook_url` replaced `api_key`.* - -### Example: Basic Alarm Configuration using Required Parameters - -**Note:** The above below is to be inserted into the alarms section of -`alarms.json`. It does not represent the entire `alarms.json` file. - -```json -{ - "active":true, - "type":"discord", - "webhook_url":"YOUR_WEBHOOK_URL" -} -``` - -## Advanced Config - -### Optional Parameters - -In addition to the required parameters, several optional parameters are -available to personalize your notifications. Below is an example of these -optional parameters and how they are incorporated into a functional alarm layout. - -These optional parameters are entered at the same level as `"type":"discord"`. - - -| Parameters | Description | -|--------------------|----------------------------------------------| -| `startup_message` | Confirmation post when PokeAlarm initialized | - - -These optional parameters below are applicable to the `monsters`, `stops`, -`gyms`, `eggs`, and `raids` sections of the JSON file. - - -| Parameters | Description | Default | -|------------------|----------------------------------------------|-----------------------------------| -| `webhook_url` | URL of specific channel name. Overrides `webhook_url` at Alarm level. Use to post only -| `disable_embed` | Disables the body to make one line notifications | `False` | -| `username` | Username the bot should post the message as | `` | -| `icon_url` | URL path to icon | | -| `avatar_url` | URL path to avatar | | -| `title` | Notification text to begin the message | `A wild has appeared!` | -| `url` | Link to be added to notification text | `` | -| `body` | Additional text to be added to the message | `Available until <24h_time> ().` | -| `content` | Text before the Discord embed | | - - -*Note: Nidorans will be `nidoranf` or `nidoranm`, Farfetch'd will be -`farfetchd`, and Mr. Mime will be `mrmime`.* - -## Example: Alarm Configuration Using Optional Parameters - -**Note:** The code below is to be inserted into the alarms section of -`alarms.json`. It does not represent the entire `alarms.json` file. - -```json -{ - "discord_alarm":{ - "active":true, - "type":"discord", - "webhook_url":"YOUR_WEBHOOK_URL", - "startup_message":false, - "monsters":{ - "webhook_url":"YOUR_WEBHOOK_URL_FOR_POKEMON_CHANNEL", - "username":"", - "icon_url*":"/_.png", - "title":"A wild has appeared!", - "url":"", - "body":"Available until <24h_time> ()." - }, - "stops":{ - "webhook_url":"YOUR_WEBHOOK_URL_FOR_POKESTOP_CHANNEL", - "username":"Pokestop", - "icon_url*":"/ready.png", - "title":"Someone has placed a lure on a Pokestop!", - "url":"", - "body":"Lure will expire at <24h_time> ()." - }, - "gyms":{ - "webhook_url":"YOUR_WEBHOOK_URL_FOR_GYM_CHANNEL", - "username":" Gym Alerts", - "icon_url*":"/.png", - "title":"A Team gym has fallen!", - "url":"", - "body":"It is now controlled by ." - }, - "eggs":{ - "webhook_url":"DISCORD_WEBHOOK_URL_FOR_EGG_CHANNEL", - "username":"Egg", - "icon_url*":"/.png", - "avatar_url*":"/.png", - "title":"Raid is incoming!", - "url":"", - "body":"A level raid will hatch at <24h_hatch_time> ()." - }, - "raids":{ - "webhook_url":"DISCORD_WEBHOOK_URL_FOR_RAID_CHANNEL", - "username":"Raid", - "icon_url*":"/_000.png", - "avatar_url*":"/_000.png", - "title":"Level Raid is available against !", - "url":"", - "body":"The raid is available until <24h_raid_end> ()." - } - } -} -``` -**Note:** \*THESE LINES ARE USED TO OVERRIDE DEFAULT VALUES. IF YOU DO NOT WISH -TO USE CUSTOM IMAGES, DO NOT ADD THESE LINES TO YOUR ALARMS.JSON. - -### Mini Map Configuration - -![](images/minimap.png) - -You can enable a small Google Static Maps image after your post, showing the -location of the alarmed pokemon, gym, pokestop, egg, or raid. This is done by -adding the `map` parameter at the Alarm level (which will apply maps for any -notification), or individually to the `monsters`, `stops`, `gyms`, `eggs`, -or `raids` sections of your alarm. - -Below is an example of enabling the mini map for pokemon. - -```json - "monsters":{ - "webhook_url":"YOUR_WEBHOOK_URL_FOR_POKEMON_CHANNEL", - "username":"", - "title":"A wild has appeared!", - "url":"", - "body":"Available until <24h_time> ().", - "map":{ - "enabled":"true", - "width":"250", - "height":"125", - "maptype":"roadmap", - "zoom":"15" - } - }, -``` - - -| Parameters | Description | Default | -|----------------|---------------------------------------|-------------| -| `enabled` | Turns the map on or off | `true` | -| `width` | Width of the map | `250` px | -| `height` | Height of the map | `150` px | -| `maptype` | Link to be added to notification text | `roadmap` | -| `zoom` | Specifies the zoom of the map | `15` | - - -### Formatting alarms text - -Here is a basic guide to apply custom styles to alarm text: - - -+------------------------------------+----------------------------------+ -| Style | Example | -|====================================+==================================+ -| `*italics*` | *italics* | -+------------------------------------+----------------------------------+ -| `**bold**` | **bold** | -+------------------------------------+----------------------------------+ -| `***bold italics***` | ***bold italics*** | -+------------------------------------+----------------------------------+ -| `__underline__` | __underline__ | -+------------------------------------+----------------------------------+ -| `__*underline italics*__` | __*underline italics*__ | -+------------------------------------+----------------------------------+ -| `__**underline bold**__` | __**underline bold**__ | -+------------------------------------+----------------------------------+ -| `__***underline bold italics***__` | __***underline bold italics***__ | -+------------------------------------+----------------------------------+ -| `~~Strikethrough~~` | ~~Strikethrough~~ | -+------------------------------------+----------------------------------+ - -You can see other options in the official Discord information about formatting text [here](https://support.discordapp.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline-). - -## How to enable Discord webhooks - -1. You must have the role permission 'Manage Webhooks', or be an administrator for the server. - -2. Go into channel settings, into the Webhooks tab. - -3. Click "Create Webhook", 'Save' - -4. The webhook URL listed is the key you need. diff --git a/docs/configuration/alarms/Facebook-Pages.md b/docs/configuration/alarms/Facebook-Pages.md deleted file mode 100644 index 9d4ba7566..000000000 --- a/docs/configuration/alarms/Facebook-Pages.md +++ /dev/null @@ -1,279 +0,0 @@ -# Facebook Pages - -## Overview - -* [Prerequisites](#prerequisites) -* [Introduction](#introduction) -* [Basic Config](#basic-config) - * [Required Parameters](#required-parameters) - * [Example: Basic Alarm Configuration using Required Parameters](#example-basic-alarm-configuration-using-required-parameters) -* [Advanced Config](#advanced-config) - * [Optional Parameters](#optional-parameters) - * [Example: Alarm Configuration Using Optional Parameters](#example-alarm-configuration-using-optional-parameters) -* [How to get a Permanent Facebook Page Access Token](#how-to-get-a-permanent-facebook-page-token) - -## Prerequisites - -This guide assumes - -1. You are familiar with [JSON formatting](https://www.w3schools.com/js/js_json_intro.asp) -2. You have read and understood the [Alarms](alarms) Wiki -3. You are comfortable with the layout of `alarms.json`. - -Please familiarize yourself with all of the above before proceeding. - -## Introduction - -**Facebook Pages** is an online social networking service that enables users to -post status messages to a public profile specifically created for business, -brands, celebrities, causes, and other organizations. Registered users can read -and post messages, but those who are unregistered can only read them. Users -access Facebook through the website interface, SMS or mobile device app. - -PokeAlarm offers the following for Facebook Pages: - -* Personalized notifications via [Dynamic Text Substitution](Dynamic-Text-Substitution) - -## Basic Config - -### Required Parameters - -These `alarms.json` parameters - `active`, `type`, and `page_access_token` - -are required to enable the Facebook Pages alarm service: - -| Parameters | Description | -|--------------------|----------------------------------------| -| type | Must be `facebook_page` | -| active | `true` for alarm to be active | -| page_access_token | Your permanent FB page access token | - -### Example: Basic Alarm Configuration using Required Parameters - -```json -{ - "active":true, - "type":"facebook_page", - "page_access_token":"YOUR_PAGE_ACCESS_TOKEN" -} -``` -**Note:** The above code is to be inserted into the alarms section of -alarms.json. It does not represent the entire alarms.json file. - -## Advanced Config - -### Optional Parameters - -In addition to the 3 required parameters, several optional parameters are -available to personalize your Facebook Pages notifications. Below is an -example of these optional parameters and how they are incorporated into a -functional alarm layout for Facebook Pages. - -These optional parameters are entered at the same level as `"type":"facebook_page"`. - -| Parameters | Description | Default | -|--------------------|-------------------------------------------------|----------| -| `startup_message` | Confirmation post when PokeAlarm initialized | `true` | - -These optional parameters below are applicable to the `monsters`, `stops`, -`gyms`, `eggs`, and `raids` sections of the JSON file. Check Image column to -see where everything appears in the final publication. - -![Facebook Example](images/fb-example.png) - -| Parameters | Description | Image | -|------------------|---------------------------------------------------|-------| -| `message` | Message to post as status message | 1 | -| `link` | Link to be added to notification text | Link | -| `image` | Url of the image to show as a preview (empty for linked page preview) | 2 | -| `name` | Link title (empty for linked page title) | 3 | -| `description` | Link description (empty for blank description) | 4 | -| `caption` | Link domain (empty for linked page domain) | 5 | - -When it says `"empty for X"` it means that you can disable the default -PokeAlarm value setting that parameter to `""` in your `alarms.json` file. -In that case Facebook will use the link information to fill that field in the -publication. - -For example if you have `link` as a google maps link and you disable the -`image` parameter setting it to `""`, it will be a minimap image of that -coordinates. - -`monsters` default values: - -| Parameters | Default | -|------------------|-----------------------------------------------| -| `message` | `A wild has appeared!` | -| `image` | | -| `link` | `` | -| `name` | `` | -| `description` | `Available until <24h_time> ()` | -| `caption` | None | - -`stops` default values: - -| Parameters | Default | -|------------------|------------------------------------------------| -| `message` | `Someone has placed a lure on a Pokestop!` | -| `image` | | -| `link` | `` | -| `name` | `Lured Pokestop` | -| `description` | `Lure will expire at <24h_time> ()` | -| `caption` | None | - -`gyms` default values: - -| Parameters | Default | -|------------------|-----------------------------------------------| -| `message` | `A Team gym has fallen!` | -| `image` | | -| `link` | `` | -| `name` | ` gym fallen` | -| `description` | `It is now controlled by ` | -| `caption` | None | - -`eggs` default values: - -| Parameters | Default | -|------------------|-----------------------------------------------| -| `message` | `A level raid is upcoming!` | -| `image` | | -| `link` | `` | -| `name` | `Egg` | -| `description` | `A level raid will hatch at <24h_hatch_time> ().` | -| `caption` | None | - -`raids` default values: - -| Parameters | Default | -|------------------|-----------------------------------------------| -| `message` | `Level raid available against !` | -| `image` | | -| `link` | `` | -| `name` | `Raid` | -| `description` | `The raid is available until <24h_raid_end> ().` | -| `caption` | None | - -## Example: Alarm Configuration Using Optional Parameters - -```json -{ - "facebook_alarm":{ - "active":true, - "type":"facebook_page", - "page_access_token":"YOUR_PAGE_ACCESS_TOKEN", - "startup_message":false, - "monsters":{ - "message":" available. / (% - //)", - "image*":"/_.png", - "link":"", - "description":"Address:
", - "name":"" - }, - "stops":{ - "message":"Someone has placed a lure on a Pokestop! Lure will expire at <24h_time> ().", - "image*":"/ready.png", - "description":"Address:
", - "link":"", - "name":"" - }, - "gyms":{ - "message":"A Team gym has fallen! It is now controlled by .", - "image*":"/.png", - "link":"", - "name":"", - "description":"Address:
" - }, - "eggs":{ - "message":"A level raid is upcoming!", - "image*":"/.png", - "link":"", - "name":"Egg", - "description":"A level raid will hatch at <24h_hatch_time> ()." - }, - "raids":{ - "message":"Level raid available against !", - "image*":"/_000.png", - "link":"", - "name":"Raid", - "description":"The raid is available until <24h_raid_end> ()." - } - } -} -``` -**Note1:** \*THESE LINES ARE USED TO OVERRIDE DEFAULT VALUES. IF YOU DO NOT WISH -TO USE CUSTOM IMAGES, DO NOT ADD THESE LINES TO YOUR ALARMS.JSON. - -**Note2:** The above code is to be inserted into the alarms section of -alarms.json. It does not represent the entire alarms.json file. - -## How to get a Permanent Facebook Page Token - -Use the [Graph API Explorer](https://developers.facebook.com/tools/explorer) -for all of these steps except where otherwise stated. - -### 0. Create Facebook App - -**If you already have an app**, skip to step 1. - -1. Go to [My Apps](https://developers.facebook.com/apps/). -2. Click "+ Add a New App". -3. Setup a website app. -4. Go to App Review of your new app and make sure your app is made Public. - -### 1. Get User Short-Lived Access Token - -1. Go to the [Graph API Explorer](https://developers.facebook.com/tools/explorer). -2. Select the application you want to get the access token for by clicking on -the "Graph API Explorer" dropdown near the top right. -3. Click "Get Token" dropdown and choose "Get User Access Token". -4. In the pop-up, under the "Events, Groups & Pages" section, check -"manage_pages" and "publish_pages". -5. Click "Get Access Token". -6. Grant access from a Facebook account that has access to manage the target -page. Note that if this user loses access the final, never-expiring access -token will likely stop working. - -Token that appears in the "Access Token" field is your short-lived access token. - -### 2. Generate Long-Lived Access Token - -Following [these instructions](https://developers.facebook.com/docs/facebook-login/access-tokens#extending) from the Facebook docs, make a GET request to - -`https://graph.facebook.com/v2.2/oauth/access_token?grant_type=fb_exchange_token&client_id={app_id}&client_secret={app_secret}&fb_exchange_token={short_lived_token}` - -entering in your app's ID and secret, generated from step 0, and the -short-lived token, generated in the previous step. Be sure to remove the curly -braces "{}" when replacing values. - -You **cannot use the Graph API Explorer**. For some reason it gets stuck on -this request. I think it's because the response isn't JSON, but a query string. -Since it's a GET request, you can just go to the URL in your browser. - -The response should look like this: - -`access_token=ABC123&expires=5182959` - -"ABC123" will be your long-lived access token. You can put it into the [Access Token Debugger](https://developers.facebook.com/tools/debug/accesstoken) to verify. -Under "Expires" it should have something like "2 months". - -### 4. Get User ID - -Using the long-lived access token, make a GET request to - -`https://graph.facebook.com/v2.2/me?access_token={long_lived_access_token}` - -Be sure to remove the curly braces "{}" when replacing values. The **id** field -is your account ID. You'll need it for the next step. - -### 5. Get Permanent Page Access Token - -Make a GET request to - -`https://graph.facebook.com/v2.2/{account_id}/accounts?access_token={long_lived_access_token}` - -Be sure to remove the curly braces "{}" when replacing values. The JSON -response should have a **data** field under which is an array of items the user -has access to. Find the item for the page you want the permanent access token -from. The **access_token** field should have your permanent access token. Copy -it and test it in the [Access Token Debugger](https://developers.facebook.com/tools/debug/accesstoken). -Under "Expires" it should say "Never". diff --git a/docs/configuration/alarms/Pushbullet.md b/docs/configuration/alarms/Pushbullet.md deleted file mode 100644 index 1a1e3344e..000000000 --- a/docs/configuration/alarms/Pushbullet.md +++ /dev/null @@ -1,137 +0,0 @@ -# Pushbullet - -## Overview - -* [Prerequisites](#prerequisites) -* [Introduction](#introduction) -* [Basic Config](#basic-config) - * [Required Parameters](#required-parameters) - * [Example: Basic Alarm Configuration using Required Parameters](#example-basic-alarm-configuration-using-required-parameters) -* [Advanced Config](#advanced-config) - * [Optional Parameters](#optional-parameters) - * [Example: Alarm Configuration Using Optional Parameters](#example-alarm-configuration-using-optional-parameters) -* [How to Get a Pushbullet API Key](#how-to-get-a-pushbullet-api-key) - -## Prerequisites - -This guide assumes: - -1. You are familiar with [JSON formatting](https://www.w3schools.com/js/js_json_intro.asp) -2. You have read and understood the [Alarms](alarms) Wiki -3. You are comfortable with the layout of `alarms.json`. - -Please familiarize yourself with all of the above before proceeding. - -## Introduction - -PokeAlarm offers the following for Pushbullet: - -* Notifications to multiple Pushbullet channels -* Customizable Google Map image of the pokemon, gym, pokestop, egg and/or -raid location -* Personalized notifications via [Dynamic Text Substitution](Dynamic-Text-Substitution) - -## Basic Config - -### Required Parameters - -These `alarm.json` parameters are required to enable the Pushbullet alarm service: - -| Parameters | Description | -|:-------------- |:---------------------------------------| -|`type` | Must be `pushbullet` | -|`active` | `true` for alarm to be active | -|`api_key` | Your Pushbullet API key | - -### Example: Basic Alarm Configuration using Required Parameters - -Below is how a basic Pushbullet alarm configuration would appear in `alarms.json`. - -```json -{ - "active":true, - "type":"pushbullet", - "api_key":"YOUR_API_KEY" -} -``` -**Note:** The above code is to be inserted into the alarms section of -alarms.json. It does not represent the entire alarms.json file. - -## Advanced Config - -### Optional Parameters - -In addition to the required parameters, several `alarms.json` optional -parameters are available to personalize your notifications. Below is an -example of these optional parameters and how they are incorporated into a -functional alarm layout. - -These optional parameters are entered at the same level as `"type":"pushbullet"`. - -| Parameters | Description | Default | -|:-------------------|:-----------------------------------------------|:---------| -| `startup_message` | Confirmation post when PokeAlarm initialized | `true` | - -These optional parameters below are applicable to the `monsters`, `stops`, -`gyms`, `eggs`, and `raids` sections of the JSON file. - -| Parameters | Description | Default | -|:-------------- |:------------------------------------------|:--------------------------------------------| -|`channel` | Channel tag of the target channel | Sends to all devices | -|`title` | Notification title attached to the push | `A wild has appeared!` | -|`url` | Link to be attached to the push | `` | -|`body` | Message attached to the push | `Available until <24h_time> ().` | - -### Example: Alarm Configuration Using Optional Parameters - -```json -{ - "pushbullet_alarm":{ - "active":true, - "type":"pushbullet", - "api_key":"YOUR_API_KEY", - "channel":"DEFAULT_CHANNEL", - "monsters":{ - "title":"A wild has appeared!", - "url":"", - "body":"Available until <24h_time> ().", - "channel":"OVERRIDES_DEFAULT_CHANNEL" - }, - "stops":{ - "title":"Someone has placed a lure on a Pokestop!", - "url":"", - "body":"Lure will expire at <24h_time> ().", - "channel":"OVERRIDES_DEFAULT_CHANNEL" - }, - "gyms":{ - "title":"A Team gym has fallen!", - "url":"", - "body":"It is now controlled by .", - "channel":"OVERRIDES_DEFAULT_CHANNEL" - }, - "eggs": { - "title":"A level raid is incoming!", - "url":"", - "body":"The egg will hatch <24h_hatch_time> ().", - "channel":"OVERRIDES_DEFAULT_CHANNEL" - }, - "raids":{ - "title":"Level raid is available against !", - "url":"", - "body":"The raid is available until <24h_raid_end> ()." - } - } -} -``` -**Note:** The above code is to be inserted into the alarms section of -alarms.json. It does not represent the entire alarms.json file. - -## How to get a Pushbullet API Key - -1. Go to [Pushbullet](https://www.pushbullet.com/) and click one of the -'Sign up' options. - -2. In the top right corner, click on the letter and select 'My Account'. - -3. Scroll down to 'Create Access Token'. Copy this token and place it in -api_key parameter. diff --git a/docs/configuration/alarms/Slack.md b/docs/configuration/alarms/Slack.md deleted file mode 100644 index 425da2d1e..000000000 --- a/docs/configuration/alarms/Slack.md +++ /dev/null @@ -1,227 +0,0 @@ -# Slack - -## Overview - -* [Prerequisites](#prerequisites) -* [Introduction](#introduction) -* [Basic Config](#basic-config) - * [Required Parameters](#required-parameters) - * [Example: Basic Alarm Configuration using Required Parameters](#example-basic-alarm-configuration-using-required-parameters) -* [Advanced Config](#advanced-config) - * [Optional Parameters](#optional-parameters) - * [Example: Alarm Configuration Using Optional Parameters](#example-alarm-configuration-using-optional-parameters) - * [Mini Map Configuration](#mini-map-configuration) - * [Formatting alarms text](#formatting-alarms-text) -* [How to Get a Slack API Key](#how-to-get-a-slack-api-key) - -## Prerequisites - -This guide assumes - -1. You are familiar with [JSON formatting](https://www.w3schools.com/js/js_json_intro.asp) -2. You have read and understood the [Alarms](alarms) Wiki -3. You are comfortable with the layout of `alarms.json`. -4. You are using the latest version of PokeAlarm. - -Please familiarize yourself with all of the above before proceeding. - -## Introduction - -![](images/slack_demo.png) - -**Slack** is a cloud-based team collaboration tool that is available on -Windows, Mac OS X, Linux, iOS, Android, and Windows Phone. Slack offers a lot -of IRC-like features: persistent chat rooms (channels) organized by topic, as -well as private groups and direct messaging. All content inside Slack is -searchable, including files, conversations, and people. - -PokeAlarm offers the following for Slack: - -* Custom username for posting -* High resolution icons for pokemon, gym, pokestop, egg and/or raid notifications -* Notifications to multiple Slack channels and/or teams -* Customizable Google Map image of the pokemon, gym, pokestop, egg and/or raid location -* Personalized notifications via [Dynamic Text Substitution](Dynamic-Text-Substitution) - -## Basic Config - -### Required Parameters - -These parameters below are required to enable the Slack alarm service: - -| Parameters | Default | Description | -|-------------------|-------------|---------------------------------------| -| `type` | `slack` | `slack` | -| `active` | `False` | `true` for alarm to be active | -| `api_key` | | Your Slack API key | -| `channel` | `"general"` | Default channel to post notifications | - -### Example: Basic Alarm Configuration using Required Parameters - -```json -{ - "active":true, - "type":"slack", - "api_key":"YOUR_API_KEY", - "channel":"general" -} -``` -**Note:** The above code is to be inserted into the alarms section of -alarms.json. It does not represent the entire alarms.json file. - -## Advanced Config - -### Optional Parameters - -In addition to the 3 required parameters, several optional parameters are -available to personalize your Slack notifications. Below is an example of -these optional parameters and how they are incorporated into a functional -alarm layout for Slack. - -These optional parameters are entered at the same level as `"type":"slack"`. - -| Parameters | Description | -|--------------------|----------------------------------------------| -| `startup_message` | Confirmation post when PokeAlarm initialized | - -These optional parameters below are applicable to the `monsters`, `stops`, -`gyms`, `eggs`, and `raids` sections of the JSON file. - -| Parameters | Description | Default | -|------------------|---------------------------------------------|----------------------------------------------| -| `channel` | Send messages to this channel. | `#general` | -| `username` | Username the bot should post the message as | `` | -| `icon_url` | URL path to pokemon icon | | -| `title` | Notification text to begin the message | `A wild has appeared!` | -| `url` | Link to be added to notification text | `` | -| `body` | Additional text to be added to the message | `Available until <24h_time> ().` | -| `map` | Specify a json object to describe the map | See Mini Map Configuration for more details | - -*Note: Nidorans will be `nidoranf` or `nidoranm`, Farfetch'd will be -`farfetchd`, and Mr. Mime will be `mrmime`. Channels that do not exist -(channels cannot be created by bots) will default to general instead.* - -## Example: Alarm Configuration Using Optional Parameters - -```json -{ - "slack_alarm":{ - "active":true, - "type":"slack", - "api_key":"YOUR_API_KEY", - "channel":"general", - "startup_message":true, - "monsters":{ - "channel":"general", - "username":"", - "icon_url*":"/_.png", - "title":"A wild has appeared!", - "url":"", - "body":"Available until <24h_time> ().", - "map":{ - "enabled":true, - "width":"250", - "height":"125", - "maptype":"roadmap", - "zoom":"15" - } - }, - "stops":{ - "channel":"general", - "username":"Pokestop", - "icon_url*":"/ready.png", - "title":"Someone has placed a lure on a Pokestop!", - "url":"", - "body":"Lure will expire at <24h_time> ()." - }, - "gyms":{ - "channel":"general", - "username":" Gym Alerts", - "icon_url*":"/.png", - "title":"A Team gym has fallen!", - "url":"", - "body":"It is now controlled by ." - }, - "eggs":{ - "username":"Egg", - "icon_url*":"/.png", - "title":"A level raid is incoming!", - "url":"", - "body":"The egg will hatch <24h_hatch_time> ()." - }, - "raids":{ - "username":" Raid", - "icon_url*":"/_000.png", - "title":"Level raid is available against !", - "url":"", - "body":"The raid is available until <24h_raid_end> ()." - } - } -} -``` -**Note1:** \*THESE LINES ARE USED TO OVERRIDE DEFAULT VALUES. IF YOU DO NOT -WISH TO USE CUSTOM IMAGES, DO NOT ADD THESE LINES TO YOUR ALARMS.JSON. - -**Note2:** The above code is to be inserted into the alarms section of -alarms.json. It does not represent the entire alarms.json file. - -### Mini Map Configuration - -![](images/minimap.png) - -You can enable a small Google Static Maps image after your post, showing the -location of the alarmed pokemon, gym, pokestop, egg or raid. This is done by -adding the `map` parameter at the Alarm level (which will apply maps for any -notification), or individually to the `monsters`, `stops`, `gyms`, `eggs`, or -`raids` sections of your alarm. - -Below is an example of enabling the mini map for pokemon. - -```json - "monsters":{ - "channel":"general", - "username":"", - "title":"A wild has appeared!", - "url":"", - "body":"Available until <24h_time> ().", - "map":{ - "enabled":true, - "width":"250", - "height":"125", - "maptype":"roadmap", - "zoom":"15" - } - }, -``` - -| Parameters | Description | Default | -|----------------|-------------------------------------------|----------------| -| `enabled` | Turns the map on or off | `true` | -| `width` | Width of the map | `250` px | -| `height` | Height of the map | `150` px | -| `maptype` | Link to be added to notification text | `roadmap` | -| `zoom` | Specifies the zoom of the map | `15` | - -### Formatting alarms text - -Here is a basic guide to apply custom styles to alarm text: - -| Style | Example | -|------------------------------------|----------------------------------| -| `_italics_` | *italics* | -| `*bold*` | **bold** | -| `_*bold italics*_` | ***bold italics*** | -| `~Strikethrough~` | ~~Strikethrough~~ | - -You can see other options in the official Slack information about formatting text [here](https://get.slack.help/hc/en-us/articles/202288908-Format-your-messages). - -## How to get a Slack API Key - -1. Visit [slack.com](https://www.slack.com). Enter your email address and click -'Create your team'. Follow the instructions to setup and activate your account. - -2. Go to the [create a bot page](https://my.slack.com/services/new/bot). Enter -a username and click create. - -3. Copy the API Token given. Fill out any more information you want, and -click 'Save Integration'. diff --git a/docs/configuration/alarms/Telegram.md b/docs/configuration/alarms/Telegram.md deleted file mode 100644 index 3374818b1..000000000 --- a/docs/configuration/alarms/Telegram.md +++ /dev/null @@ -1,194 +0,0 @@ -# Telegram - -## Overview - -* [Prerequisites](#prerequisites) -* [Introduction](#introduction) -* [Basic Config](#basic-config) - * [Required Parameters](#required-parameters) - * [Example: Basic Alarm Configuration using Required Parameters](#example-basic-alarm-configuration-using-required-parameters) -* [Advanced Config](#advanced-config) - * [Optional Parameters](#optional-parameters) - * [Example: Alarm Configuration Using Optional Parameters](#example-alarm-configuration-using-optional-parameters) - * [Formatting alarms text](#formatting-alarms-text) -* [How to Get a Telegram API Key](#how-to-get-a-telegram-api-key) -* [How to Create a Custom Channel](#how-to-create-a-custom-channel) - -## Prerequisites - -This guide assumes: - -1. You are familiar with [JSON formatting](https://www.w3schools.com/js/js_json_intro.asp) -2. You have read and understood the [Alarms](alarms) Wiki -3. You are comfortable with the layout of `alarms.json`. - -Please familiarize yourself with all of the above before proceeding. - -## Introduction - -![](images/telegram.png) - -**Telegram** is a cloud-based instant messaging service. Telegram clients exist -for both mobile (Android, iOS, Windows Phone, Ubuntu Touch) and desktop systems -(Windows, OS X, Linux). Users can send messages and exchange photos, videos, -stickers and files of any type. - -PokeAlarm offers the following for Telegram: - -* Notifications to multiple Telegram channels -* Customizable Google Map image of the pokemon, gym, pokestop, egg and/or raid location -* Personalized notifications via [Dynamic Text Substitution](Dynamic-Text-Substitution) - -## Basic Config - -### Required Parameters - -These `alarm.json` parameters are required to enable the Telegram alarm service: - -| Parameters | Description | -|----------------|----------------------------------------| -| `type` | Must be `telegram` | -| `active` | `true` for alarm to be active | -| `bot_token` | Your Bot Token from Telegram | -| `chat_id` | Your chat's id from Telegram | - -### Example: Basic Alarm Configuration using Required Parameters - -Below is how a basic Telegram alarm configuration would appear in -`alarms.json`. Note that this is **not** the entire `alarms.json`, but only -the section pertaining to the alarm portion of the JSON file. - -```json -{ - "active":true, - "type":"telegram", - "bot_token":"YOUR_BOT_TOKEN", - "chat_id":"YOUR_CHAT_ID" -} -``` - -## Advanced Config - -### Optional Parameters - -In addition to the required parameters, several `alarms.json` optional -parameters are available to personalize your notifications. Below is an example -of these optional parameters and how they are incorporated into a functional -alarm layout. - -Parameters at the alarm level will be the default to alert-level parameters. - -| Parameters | Description | Default | -|-------------------|------------------------------------------------------|-----------------------| -| `map` | Sends minimap after main message. | `true` | -| `map_notify` | Disables map notifications. Set to `False` if you are experiencing notification issues on Android | `False` | -| `venue` | Sends location in main message.* | `false` | -| `venue_notify` | Disables venue notifications. Set to `False` if you are experiencing notification issues on Android | `True` | -| `message_notify` | Enables notifications messages | `true` | -| `sticker` | Sends pokemon images as stickers in the message | `true` | -| `sticker_notify` | Disables sticker notifications. Set to `False` if you are experiencing notification issues on Android | `False` | -| `sticker_url` | Url to be used for the sticker. Must be .webp file. | | -| `max_attempts` | Max attempts to send for each message. | 3 | -| `startup_message` | Confirmation post when PokeAlarm initialized | `true` | - -These optional parameters below are applicable to the `monsters`, `stops`, -`gyms`, `eggs`, and `raids` sections of the JSON file. These parameters -override the alarm-level settings for this alert. - -| Parameters | Description | Default | -|------------------|-------------------------------------------------|-------------------------------------------| -| `message` | Text for the message | `*A wild has appeared!*\nAvailable until <24h_time> ().` | -| `map` | Sends minimap after main message. | `true` | -| `map_notify` | Disables map notifications. Set to `False` if you are experiencing notification issues on Android | `False` | -| `venue` | Sends location in main message.* | `false` | -| `venue_notify` | Disables venue notifications. Set to `False` if you are experiencing notification issues on Android | `True` | -| `sticker` | Sends images as stickers in the message | `true` | -| `sticker_notify` | Disables sticker notifications. Set to `False` if you are experiencing notification issues on Android | `False` | - -**Note:** \*if you use `venue`, keep in mind that the markdown in your alarms -will be ignored because of a limitation in the Telegram API. - -### Example: Alarm Configuration Using Optional Parameters - -Below is how an advanced alarm configuration would appear in `alarms.json`. -Note that this is **not** the entire `alarms.json`, but only the section -pertaining to the alarm portion of the JSON file. - -```json -{ - "telegram_alarm":{ - "active":true, - "type":"telegram", - "bot_token":"YOUR_BOT_TOKEN", - "chat_id":"YOUR_CHAT_ID", - "map_notify":false, - "startup_message":false, - "sticker":true, - "monsters":{ - "chat_id":"OVERRIDES_DEFAULT_CHANNEL", - "message":"*A wild has appeared!*\nAvailable until <24h_time> ().", - "map":true - }, - "stops":{ - "chat_id":"OVERRIDES_DEFAULT_CHANNEL", - "message":"*Someone has placed a lure on a Pokestop!*\nLure will expire at <24h_time> ().", - "map":true - }, - "gyms":{ - "chat_id":"OVERRIDES_DEFAULT_CHANNEL", - "message":"*A Team gym has fallen!*\nIt is now controlled by .", - "map":true - }, - "eggs":{ - "chat_id":"OVERRIDES_DEFAULT_CHANNEL", - "message":"*A level raid is incoming!*\nThe egg will hatch <24h_hatch_time> ().", - "map":true - }, - "raids":{ - "chat_id":"OVERRIDES_DEFAULT_CHANNEL", - "message":"*A raid is available against !*\nThe raid is available until <24h_raid_end> ().", - "map":true - } - } -} -``` - -### Formatting alarms text - -Here is a basic guide to apply custom styles to alarm text: - -| Style | Example | -|------------------------------------|----------------------------------| -| `_italic text_` | *italics* | -| `*bold text*` | **bold** | -| `_*bold italics*_` | ***bold italics*** | - -You can see other options in the official Telegram information about -formatting text [here](https://core.telegram.org/bots/api#formatting-options). - -## How to get a Telegram API Key - -1. Go to [Telegram Web Client](https://telegram.org/dl/webogram). Enter your -phone number and follow the instructions to create your account. - -2. Talk to the [BotFather](https://telegram.me/botfather) to create a new bot. -Use the `/newbot` command and follow his instructions. It will give you an API -Token when you are finished. - -3. Start a conversation with your bot. In the top left click on the menu bars, -then click create group. Type in the name of the bot you previously created, -then click on it when it appears below. Then click next. Type any message to -your bot. - -4. Enter your bot_token in to replace the `` in the following -url `https://api.telegram.org/bot/getUpdates`. Then go to it, -and find the section that says `"chat":{"id":`. This number is your -chat_id. - -## How to Create a Custom Channel - -1. Create a Public Channel (Currently doesn't work from the web app). - -2. Add your bot as an administrator for the channel. - -3. The chat_id for your bot will be `@channel_url`. diff --git a/docs/configuration/alarms/Twilio.md b/docs/configuration/alarms/Twilio.md deleted file mode 100644 index 6069296e1..000000000 --- a/docs/configuration/alarms/Twilio.md +++ /dev/null @@ -1,175 +0,0 @@ -# Twilio - -## Overview - -* [Prerequisites](#prerequisites) -* [Introduction](#introduction) -* [Basic Config](#basic-config) - * [Required Parameters](#required-parameters) - * [Example: Basic Alarm Configuration using Required Parameters](#example-basic-alarm-configuration-using-required-parameters) -* [Advanced Config](#advanced-config) - * [Multiple Destinations](#multiple-destinations) - * [Optional Parameters](#optional-parameters) - * [Example: Alarm Configuration Using Optional Parameters](#example-alarm-configuration-using-optional-parameters) -* [How to get the Account SID, Auth Token, and Twilio Number](#how-to-get-the-account-sid-auth-token-and-twilio-number) - -## Prerequisites - -This guide assumes: - -1. You are familiar with [JSON formatting](https://www.w3schools.com/js/js_json_intro.asp) -2. You have read and understood the [Alarms](alarms) Wiki -3. You are comfortable with the layout of `alarms.json`. - -## Introduction - -**Twilio** allows software developers to programmatically make and receive -phone calls and send and receive text messages using its web service APIs. - -PokeAlarm offers the following for Twilio: - -* Personalized notifications via [Dynamic Text Substitution](Dynamic-Text-Substitution) - -## Basic Config - -These `alarms.json` parameters are required to enable the alarm service: - -### Required Parameters - -| Parameters | Description | -|:-------------- |:---------------------------------------| -|`type` | must be `twilio` | -|`active` | 'true' for alarm to be active | -|`account_sid` | Your Account SID from Twilio | -|`auth_token` | Your Auth Token from Twilio | -|`from_number` | Your Twilio number to send from | -|`to_number` | Your number to receive texts from | - -### Example: Basic Alarm Configuration using Required Parameters - -```json -{ - "active":true, - "type":"twilio", - "account_sid":"YOUR_API_KEY", - "auth_token":"YOUR_AUTH_TOKEN", - "from_number":"YOUR_FROM_NUM", - "to_number":"YOUR_TO_NUM" -} -``` -**Note:** The above code is to be inserted into the alarms section of -alarms.json. It does not represent the entire alarms.json file. - -## Advanced Config -In addition to the above required parameters, several optional parameters -are available to personalize your notifications. - -### Multiple Destinations - -The `to_number` field can accept either a single destination phone number -or an array of phone numbers to send SMS messages to. This allows for -sending SMS alerts to multiple destinations. - -#### Example - -Below is an example of using an array for the destination number(s) in the -alarm configuration. - -```json -{ - "active":true, - "type":"twilio", - "account_sid":"YOUR_API_KEY", - "auth_token":"YOUR_AUTH_TOKEN", - "from_number":"YOUR_FROM_NUM", - "to_number": [ "YOUR_1ST_TO_NUM", "YOUR_2ND_TO_NUM", "YOUR_3RD_TO_NUM" ] -} -``` - -### Optional Parameters - -These optional parameters below are applicable to the `monsters`, `stops`, -`gyms`, `eggs`, and `raids` alarm code of the JSON file. - -#### Optional Pokemon Parameters -| Parameters | Description | Default | -|:------------|:--------------------------------|:-----------------------------------------------------------| -|`message` | Text message for pokemon updates | `"A wild has appeared! Available until <24h_time> ()."` | - -#### Optional Pokestop Parameters -| Parameters | Description | Default | -|:------------|:---------------------------------------|:--------------------------------------------------------------| -|`message` | Text message for pokestop updates | `"Someone has placed a lure on a Pokestop! Lure will expire at <24h_time> ()."` | - -#### Optional Gym Parameters -| Parameters | Description | Default | -|:------------|:-------------------------------------|:--------------------------------------------------------------| -|`message` | Text message for gym updates | `"A Team gym has fallen! It is now controlled by ."` | - -#### Optional Egg Parameters -| Parameters | Description | Default | -|:------------|:-------------------------------------|:--------------------------------------------------------------| -|`message` | Text message for egg updates | `"A level raid is incoming! Egg hatches <24h_hatch_time> ()."` | - -#### Optional Raid Parameters -| Parameters | Description | Default | -|:------------|:-------------------------------------|:--------------------------------------------------------------| -|`message` | Text message for raid updates | `"Level raid against ! Available until <24h_raid_end> ()."` | - -#### Example: Alarm Configuration Using Optional Parameters - -Below is an example of these optional parameters and how they are incorporated -into a functional alarm layout. - -```json -{ - "twilio_alarm":{ - "active":true, - "type":"twilio", - "account_sid":"YOUR_API_KEY", - "auth_token":"YOUR_AUTH_TOKEN", - "from_number":"YOUR_FROM_NUM", - "to_number":"YOUR_TO_NUM", - "monsters":{ - "from_number":"YOUR_FROM_NUM", - "to_number":"YOUR_TO_NUM", - "message":"A wild has appeared! Available until <24h_time> ()." - }, - "stops":{ - "from_number":"YOUR_FROM_NUM", - "to_number":"YOUR_TO_NUM", - "message":"Someone has placed a lure on a Pokestop! Lure will expire at <24h_time> ()." - }, - "gyms":{ - "from_number":"YOUR_FROM_NUM", - "to_number":"YOUR_TO_NUM", - "message":"A Team gym has fallen! It is now controlled by ." - }, - "eggs":{ - "message":"A level raid is incoming! Egg hatches <24h_hatch_time> ()." - }, - "raids":{ - "message":"Level raid against ! Available until <24h_raid_end> ()." - } - } -} -``` -**Note:** The above code is to be inserted into the alarms section of -alarms.json. It does not represent the entire alarms.json file. - -## How to get the Account SID, Auth Token, and Twilio Number - -1. Go to [Twilio](https://www.twilio.com) and click 'Get a free API key'. -Fill out the following form, and enter your phone number to verify your -account. - -2. On the left hand side, click the Home Button and then click Dashboard. -The **Account SID** and **Auth Token** will be listed. To reveal the Auth -Token, click on the lock next to it. - -3. Scroll down and click on '# Phone Numbers'. Then click 'Get Started' -to get your free number. - -4. If you wish to text to different numbers, you need to register each before -you are allowed to message them. This can be done from the 'Verified Caller -ID's' page. diff --git a/docs/configuration/alarms/Twitter.md b/docs/configuration/alarms/Twitter.md deleted file mode 100644 index a02697400..000000000 --- a/docs/configuration/alarms/Twitter.md +++ /dev/null @@ -1,148 +0,0 @@ -# Twitter - -## Overview - -* [Prerequisites](#prerequisites) -* [Introduction](#introduction) -* [Basic Config](#basic-config) - * [Required Parameters](#required-parameters) - * [Example: Basic Alarm Configuration using Required Parameters](#example-basic-alarm-configuration-using-required-parameters) -* [Advanced Config](#advanced-config) - * [Optional Parameters](#optional-parameters) - * [Example: Alarm Configuration Using Optional Parameters](#example-alarm-configuration-using-optional-parameters) -* [How to Get a Twitter API Key](#how-to-get-a-twitter-api-key) - -## Prerequisites - -This guide assumes: - -1. You are familiar with [JSON formatting](https://www.w3schools.com/js/js_json_intro.asp) -2. You have read and understood the [Alarms](alarms) Wiki -3. You are comfortable with the layout of `alarms.json`. - -Please familiarize yourself with all of the above before proceeding. - -## Introduction - -**Twitter** is an online social networking service that enables users to send -and read short 140-character messages called "tweets". Registered users can -read and post tweets, but those who are unregistered can only read them. Users -access Twitter through the website interface, SMS or mobile device app. - -PokeAlarm offers the following for Twitter: - -* Personalized notifications via [Dynamic Text Substitution](Dynamic-Text-Substitution) - -## Basic Config - -### Required Parameters - -These `alarms.json` parameters are required to enable the Twitter alarm service: - -| Parameters | Description | -|:-----------------|:---------------------------------------| -| `type` | Must be `twitter` | -| `active` | `true` for alarm to be active | -| `access_token` | Your twitter access token | -| `access_secret` | Your twitter access secret | -| `consumer_key` | Your twitter consumer key | -| `consumer_secret`| Your twitter consumer secret | - -### Example: Basic Alarm Configuration using Required Parameters - -```json -{ - "active":true, - "type":"twitter", - "access_token":"YOUR_ACCESS_TOKEN", - "access_secret":"YOUR_ACCESS_SECRET", - "consumer_key":"YOUR_CONSUMER_KEY", - "consumer_secret":"YOUR_CONSUMER_SECRET" -} -``` -**Note:** The above code is to be inserted into the alarms section of -`alarms.json`. It does not represent the entire `alarms.json` file. - -## Advanced Config - -### Optional Parameters - -In addition to the required parameters, several `alarms.json` optional -parameters are available to personalize your notifications. Below is an -example of these optional parameters and how they are incorporated into a -functional alarm layout. - -These optional parameters are entered at the same level as `"type":"twitter"`. - -| Parameters | Description | Default | -|:-------------------|:---------------------------------------------------|:-----------------------------| -| `startup_message` | Confirmation post when PokeAlarm initialized | `true` | - -These optional parameters below are applicable to the `monsters`, `stops`, -`gyms`, `eggs`, and `raids` sections of the JSON file. - -| Parameters | Description | Default | -|:----------------|:---------------------------|:----------------------------------------------| -| `status` | Message to post as status | `A wild has appeared! Available until <24h_time> (). ` | - -### Example: Alarm Configuration Using Optional Parameters - -```json -{ - "twitter_alarm":{ - "active":true, - "type":"twitter", - "access_token":"YOUR_ACCESS_TOKEN", - "access_secret":"YOUR_ACCESS_SECRET", - "consumer_key":"YOUR_CONSUMER_KEY", - "consumer_secret":"YOUR_CONSUMER_SECRET", - "monsters":{ - "status":"A wild has appeared! Available until <24h_time> (). " - }, - "stops":{ - "status":"Someone has placed a lure on a Pokestop! Lure will expire at <24h_time> (). " - }, - "gyms":{ - "status":"A Team gym has fallen! It is now controlled by . " - }, - "eggs":{ - "status":"Level raid incoming! Hatches at <24h_hatch_time> (). " - }, - "raids":{ - "status":"Raid against ! Available until <24h_raid_end> (). " - } - } -} -``` -**Note:** The above code is to be inserted into the alarms section of -`alarms.json`. It does not represent the entire `alarms.json` file. - -For more information on text substitutions, please see the main configuration page. - -## How to get a Twitter API Key - -### Step 1: Create a Twitter account - -* Go to [Twitter's signup page](https://twitter.com/signup) -* Fill out all details, and **make sure to include your phone number**. This -is a requirement for remote access, and you will need that to make the Twitter -bot work. - -### Step 2: Create a Twitter app - -* Go to [apps.twitter.com](https://apps.twitter.com) -* Click 'Create New App' button -* Fill out the details on the form. You have to give your app a name, -description, and website. This can be a simple place holder like http://www.example.com -* Read the Developer Agreement, and check the box at the bottom if you agree. -Then click on the ‘Create your Twitter application’ button. - -### Step 3: Keys and Access tokens - -* After creating your new app, you were redirected to its own page. If you -weren’t, go to [apps.twitter.com](https://apps.twitter.com) and click on your -apps name. -* On the app’s page, click on the ‘Keys and Access Tokens’ page. -* At the bottom of this page, click on the ‘Create my access token’ button. -* Take note of **Consumer Key (API Key), Consumer Secret (API Secret), Access -Token, & Access Token Secret**. These are the are required in the Twitter Config. diff --git a/docs/configuration/alarms/discord.rst b/docs/configuration/alarms/discord.rst new file mode 100644 index 000000000..affc175f3 --- /dev/null +++ b/docs/configuration/alarms/discord.rst @@ -0,0 +1,269 @@ +Discord +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + +.. role:: boltitalic + :class: boltitalic + +.. role:: underline + :class: underline + +.. role:: underlinebold + :class: underlinebold + +.. role:: underlineitalic + :class: underlineitalic + +.. role:: underlineboita + :class: underlineboita + +.. role:: strike + :class: strike + + +Prerequisites +------------------------------------- + +This guide assumes + ++ You are familiar with `JSON formatting `_. ++ You have read and understood the :doc:`index` wiki. ++ You are comfortable with the layout of ``alarms.json``. ++ You are using the latest version of PokeAlarm. + +Please familiarize yourself with all of the above before proceeding. + + +Introduction +------------------------------------- + +**Discord** is a free voice and text chat app designed specifically for gaming. +Available on Windows, Mac OS X, iOS and Android. It is also usable from any +Chrome, Firefox or Opera browser. + +PokeAlarm offers the following for Discord: + ++ Custom username for posting ++ High resolution icons for pokemon, gym, pokestop, egg or raid notifications ++ Personalized notifications via :doc:`../events/index` + + +Basic Config +------------------------------------- + + +Required Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The parameters below are required to enable the Discord alarm service: + +=============== ======================================== +Parameters Description +=============== ======================================== +`type` Must be ``"discord"`` +`active` ``true`` for alarm to be active +`webhook_url` * Your Webhook URL for a specific channel +=============== ======================================== + +.. note:: \*In PokeAlarm version 3.1, `webhook_url` replaced `api_key`. + + +Example: Basic Alarm Configuration using Required Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. note:: + The above below is to be inserted into the alarms section of + `alarms.json`. It does not represent the entire `alarms.json` file. + +.. code-block:: json + + { + "active":true, + "type":"discord", + "webhook_url":"YOUR_WEBHOOK_URL" + } + + +Advanced Config +------------------------------------- + +Optional Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In addition to the required parameters, several optional parameters are +available to personalize your notifications. Below is an example of these +optional parameters and how they are incorporated into a functional alarm layout. + +These optional parameters are entered at the same level as ``"type":"discord"``. + ++-------------------+-----------------------------------------------+----------+ +| Parameters | Description | Default | ++-------------------+-----------------------------------------------+----------+ +| `startup_message` | Confirmation post when PokeAlarm initialized | ``true`` | ++-------------------+-----------------------------------------------+----------+ + +These optional parameters below are applicable to the ``monsters``, ``stops``, +``gyms``, ``eggs``, and ``raids`` sections of the JSON file. + +=============== ================================================ ========================================== +Parameters Description Default +=============== ================================================ ========================================== +`webhook_url` URL of specific channel name. Overrides + `webhook_url` at Alarm level. Use to post only +`disable_embed` Disables the body to make one line notifications ``false`` +`username` Username the bot should post the message as ```` +`icon_url` URL path to icon +`avatar_url` URL path to avatar +`title` Notification text to begin the message ``A wild has appeared!`` +`url` Link to be added to notification text ```` +`body` Additional text to be added to the message ``Available until <24h_time>().`` +`content` Text before the Discord embed +=============== ================================================ =========================================== + +.. note:: + Nidorans will be ``nidoranf`` or ``nidoranm``, Farfetch'd will be + ``farfetchd``, and Mr. Mime will be ``mrmime``. + + +Example: Alarm Configuration Using Optional Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. note:: + The code below is to be inserted into the alarms section of + ``alarms.json``. It does not represent the entire ``alarms.json`` file. + +.. code-block:: json + + { + "discord_alarm":{ + "active":true, + "type":"discord", + "webhook_url":"YOUR_WEBHOOK_URL", + "startup_message":false, + "monsters":{ + "webhook_url":"YOUR_WEBHOOK_URL_FOR_POKEMON_CHANNEL", + "username":"", + "icon_url*":"/_.png", + "title":"A wild has appeared!", + "url":"", + "body":"Available until <24h_time> ()." + }, + "stops":{ + "webhook_url":"YOUR_WEBHOOK_URL_FOR_POKESTOP_CHANNEL", + "username":"Pokestop", + "icon_url*":"/ready.png", + "title":"Someone has placed a lure on a Pokestop!", + "url":"", + "body":"Lure will expire at <24h_time> ()." + }, + "gyms":{ + "webhook_url":"YOUR_WEBHOOK_URL_FOR_GYM_CHANNEL", + "username":" Gym Alerts", + "icon_url*":"/.png", + "title":"A Team gym has fallen!", + "url":"", + "body":"It is now controlled by ." + }, + "eggs":{ + "webhook_url":"DISCORD_WEBHOOK_URL_FOR_EGG_CHANNEL", + "username":"Egg", + "icon_url*":"/.png", + "avatar_url*":"/.png", + "title":"Raid is incoming!", + "url":"", + "body":"A level raid will hatch at <24h_hatch_time> ()." + }, + "raids":{ + "webhook_url":"DISCORD_WEBHOOK_URL_FOR_RAID_CHANNEL", + "username":"Raid", + "icon_url*":"/_000.png", + "avatar_url*":"/_000.png", + "title":"Level Raid is available against !", + "url":"", + "body":"The raid is available until <24h_raid_end> ()." + } + } + } + +.. note:: + \*THESE LINES ARE USED TO OVERRIDE DEFAULT VALUES. IF YOU DO NOT WISH + TO USE CUSTOM IMAGES, DO NOT ADD THESE LINES TO YOUR ALARMS.JSON. + +Mini Map Configuration +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. image:: ../../images/minimap.png + +You can enable a small Google Static Maps image after your post, showing the +location of the alarmed pokemon, gym, pokestop, egg, or raid. This is done by +adding the ``map`` parameter at the Alarm level (which will apply maps for any +notification), or individually to the ``monsters``, ``stops``, ``gyms``, +``eggs``, or ``raids`` sections of your alarm. + +Below is an example of enabling the mini map for pokemon. + +.. code-block:: json + + "monsters":{ + "webhook_url":"YOUR_WEBHOOK_URL_FOR_POKEMON_CHANNEL", + "username":"", + "title":"A wild has appeared!", + "url":"", + "body":"Available until <24h_time> ().", + "map":{ + "enabled":true, + "width":"250", + "height":"125", + "maptype":"roadmap", + "zoom":"15" + } + }, + + +=========== ====================================== ============= +Parameters Description Default +=========== ====================================== ============= +`enabled` Turns the map on or off ``true`` +`width` Width of the map ``"250"`` px +`height` Height of the map ``"150"`` px +`maptype` Link to be added to notification text ``"roadmap"`` +`zoom` Specifies the zoom of the map ``"15"`` +=========== ====================================== ============= + + +Formatting alarms text +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Here is a basic guide to apply custom styles to alarm text: + +=================================== ======================================== +Style Example +=================================== ======================================== +`*italics*` *italics* +`**bold**` **bold** +`***bold italics***` :boltitalic:`bold italics` +`__underline__` :underline:`underline` +`__*underline italics*__` :underlineitalic:`underline italics` +`__**underline bold**__` :underlinebold:`underline bold` +`__***underline bold italics***__` :underlineboita:`underline bold italics` +`~~strikethrough~~` :strike:`strikethrough` +=================================== ======================================== + +You can see other options in the official Discord information about +formatting text `here `_. + + +How to enable Discord webhooks +------------------------------------- + +1. You must have the role permission ``Manage Webhooks``, or be an administrator + for the server. + +2. Go into channel settings, into the Webhooks tab. + +3. Click ``Create Webhook``, ``Save`` + +4. The webhook URL listed is the key you need. diff --git a/docs/configuration/alarms/facebook-pages.rst b/docs/configuration/alarms/facebook-pages.rst new file mode 100644 index 000000000..551b7c150 --- /dev/null +++ b/docs/configuration/alarms/facebook-pages.rst @@ -0,0 +1,315 @@ +Facebook Pages +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + + +Prerequisites +------------------------------------- + +This guide assumes + ++ You are familiar with `JSON formatting `_. ++ You have read and understood the :doc:`index` wiki. ++ You are comfortable with the layout of ``alarms.json``. ++ You are using the latest version of PokeAlarm. + +Please familiarize yourself with all of the above before proceeding. + + +Introduction +------------------------------------- + +**Facebook Pages** is an online social networking service that enables users to +post status messages to a public profile specifically created for business, +brands, celebrities, causes, and other organizations. Registered users can read +and post messages, but those who are unregistered can only read them. Users +access Facebook through the website interface, SMS or mobile device app. + +PokeAlarm offers the following for Facebook Pages: + ++ Personalized notifications via :doc:`../events/index` + + +Basic Config +------------------------------------- + + +Required Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +These ``alarms.json`` parameters - ``active``, ``type``, and ``page_access_token`` - +are required to enable the Facebook Pages alarm service: + +================= ===================================== +Parameters Description +================= ===================================== +type Must be ``"facebook_page"`` +active ``true`` for alarm to be active +page_access_token Your permanent FB page access token +================= ===================================== + +Example: Basic Alarm Configuration using Required Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: json + + { + "active":true, + "type":"facebook_page", + "page_access_token":"YOUR_PAGE_ACCESS_TOKEN" + } + +.. note:: + The above code is to be inserted into the alarms section of + alarms.json. It does not represent the entire alarms.json file. + + +Advanced Config +------------------------------------- + +Optional Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In addition to the 3 required parameters, several optional parameters are +available to personalize your Facebook Pages notifications. Below is an +example of these optional parameters and how they are incorporated into a +functional alarm layout for Facebook Pages. + +These optional parameters are entered at the same level as ``"type":"facebook_page"``. + ++-------------------+-----------------------------------------------+----------+ +| Parameters | Description | Default | ++-------------------+-----------------------------------------------+----------+ +| `startup_message` | Confirmation post when PokeAlarm initialized | ``true`` | ++-------------------+-----------------------------------------------+----------+ + +These optional parameters below are applicable to the ``monsters``, ``stops``, +``gyms``, ``eggs``, and ``raids`` sections of the JSON file. Check Image column to +see where everything appears in the final publication. + +.. image:: ../../images/fb-example.png + +=============== =============================================== ====== +Parameters Description Image +=============== =============================================== ====== +`message` Message to post as status message 1 +`link` Link to be added to notification text Link +`image` Url of the image to show as a preview (empty 2 + for linked page preview) +`name` Link title (empty for linked page title) 3 +`description` Link description (empty for blank description) 4 +`caption` Link domain (empty for linked page domain) 5 +=============== =============================================== ====== + +When it says ``"empty for X"`` it means that you can disable the default +PokeAlarm value setting that parameter to ``""`` in your ``alarms.json`` file. +In that case Facebook will use the link information to fill that field in the +publication. + +For example if you have ``link`` as a google maps link and you disable the +``image`` parameter setting it to ``""``, it will be a minimap image of that +coordinates. + +``monsters`` default values: + +=============== =============================================== +Parameters Default +=============== =============================================== +`message` ``A wild has appeared!`` +`image` +`link` ```` +`name` ```` +`description` ``Available until <24h_time> ()`` +`caption` None +=============== =============================================== + +``stops`` default values: + +=============== =============================================== +Parameters Default +=============== =============================================== +`message` ``Someone has placed a lure on a Pokestop!`` +`image` +`link` ```` +`name` ``Lured Pokestop`` +`description` ``Lure will expire at <24h_time> ()`` +`caption` None +=============== =============================================== + +``gyms`` default values: + +=============== ===================================== +Parameters Default +=============== ===================================== +`message` ``A Team gym has fallen!`` +`image` +`link` ```` +`name` `` gym fallen`` +`description` ``It is now controlled by `` +`caption` None +=============== ===================================== + +``eggs`` default values: + +============== ======================================================= +Parameters Default +============== ======================================================= +`message` ``A level raid is upcoming!`` +`image` +`link` ```` +`name` ``Egg`` +`description` ``A level raid will hatch at <24h_hatch_time> + ().`` +`caption` None +============== ======================================================= + +``raids`` default values: + +=============== ======================================================= +Parameters Default +=============== ======================================================= +`message` ``Level raid available against !`` +`image` +`link` ```` +`name` ``Raid`` +`description` ``The raid is available until <24h_raid_end> + ().`` +`caption` None +=============== ======================================================= + + +Example: Alarm Configuration Using Optional Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: json + + { + "facebook_alarm":{ + "active":true, + "type":"facebook_page", + "page_access_token":"YOUR_PAGE_ACCESS_TOKEN", + "startup_message":false, + "monsters":{ + "message":" available. / (% - //)", + "image*":"/_.png", + "link":"", + "description":"Address:
", + "name":"" + }, + "stops":{ + "message":"Someone has placed a lure on a Pokestop! Lure will expire at <24h_time> ().", + "image*":"/ready.png", + "description":"Address:
", + "link":"", + "name":"" + }, + "gyms":{ + "message":"A Team gym has fallen! It is now controlled by .", + "image*":"/.png", + "link":"", + "name":"", + "description":"Address:
" + }, + "eggs":{ + "message":"A level raid is upcoming!", + "image*":"/.png", + "link":"", + "name":"Egg", + "description":"A level raid will hatch at <24h_hatch_time> ()." + }, + "raids":{ + "message":"Level raid available against !", + "image*":"/_000.png", + "link":"", + "name":"Raid", + "description":"The raid is available until <24h_raid_end> ()." + } + } + } + +.. note:: + \*THESE LINES ARE USED TO OVERRIDE DEFAULT VALUES. IF YOU DO NOT WISH + TO USE CUSTOM IMAGES, DO NOT ADD THESE LINES TO YOUR ALARMS.JSON. + + The above code is to be inserted into the alarms section of + alarms.json. It does not represent the entire alarms.json file. + + +How to get a Permanent Facebook Page Token +------------------------------------- + +Use the `Graph API Explorer `_ +for all of these steps except where otherwise stated. + +**0. Create Facebook App** + +**If you already have an app**, skip to step 1. + +1. Go to `My Apps `_. +2. Click ``+ Add a New App``. +3. Setup a website app. +4. Go to App Review of your new app and make sure your app is made Public. + +**1. Get User Short-Lived Access Token** + +1. Go to the `Graph API Explorer `_. +2. Select the application you want to get the access token for by clicking on + the ``Graph API Explorer`` dropdown near the top right. +3. Click ``Get Token`` dropdown and choose ``Get User Access Token``. +4. In the pop-up, under the ``Events, Groups & Pages`` section, check + ``manage_pages`` and ``publish_pages``. +5. Click ``Get Access Token``. +6. Grant access from a Facebook account that has access to manage the target + page. Note that if this user loses access the final, never-expiring access + token will likely stop working. + +Token that appears in the ``Access Token`` field is your short-lived access token. + +**2. Generate Long-Lived Access Token** + +Following `these instructions `_ +from the Facebook docs, make a GET request to + +``https://graph.facebook.com/v2.2/oauth/access_token?grant_type=fb_exchange_token&client_id={app_id}&client_secret={app_secret}&fb_exchange_token={short_lived_token}`` + +entering in your app's ID and secret, generated from step 0, and the +short-lived token, generated in the previous step. Be sure to remove the curly +braces ``{}`` when replacing values. + +You **cannot use the Graph API Explorer**. For some reason it gets stuck on +this request. I think it's because the response isn't JSON, but a query string. +Since it's a GET request, you can just go to the URL in your browser. + +The response should look like this: + +``access_token=ABC123&expires=5182959`` + +``ABC123`` will be your long-lived access token. You can put it into the +`Access Token Debugger `_ +to verify. +Under ``Expires`` it should have something like ``2 months``. + +**3. Get User ID** + +Using the long-lived access token, make a GET request to + +``https://graph.facebook.com/v2.2/me?access_token={long_lived_access_token}`` + +Be sure to remove the curly braces ``{}`` when replacing values. The **id** field +is your account ID. You'll need it for the next step. + +**4. Get Permanent Page Access Token** + +Make a GET request to + +``https://graph.facebook.com/v2.2/{account_id}/accounts?access_token={long_lived_access_token}`` + +Be sure to remove the curly braces ``{}`` when replacing values. The JSON +response should have a **data** field under which is an array of items the user +has access to. Find the item for the page you want the permanent access token +from. The **access_token** field should have your permanent access token. Copy +it and test it in the `Access Token Debugger `_. +Under ``Expires`` it should say ``Never``. diff --git a/docs/configuration/alarms/index.rst b/docs/configuration/alarms/index.rst index cf5a8f703..19b22c873 100644 --- a/docs/configuration/alarms/index.rst +++ b/docs/configuration/alarms/index.rst @@ -2,13 +2,13 @@ Alarms ======= .. contents:: Table of Contents - :depth: 2 + :depth: 1 :local: Prerequisites ------------------------------------- -This pages assumes the following: +This guide assumes: + You understand how :doc:`../events/index` and :doc:`../filters/index` work. + You understand what how :ref:`DTS ` work. @@ -23,21 +23,23 @@ Introduction An **Alarm** object describes where and how PA is going to send a notification once it has been properly triggered. When an Event passes a Filter, it is passed on to the Alarms to trigger notifications. Each Alarm represents settings for -exactly a notification will be sent: which service, what text, what images, and +exactly a notification will be sent: which service, what text, what images, and more. .. note:: By default, PA will trigger every Alarm when an Event passes a Filter. You can override this behavior by using the advanced - :doc:`../Rules-Overview` feature. + :doc:`../rules-overview` feature. There are several different types of Alarms, each representing a different type of service: -.. toctree:: - :maxdepth: 1 - :glob: - - * ++ :doc:`discord` ++ :doc:`facebook-pages` ++ :doc:`pushbullet` ++ :doc:`slack` ++ :doc:`telegram` ++ :doc:`twilio` ++ :doc:`twitter` .. note:: It is valid to have multiple Alarms with the same type - a different Alarm could represent a different channel or a specialized @@ -49,16 +51,16 @@ Creating an Alarm Each Alarm is containing several key-value a *named* JSON Object containing several key-value pairs called *alarm parameters*. Some parameters are -_required_ for each alarm, and some are _optional_ parameters. In the case of +**required** for each alarm, and some are **optional** parameters. In the case of optional parameters, default values are generally provided when they aren't specified. For example, a basic Discord alarm looks like this: .. code-block:: json - "my-discord-alarm": { - "active": true, - "type": "discord", - "webhook_url": "YOUR_WEBHOOK_URL" + "my-discord-alarm":{ + "active":true, + "type":"discord", + "webhook_url":"YOUR_WEBHOOK_URL" } The available parameters are different for every type of Alarm - make sure to @@ -76,42 +78,44 @@ that uses alarm using alert level parameters: .. code-block:: json - "my-discord-alarm": { - "active": true, - "type": "discord", - "webhook_url": "DEFAULT_CHANNEL_URL", - "monsters": { - "webhook_url": "MONSTER_CHANNEL_URL" - }, - "raids": { - "webhook_url": "RAIDS_CHANNEL_URL" - } + "my-discord-alarm":{ + "active":true, + "type":"discord", + "webhook_url":"DEFAULT_CHANNEL_URL", + "monsters":{ + "webhook_url":"MONSTER_CHANNEL_URL" + }, + "raids":{ + "webhook_url":"RAIDS_CHANNEL_URL" + } } + In the above example, any *alert level* parameters not set will default to the *alarm level* parameters - this means "stops", "gyms", and "eggs" will all be -diverted to the channel at `"DEFAULT_CHANNEL_URL"`. +diverted to the channel at ``"DEFAULT_CHANNEL_URL"``. Additionally, are also several *alert level* parameters that can't be set at the -alarm level. For example, "body" can _only_ be set at the alert level in +alarm level. For example, "body" can **only** be set at the alert level in Discord: .. code-block:: json - "my-discord-alarm": { - "active": true, - "type": "discord", - "webhook_url": "DEFAULT_CHANNEL_URL", - "monsters": { - "webhook_url": "MONSTER_CHANNEL_URL", - "body": "This is a monster event!" - }, - "raids": { - "webhook_url": "RAIDS_CHANNEL_URL", - "body": "This is a raid event!" - } + "my-discord-alarm":{ + "active":true, + "type":"discord", + "webhook_url":"DEFAULT_CHANNEL_URL", + "monsters":{ + "webhook_url":"MONSTER_CHANNEL_URL", + "body":"This is a monster event!" + }, + "raids":{ + "webhook_url":"RAIDS_CHANNEL_URL", + "body":"This is a raid event!" + } } + Finally, you can use :ref:`DTS ` to customize most parameters based on the event. This can be used for a variety of reasons: specializing the message, customizing the channel, or even inserting your own images. Check out @@ -123,8 +127,8 @@ Alarms File An *alarms file* (sometimes referred to as an 'alarms.json') is a file containing then Alarms that PA uses. By default, PA loads from the -`alarms.json` located in the base folder of the project. See the -:doc:`../Server-Settings` page for instructions on specifying the file by a +``alarms.json`` located in the base folder of the project. See the +:doc:`../server-settings` page for instructions on specifying the file by a different name. This file must contain a single JSON object to load successfully: @@ -140,20 +144,20 @@ something like this: .. code-block:: json { - "my-first-alarm": { - "active": true, - "type": "discord", - "webhook_url": "YOUR_WEBHOOK_URL" + "my-first-alarm":{ + "active":true, + "type":"discord", + "webhook_url":"YOUR_WEBHOOK_URL" }, - "my-second-alarm": { - "active": true, - "type": "slack", - "api_key": "YOUR_API_KEY", - "channel": "general" + "my-second-alarm":{ + "active":true, + "type":"slack", + "api_key":"YOUR_API_KEY", + "channel":"general" }, - "my-third-alarm": { - "active": true, - "type": "discord", - "webhook_url": "YOUR_WEBHOOK_URL" + "my-third-alarm":{ + "active":true, + "type":"discord", + "webhook_url":"YOUR_WEBHOOK_URL" } } diff --git a/docs/configuration/alarms/pushbullet.rst b/docs/configuration/alarms/pushbullet.rst new file mode 100644 index 000000000..655bf4d75 --- /dev/null +++ b/docs/configuration/alarms/pushbullet.rst @@ -0,0 +1,157 @@ +Pushbullet +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + + +Prerequisites +------------------------------------- + +This guide assumes + ++ You are familiar with `JSON formatting `_. ++ You have read and understood the :doc:`index` wiki. ++ You are comfortable with the layout of ``alarms.json``. ++ You are using the latest version of PokeAlarm. + +Please familiarize yourself with all of the above before proceeding. + + +Introduction +------------------------------------- + + +PokeAlarm offers the following for Pushbullet: + ++ Notifications to multiple Pushbullet channels ++ Customizable Google Map image of the pokemon, gym, pokestop, egg and/or raid location ++ Personalized notifications via :doc:`../events/index` + +Basic Config +------------------------------------- + + +Required Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +These `alarm.json` parameters are required to enable the Pushbullet alarm service: + +=============== ===================================== +Parameters Description +=============== ===================================== +`type` Must be ``"pushbullet"`` +`active` ``true`` for alarm to be active +`api_key` Your Pushbullet API key +=============== ===================================== + + +Example: Basic Alarm Configuration using Required Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Below is how a basic Pushbullet alarm configuration would appear in ``alarms.json``. + +.. code-block:: json + + { + "active":true, + "type":"pushbullet", + "api_key":"YOUR_API_KEY" + } + +.. note:: + The above code is to be inserted into the alarms section of + alarms.json. It does not represent the entire alarms.json file. + + +Advanced Config +------------------------------------- + +Optional Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In addition to the required parameters, several ``alarms.json`` optional +parameters are available to personalize your notifications. Below is an +example of these optional parameters and how they are incorporated into a +functional alarm layout. + +These optional parameters are entered at the same level as ``"type":"pushbullet"``. + ++-------------------+-----------------------------------------------+----------+ +| Parameters | Description | Default | ++-------------------+-----------------------------------------------+----------+ +| `startup_message` | Confirmation post when PokeAlarm initialized | ``true`` | ++-------------------+-----------------------------------------------+----------+ + +These optional parameters below are applicable to the ``monsters``, ``stops``, +``gyms``, ``eggs``, and ``raids`` sections of the JSON file. + +============= ========================================= =========================================== +Parameters Description Default +============= ========================================= =========================================== +`channel` Channel tag of the target channel Sends to all devices +`title` Notification title attached to the push ``A wild has appeared!`` +`url` Link to be attached to the push ```` +`body` Message attached to the push ``Available until <24h_time> ().`` +============= ========================================= =========================================== + + +Example: Alarm Configuration Using Optional Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: json + + { + "pushbullet_alarm":{ + "active":true, + "type":"pushbullet", + "api_key":"YOUR_API_KEY", + "channel":"DEFAULT_CHANNEL", + "monsters":{ + "title":"A wild has appeared!", + "url":"", + "body":"Available until <24h_time> ().", + "channel":"OVERRIDES_DEFAULT_CHANNEL" + }, + "stops":{ + "title":"Someone has placed a lure on a Pokestop!", + "url":"", + "body":"Lure will expire at <24h_time> ().", + "channel":"OVERRIDES_DEFAULT_CHANNEL" + }, + "gyms":{ + "title":"A Team gym has fallen!", + "url":"", + "body":"It is now controlled by .", + "channel":"OVERRIDES_DEFAULT_CHANNEL" + }, + "eggs": { + "title":"A level raid is incoming!", + "url":"", + "body":"The egg will hatch <24h_hatch_time> ().", + "channel":"OVERRIDES_DEFAULT_CHANNEL" + }, + "raids":{ + "title":"Level raid is available against !", + "url":"", + "body":"The raid is available until <24h_raid_end> ()." + } + } + } + +.. note:: + The above code is to be inserted into the alarms section of + alarms.json. It does not represent the entire alarms.json file. + + +How to get a Pushbullet API Key +------------------------------------- + +1. Go to `Pushbullet `_ and click one of the + ``Sign up`` options. + +2. In the top right corner, click on the letter and select ``My Account``. + +3. Scroll down to ``Create Access Token``. Copy this token and place it in + ``api_key`` parameter. diff --git a/docs/configuration/alarms/slack.rst b/docs/configuration/alarms/slack.rst new file mode 100644 index 000000000..7b8b0d0b2 --- /dev/null +++ b/docs/configuration/alarms/slack.rst @@ -0,0 +1,258 @@ +Slack +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + + +Prerequisites +------------------------------------- + +This guide assumes + ++ You are familiar with `JSON formatting `_. ++ You have read and understood the :doc:`index` wiki. ++ You are comfortable with the layout of ``alarms.json``. ++ You are using the latest version of PokeAlarm. + +Please familiarize yourself with all of the above before proceeding. + + +Introduction +------------------------------------- + +.. image:: ../../images/slack_example.png + +**Slack** is a cloud-based team collaboration tool that is available on +Windows, Mac OS X, Linux, iOS, Android, and Windows Phone. Slack offers a lot +of IRC-like features: persistent chat rooms (channels) organized by topic, as +well as private groups and direct messaging. All content inside Slack is +searchable, including files, conversations, and people. + +PokeAlarm offers the following for Slack: + ++ Custom username for posting ++ High resolution icons for pokemon, gym, pokestop, egg and/or raid notifications ++ Notifications to multiple Slack channels and/or teams ++ Customizable Google Map image of the pokemon, gym, pokestop, egg and/or raid location ++ Personalized notifications via :doc:`../events/index` + + +Basic Config +------------------------------------- + + +Required Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +These parameters below are required to enable the Slack alarm service: + +============ =============== ====================================== +Parameters Default Description +============ =============== ====================================== +`type` ``"slack"`` Name of service +`active` ``false`` ``true`` for alarm to be active +`api_key` Your Slack API key +`channel` ``"general"`` Default channel to post notifications +============ =============== ====================================== + + +Example: Basic Alarm Configuration using Required Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: json + + { + "active":true, + "type":"slack", + "api_key":"YOUR_API_KEY", + "channel":"general" + } + +.. note:: + The above code is to be inserted into the alarms section of + alarms.json. It does not represent the entire alarms.json file. + + +Advanced Config +------------------------------------- + +Optional Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In addition to the 3 required parameters, several optional parameters are +available to personalize your Slack notifications. Below is an example of +these optional parameters and how they are incorporated into a functional +alarm layout for Slack. + +These optional parameters are entered at the same level as ``"type":"slack"``. + ++-------------------+-----------------------------------------------+----------+ +| Parameters | Description | Default | ++-------------------+-----------------------------------------------+----------+ +| `startup_message` | Confirmation post when PokeAlarm initialized | ``true`` | ++-------------------+-----------------------------------------------+----------+ + +These optional parameters below are applicable to the ``monsters``, ``stops``, +``gyms``, ``eggs``, and ``raids`` sections of the JSON file. + +============= ============================================ =========================================== +Parameters Description Default +============= ============================================ =========================================== +`channel` Send messages to this channel ``#general`` +`username` Username the bot should post the message ```` +`icon_url` URL path to pokemon icon +`title` Notification text to begin the message ``A wild has appeared!`` +`url` Link to be added to notification text ```` +`body` Additional text to be added to the message ``Available until <24h_time> ().`` +`map` Specify a json object to describe the map See Mini Map Configuration for more details +============= ============================================ =========================================== + +.. note:: + Nidorans will be ``nidoranf`` or ``nidoranm``, Farfetch'd will be + ``farfetchd``, and Mr. Mime will be ``mrmime``. + Channels that do not exist (channels cannot be created by bots) will + default to general instead. + + +Example: Alarm Configuration Using Optional Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: json + + { + "slack_alarm":{ + "active":true, + "type":"slack", + "api_key":"YOUR_API_KEY", + "channel":"general", + "startup_message":true, + "monsters":{ + "channel":"general", + "username":"", + "icon_url*":"/_.png", + "title":"A wild has appeared!", + "url":"", + "body":"Available until <24h_time> ().", + "map":{ + "enabled":true, + "width":"250", + "height":"125", + "maptype":"roadmap", + "zoom":"15" + } + }, + "stops":{ + "channel":"general", + "username":"Pokestop", + "icon_url*":"/ready.png", + "title":"Someone has placed a lure on a Pokestop!", + "url":"", + "body":"Lure will expire at <24h_time> ()." + }, + "gyms":{ + "channel":"general", + "username":" Gym Alerts", + "icon_url*":"/.png", + "title":"A Team gym has fallen!", + "url":"", + "body":"It is now controlled by ." + }, + "eggs":{ + "username":"Egg", + "icon_url*":"/.png", + "title":"A level raid is incoming!", + "url":"", + "body":"The egg will hatch <24h_hatch_time> ()." + }, + "raids":{ + "username":" Raid", + "icon_url*":"/_000.png", + "title":"Level raid is available against !", + "url":"", + "body":"The raid is available until <24h_raid_end> ()." + } + } + } + + +.. note:: + \*THESE LINES ARE USED TO OVERRIDE DEFAULT VALUES. IF YOU DO NOT + WISH TO USE CUSTOM IMAGES, DO NOT ADD THESE LINES TO YOUR ALARMS.JSON. + + The above code is to be inserted into the alarms section of + alarms.json. It does not represent the entire alarms.json file. + + +Mini Map Configuration +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. image:: ../../images/minimap.png + +You can enable a small Google Static Maps image after your post, showing the +location of the alarmed pokemon, gym, pokestop, egg or raid. This is done by +adding the `map` parameter at the Alarm level (which will apply maps for any +notification), or individually to the ``monsters``, ``stops``, ``gyms``, ``eggs``, or +``raids`` sections of your alarm. + +Below is an example of enabling the mini map for pokemon: + +.. code-block:: json + + "monsters":{ + "channel":"general", + "username":"", + "title":"A wild has appeared!", + "url":"", + "body":"Available until <24h_time> ().", + "map":{ + "enabled":true, + "width":"250", + "height":"125", + "maptype":"roadmap", + "zoom":"15" + } + }, + +=============== ========================================== ============ +Parameters Description Default +=============== ========================================== ============ +`enabled` Turns the map on or off ``true`` +`width` Width of the map ``"250"`` px +`height` Height of the map ``"150"`` px +`maptype` Link to be added to notification text ``"roadmap"`` +`zoom` Specifies the zoom of the map ``"15"`` +=============== ========================================== ============ + + +Formatting alarms text +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Here is a basic guide to apply custom styles to alarm text: + +================================ ============================= +Style Example +================================ ============================= +`_italics_` *italics* +`*bold*` **bold** +`_*bold italics*_` :boltitalic:`bold italics` +`~strikethrough~` :strike:`strikethrough` +================================ ============================= + +You can see other options in the official Slack information about formatting +text `here `_. + + +How to get a Slack API Key +------------------------------------- + +1. Visit `slack.com `_. Enter your email address and + click ``Create your team``. Follow the instructions to setup and activate + your account. + +2. Go to the `create a bot page `_. Enter + a username and click create. + +3. Copy the API Token given. Fill out any more information you want, and click + ``Save Integration``. diff --git a/docs/configuration/alarms/telegram.rst b/docs/configuration/alarms/telegram.rst new file mode 100644 index 000000000..4bd9e69d1 --- /dev/null +++ b/docs/configuration/alarms/telegram.rst @@ -0,0 +1,228 @@ +Telegram +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + + +Prerequisites +------------------------------------- + +This guide assumes + ++ You are familiar with `JSON formatting `_. ++ You have read and understood the :doc:`index` wiki. ++ You are comfortable with the layout of ``alarms.json``. ++ You are using the latest version of PokeAlarm. + +Please familiarize yourself with all of the above before proceeding. + + +Introduction +------------------------------------- + +.. image:: ../../images/telegram.png + +**Telegram** is a cloud-based instant messaging service. Telegram clients exist +for both mobile (Android, iOS, Windows Phone, Ubuntu Touch) and desktop systems +(Windows, OS X, Linux). Users can send messages and exchange photos, videos, +stickers and files of any type. + +PokeAlarm offers the following for Telegram: + ++ Notifications to multiple Telegram channels ++ Customizable Google Map image of the pokemon, gym, pokestop, egg and/or raid location ++ Personalized notifications via :doc:`../events/index` + + +Basic Config +------------------------------------- + + +Required Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +These ``alarm.json`` parameters are required to enable the Telegram alarm service: + +=============== =================================== +Parameters Description +=============== =================================== +`type` Must be ``"telegram"`` +`active` ``true`` for alarm to be active +`bot_token` Your Bot Token from Telegram +`chat_id` Your chat's id from Telegram +=============== =================================== + + +Example: Basic Alarm Configuration using Required Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Below is how a basic Telegram alarm configuration would appear in +``alarms.json``. Note that this is **not** the entire ``alarms.json``, but only +the section pertaining to the alarm portion of the JSON file. + +.. code-block:: json + + { + "active":true, + "type":"telegram", + "bot_token":"YOUR_BOT_TOKEN", + "chat_id":"YOUR_CHAT_ID" + } + + +Advanced Config +------------------------------------- + +Optional Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In addition to the required parameters, several ``alarms.json`` optional +parameters are available to personalize your notifications. Below is an example +of these optional parameters and how they are incorporated into a functional +alarm layout. + +Parameters at the alarm level will be the default to alert-level parameters. + +================= ====================================================== ============ +Parameters Description Default +================= ====================================================== ============ +`map` Sends minimap after main message. ``true`` +`map_notify` Disables map notifications. Set to ``false`` if you + are experiencing notification issues on Android ``false`` +`venue` Sends location in main message.* ``false`` +`venue_notify` Disables venue notifications. Set to ``false`` if you + are experiencing notification issues on Android ``true`` +`message_notify` Enables notifications messages ``true`` +`sticker` Sends pokemon images as stickers in the message ``true`` +`sticker_notify` Disables sticker notifications. Set to ``false`` + if you are experiencing notification issues on Android ``false`` +`sticker_url` Url to be used for the sticker. Must be .webp file. +`max_attempts` Max attempts to send for each message. ``"3"`` +`web_preview` Enables web preview for links in message. ``false`` +`startup_message` Confirmation post when PokeAlarm initialized ``true`` +================= ====================================================== ============ + +These optional parameters below are applicable to the ``monsters``, ``stops``, +``gyms``, ``eggs``, and ``raids`` sections of the JSON file. These parameters +override the alarm-level settings for this alert. + +================ ========================================= ============================ +Parameters Description Default +================ ========================================= ============================ +`message` Text for the message ``"*A wild has + appeared!*\nAvailable until + <24h_time> ()."`` +`map` Sends minimap after main message. ``true`` +`map_notify` Disables map notifications. Set to + ``false`` if you are experiencing + notification issues on Android ``false`` +`venue` Sends location in main message.* ``false`` +`venue_notify` Disables venue notifications. Set to + ``false`` if you are experiencing + notification issues on Android ``true`` +`sticker` Sends images as stickers in the message ``true`` +`sticker_notify` Disables sticker notifications. Set to + ``false`` if you are experiencing + notification issues on Android ``false`` +================ ========================================= ============================ + +.. note:: + \*if you use ``venue``, keep in mind that the markdown in your alarms + will be ignored because of a limitation in the Telegram API. + + +Example: Alarm Configuration Using Optional Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Below is how an advanced alarm configuration would appear in ``alarms.json``. +Note that this is **not** the entire ``alarms.json``, but only the section +pertaining to the alarm portion of the JSON file. + +.. code-block:: json + + { + "telegram_alarm":{ + "active":true, + "type":"telegram", + "bot_token":"YOUR_BOT_TOKEN", + "chat_id":"YOUR_CHAT_ID", + "map_notify":false, + "startup_message":false, + "sticker":true, + "monsters":{ + "chat_id":"OVERRIDES_DEFAULT_CHANNEL", + "message":"*A wild has appeared!*\nAvailable until <24h_time> ().", + "map":true + }, + "stops":{ + "chat_id":"OVERRIDES_DEFAULT_CHANNEL", + "message":"*Someone has placed a lure on a Pokestop!*\nLure will expire at <24h_time> ().", + "map":true + }, + "gyms":{ + "chat_id":"OVERRIDES_DEFAULT_CHANNEL", + "message":"*A Team gym has fallen!*\nIt is now controlled by .", + "map":true + }, + "eggs":{ + "chat_id":"OVERRIDES_DEFAULT_CHANNEL", + "message":"*A level raid is incoming!*\nThe egg will hatch <24h_hatch_time> ().", + "map":true + }, + "raids":{ + "chat_id":"OVERRIDES_DEFAULT_CHANNEL", + "message":"*A raid is available against !*\nThe raid is available until <24h_raid_end> ().", + "map":true + } + } + } + + +Formatting alarms text +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Here is a basic guide to apply custom styles to alarm text: + +============================= ============================= +Style Example +============================= ============================= +`_italic text_` *italics* +`*bold text*` **bold** +`_*bold italics*_` :boltitalic:`bold italics` +============================= ============================= + +You can see other options in the official Telegram information about +formatting text `here `_. + + +How to get a Telegram API Key +------------------------------------- + +1. Go to `Telegram Web Client `_. Enter your + phone number and follow the instructions to create your account. + +2. Talk to the `BotFather `_ to create a new bot. + Use the ``/newbot`` command and follow his instructions. It will give you an + API Token when you are finished. + +3. Start a conversation with your bot. In the top left click on the menu bars, + then click create group. Type in the name of the bot you previously created, + then click on it when it appears below. Then click next. Type any message to + your bot. + +4. Enter your bot_token in to replace the ```` in the following + url ``https://api.telegram.org/bot/getUpdates``. Then go to + it, and find the section that says ``"chat":{"id":``. This number + is your chat_id. + + +How to Create a Custom Channel +------------------------------------- + +1. Create a Public Channel (Currently doesn't work from the web app). + +2. Add your bot as an administrator for the channel. + +3. The chat_id for your bot will be `@channel_url`. diff --git a/docs/configuration/alarms/twilio.rst b/docs/configuration/alarms/twilio.rst new file mode 100644 index 000000000..d19cefa46 --- /dev/null +++ b/docs/configuration/alarms/twilio.rst @@ -0,0 +1,221 @@ +Twilio +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + + +Prerequisites +------------------------------------- + +This guide assumes + ++ You are familiar with `JSON formatting `_. ++ You have read and understood the :doc:`index` wiki. ++ You are comfortable with the layout of ``alarms.json``. ++ You are using the latest version of PokeAlarm. + +Please familiarize yourself with all of the above before proceeding. + + +Introduction +------------------------------------- + +**Twilio** allows software developers to programmatically make and receive +phone calls and send and receive text messages using its web service APIs. + +PokeAlarm offers the following for Twilio: + ++ Personalized notifications via :doc:`../events/index` + + +Basic Config +------------------------------------- + +These ``alarms.json`` parameters are required to enable the alarm service: + + +Required Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +=============== ====================================== +Parameters Description +=============== ====================================== +`type` Must be ``"twilio"`` +`active` ``true`` for alarm to be active +`account_sid` Your Account SID from Twilio +`auth_token` Your Auth Token from Twilio +`from_number` Your Twilio number to send from +`to_number` Your number to receive texts from +=============== ====================================== + + +Example: Basic Alarm Configuration using Required Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: json + + { + "active":true, + "type":"twilio", + "account_sid":"YOUR_API_KEY", + "auth_token":"YOUR_AUTH_TOKEN", + "from_number":"YOUR_FROM_NUM", + "to_number":"YOUR_TO_NUM" + } + +.. note:: + The above code is to be inserted into the alarms section of + alarms.json. It does not represent the entire alarms.json file. + + +Advanced Config +------------------------------------- + +In addition to the above required parameters, several optional parameters +are available to personalize your notifications. + + +Multiple Destinations +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The ``"to_number"`` field can accept either a single destination phone number +or an array of phone numbers to send SMS messages to. This allows for +sending SMS alerts to multiple destinations. + +Below is an example of using an array for the destination number(s) in the +alarm configuration. + +.. code-block:: json + + { + "active":true, + "type":"twilio", + "account_sid":"YOUR_API_KEY", + "auth_token":"YOUR_AUTH_TOKEN", + "from_number":"YOUR_FROM_NUM", + "to_number":["YOUR_1ST_TO_NUM","YOUR_2ND_TO_NUM","YOUR_3RD_TO_NUM"] + } + + +Optional Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +These optional parameters below are applicable to the ``monsters``, ``stops``, +``gyms``, ``eggs``, and ``raids`` sections of the JSON file. + +``monsters`` default values: + +=========== ================================= =================================== +Parameters Description Default +=========== ================================= =================================== +`message` Text message for pokemon updates ``"A wild has appeared! + Available until <24h_time> + ()."`` +=========== ================================= =================================== + +``stops`` default values: + +=========== ================================= =================================== +Parameters Description Default +=========== ================================= =================================== +`message` Text message for pokestop updates ``"Someone has placed a lure on a + Pokestop! Lure will expire + at <24h_time> ()."`` +=========== ================================= =================================== + +``gyms`` default values: + +=========== ================================= =================================== +Parameters Description Default +=========== ================================= =================================== +`message` Text message for gym updates ``"A Team gym has fallen! + It is now controlled by + ."`` +=========== ================================= =================================== + +``eggs`` default values: + +=========== ================================= ===================================== +Parameters Description Default +=========== ================================= ===================================== +`message` Text message for egg updates ``"A level raid is incoming! + Egg hatches <24h_hatch_time> + ()."`` +=========== ================================= ===================================== + +``raids`` default values: + +=========== ================================= ===================================== +Parameters Description Default +=========== ================================= ===================================== +`message` Text message for raid updates ``"Level raid against + ! Available until + <24h_raid_end> ()."`` +=========== ================================= ===================================== + + +Example: Alarm Configuration Using Optional Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Below is an example of these optional parameters and how they are incorporated +into a functional alarm layout. + +.. code-block:: json + + { + "twilio_alarm":{ + "active":true, + "type":"twilio", + "account_sid":"YOUR_API_KEY", + "auth_token":"YOUR_AUTH_TOKEN", + "from_number":"YOUR_FROM_NUM", + "to_number":"YOUR_TO_NUM", + "monsters":{ + "from_number":"YOUR_FROM_NUM", + "to_number":"YOUR_TO_NUM", + "message":"A wild has appeared! Available until <24h_time> ()." + }, + "stops":{ + "from_number":"YOUR_FROM_NUM", + "to_number":"YOUR_TO_NUM", + "message":"Someone has placed a lure on a Pokestop! Lure will expire at <24h_time> ()." + }, + "gyms":{ + "from_number":"YOUR_FROM_NUM", + "to_number":"YOUR_TO_NUM", + "message":"A Team gym has fallen! It is now controlled by ." + }, + "eggs":{ + "message":"A level raid is incoming! Egg hatches <24h_hatch_time> ()." + }, + "raids":{ + "message":"Level raid against ! Available until <24h_raid_end> ()." + } + } + } + + +.. note:: + The above code is to be inserted into the alarms section of + alarms.json. It does not represent the entire alarms.json file. + + +How to get the Account SID, Auth Token, and Twilio Number +------------------------------------- + +1. Go to `Twilio `_ and click ``Get a free API key``. + Fill out the following form, and enter your phone number to verify your + account. + +2. On the left hand side, click the Home Button and then click Dashboard. + The **Account SID** and **Auth Token** will be listed. To reveal the Auth + Token, click on the lock next to it. + +3. Scroll down and click on ``# Phone Numbers``. Then click ``Get Started`` + to get your free number. + +4. If you wish to text to different numbers, you need to register each before + you are allowed to message them. This can be done from the ``Verified Caller + ID's`` page. diff --git a/docs/configuration/alarms/twitter.rst b/docs/configuration/alarms/twitter.rst new file mode 100644 index 000000000..6c5903c48 --- /dev/null +++ b/docs/configuration/alarms/twitter.rst @@ -0,0 +1,173 @@ +Twitter +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + + +Prerequisites +------------------------------------- + +This guide assumes + ++ You are familiar with `JSON formatting `_. ++ You have read and understood the :doc:`index` wiki. ++ You are comfortable with the layout of ``alarms.json``. ++ You are using the latest version of PokeAlarm. + +Please familiarize yourself with all of the above before proceeding. + + +Introduction +------------------------------------- + +**Twitter** is an online social networking service that enables users to send +and read short 140-character messages called "tweets". Registered users can +read and post tweets, but those who are unregistered can only read them. Users +access Twitter through the website interface, SMS or mobile device app. + +PokeAlarm offers the following for Twitter: + ++ Personalized notifications via :doc:`../events/index` + +Basic Config +------------------------------------- + + +Required Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +These ``alarms.json`` parameters are required to enable the Twitter alarm service: + +================= ================================== +Parameters Description +================= ================================== +`type` Must be ``"twitter"`` +`active` ``true`` for alarm to be active +`access_token` Your twitter access token +`access_secret` Your twitter access secret +`consumer_key` Your twitter consumer key +`consumer_secret` Your twitter consumer secret +================= ================================== + + +Example: Basic Alarm Configuration using Required Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: json + + { + "active":true, + "type":"twitter", + "access_token":"YOUR_ACCESS_TOKEN", + "access_secret":"YOUR_ACCESS_SECRET", + "consumer_key":"YOUR_CONSUMER_KEY", + "consumer_secret":"YOUR_CONSUMER_SECRET" + } + +.. note:: + The above code is to be inserted into the alarms section of + `alarms.json`. It does not represent the entire `alarms.json` file. + + +Advanced Config +------------------------------------- + + +Optional Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In addition to the required parameters, several ``alarms.json`` optional +parameters are available to personalize your notifications. Below is an +example of these optional parameters and how they are incorporated into a +functional alarm layout. + +These optional parameters are entered at the same level as ``"type":"twitter"``. + ++-------------------+-----------------------------------------------+----------+ +| Parameters | Description | Default | ++-------------------+-----------------------------------------------+----------+ +| `startup_message` | Confirmation post when PokeAlarm initialized | ``true`` | ++-------------------+-----------------------------------------------+----------+ + +These optional parameters below are applicable to the ``monsters``, ``stops``, +``gyms``, ``eggs``, and ``raids`` sections of the JSON file. + +============ ========================== ========================================== +Parameters Description Default +============ ========================== ========================================== +`status` Message to post as status ``"A wild has appeared! + Available until <24h_time> (). + "`` +============ ========================== ========================================== + + +Example: Alarm Configuration Using Optional Parameters +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: json + + { + "twitter_alarm":{ + "active":true, + "type":"twitter", + "access_token":"YOUR_ACCESS_TOKEN", + "access_secret":"YOUR_ACCESS_SECRET", + "consumer_key":"YOUR_CONSUMER_KEY", + "consumer_secret":"YOUR_CONSUMER_SECRET", + "monsters":{ + "status":"A wild has appeared! Available until <24h_time> (). " + }, + "stops":{ + "status":"Someone has placed a lure on a Pokestop! Lure will expire at <24h_time> (). " + }, + "gyms":{ + "status":"A Team gym has fallen! It is now controlled by . " + }, + "eggs":{ + "status":"Level raid incoming! Hatches at <24h_hatch_time> (). " + }, + "raids":{ + "status":"Raid against ! Available until <24h_raid_end> (). " + } + } + } + + +.. note:: + The above code is to be inserted into the alarms section of + ``alarms.json``. It does not represent the entire ``alarms.json`` file. + +For more information on text substitutions, please see the main configuration page. + + +How to get a Twitter API Key +------------------------------------- + +**Step 1: Create a Twitter account** + ++ Go to `Twitter's signup page `_. ++ Fill out all details, and **make sure to include your phone number**. This + is a requirement for remote access, and you will need that to make the Twitter + bot work. + +**Step 2: Create a Twitter app** + ++ Go to `apps.twitter.com `_ ++ Click ``Create New App`` button ++ Fill out the details on the form. You have to give your app a name, + description, and website. This can be a simple place holder like + http://www.example.com ++ Read the Developer Agreement, and check the box at the bottom if you agree. + Then click on the ``Create your Twitter application`` button. + +**Step 3: Keys and Access tokens** + ++ After creating your new app, you were redirected to its own page. If you + weren’t, go to `apps.twitter.com `_ and click on + your apps name. ++ On the app’s page, click on the ``Keys and Access Tokens`` page. ++ At the bottom of this page, click on the ‘Create my access token’ button. ++ Take note of **Consumer Key (API Key), Consumer Secret (API Secret), Access + Token, & Access Token Secret**. These are the are required in the Twitter Config. From 7d0114e300d05021d3ba9ebc848993dc0cef5c07 Mon Sep 17 00:00:00 2001 From: kvangent Date: Fri, 2 Mar 2018 17:40:24 -0800 Subject: [PATCH 53/79] Fix issue with gmaps sleep. --- PokeAlarm/LocationServices/GMaps.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PokeAlarm/LocationServices/GMaps.py b/PokeAlarm/LocationServices/GMaps.py index 928fe712c..e8cee8f3d 100644 --- a/PokeAlarm/LocationServices/GMaps.py +++ b/PokeAlarm/LocationServices/GMaps.py @@ -78,7 +78,7 @@ def _make_request(self, service, params=None): if len(self._window) == self._queries_per_second: # Calculate elapsed time since start of window elapsed_time = time.time() - self._window[0] - if elapsed_time > 1: + if elapsed_time < 1: # Sleep off the difference time.sleep(1 - elapsed_time) From 1edb3f6a0b28707d58e38acbed73bf86655ca845 Mon Sep 17 00:00:00 2001 From: kvangent Date: Fri, 2 Mar 2018 17:42:56 -0800 Subject: [PATCH 54/79] Remove extra line in RaidEvent. --- PokeAlarm/Events/RaidEvent.py | 1 - 1 file changed, 1 deletion(-) diff --git a/PokeAlarm/Events/RaidEvent.py b/PokeAlarm/Events/RaidEvent.py index 816be3730..ca149a612 100644 --- a/PokeAlarm/Events/RaidEvent.py +++ b/PokeAlarm/Events/RaidEvent.py @@ -82,7 +82,6 @@ def __init__(self, data): str, data.get('url'), Unknown.REGULAR) self.sponsor_id = check_for_none( int, data.get('sponsor'), Unknown.TINY) - self.is_sponsor = True if self.sponsor_id > 0 else False self.park = check_for_none( str, data.get('park'), Unknown.REGULAR) From c9bf9ad69ed5b717155f5baa7bb30a4f4595cc4c Mon Sep 17 00:00:00 2001 From: kvangent Date: Fri, 2 Mar 2018 17:49:23 -0800 Subject: [PATCH 55/79] Update monster events for RMs new standard. --- PokeAlarm/Events/MonEvent.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PokeAlarm/Events/MonEvent.py b/PokeAlarm/Events/MonEvent.py index 406fe12f2..7d88dc562 100644 --- a/PokeAlarm/Events/MonEvent.py +++ b/PokeAlarm/Events/MonEvent.py @@ -44,7 +44,8 @@ def __init__(self, data): self.weather_id = check_for_none( int, data.get('weather'), Unknown.TINY) self.boosted_weather_id = check_for_none( - int, data.get('boosted_weather'), 0) + int, data.get('boosted_weather') + or data.get('boosted_weather_condition'), 0) # Encounter Stats self.mon_lvl = check_for_none( From 2ab9ccc06f5563c6d22015ecf174723b6dc1b2b9 Mon Sep 17 00:00:00 2001 From: kvangent Date: Fri, 2 Mar 2018 20:33:16 -0800 Subject: [PATCH 56/79] RTD - fix index. --- docs/index.rst | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/docs/index.rst b/docs/index.rst index d33904d6f..cff02add1 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -16,7 +16,7 @@ know of any rare spawns or raids. .. toctree:: :titlesonly: :maxdepth: 1 - :caption: Getting Started + :caption: Initial Setup :glob: getting-started/installation @@ -25,13 +25,24 @@ know of any rare spawns or raids. .. toctree:: :titlesonly: :maxdepth: 1 - :caption: Configuration + :caption: Basic Configuration :glob: configuration/server-settings + configuration/events/index + configuration/filters/index + configuration/alarms/index + +.. toctree:: + :maxdepth: 1 + :caption: Advanced Configuration + + configuration/server-settings + configuration/managers - configuration/rules-overview configuration/geofences + configuration/rules-overview + .. toctree:: :titlesonly: From 3ad9a521b6ac4e29271fc8b5ff6862c13c91c079 Mon Sep 17 00:00:00 2001 From: kvangent Date: Fri, 2 Mar 2018 20:39:05 -0800 Subject: [PATCH 57/79] Added note to unfinished pages. --- docs/guides/bug-feedback.md | 19 +------------------ docs/guides/json-formatting.md | 19 +------------------ docs/guides/upgrade-tool.md | 19 +------------------ docs/miscellaneous/webhook-tester.md | 9 +-------- 4 files changed, 4 insertions(+), 62 deletions(-) diff --git a/docs/guides/bug-feedback.md b/docs/guides/bug-feedback.md index 12ce6efe4..adbabeab4 100644 --- a/docs/guides/bug-feedback.md +++ b/docs/guides/bug-feedback.md @@ -1,20 +1,3 @@ # Bug Reports / Feedback -## Overview - -This guide contains an overview to the different parts of configuring -and customizing PokeAlarm to fit your needs. - -* [Prerequisites](#prerequisites) -* [Goals](#goals) -* [Setting up an Alarm](#setting-up-an-alarm) -* [Setting up Filters](#setting-up-filters) - * [Monster Filters](#monster-filters) - * [Gym Filters](#gym-filters) - * [Raid Filters](#raid-filters) -* [Customizing Alert Text](#customizing-alert-text) -* [Advanced: Managers](#advanced-managers) -* [Advanced: Missing Info](#advanced-missing-info) -* [Advanced: Custom DTS](#advanced-custom-dts) - -## Prerequisites +.. note:: This page is still under construction! Check back later! diff --git a/docs/guides/json-formatting.md b/docs/guides/json-formatting.md index 53b02d71e..13d7a0a00 100644 --- a/docs/guides/json-formatting.md +++ b/docs/guides/json-formatting.md @@ -1,20 +1,3 @@ # JSON Formatting Help -## Overview - -This guide contains an overview to the different parts of configuring -and customizing PokeAlarm to fit your needs. - -* [Prerequisites](#prerequisites) -* [Goals](#goals) -* [Setting up an Alarm](#setting-up-an-alarm) -* [Setting up Filters](#setting-up-filters) - * [Monster Filters](#monster-filters) - * [Gym Filters](#gym-filters) - * [Raid Filters](#raid-filters) -* [Customizing Alert Text](#customizing-alert-text) -* [Advanced: Managers](#advanced-managers) -* [Advanced: Missing Info](#advanced-missing-info) -* [Advanced: Custom DTS](#advanced-custom-dts) - -## Prerequisites +.. note:: This page is still under construction! Check back later! diff --git a/docs/guides/upgrade-tool.md b/docs/guides/upgrade-tool.md index c8b04b457..7db76a3cc 100644 --- a/docs/guides/upgrade-tool.md +++ b/docs/guides/upgrade-tool.md @@ -1,20 +1,3 @@ # 3.5 -> 3.6 Alarm Upgrade Tool -## Overview - -This guide contains an overview to the different parts of configuring -and customizing PokeAlarm to fit your needs. - -* [Prerequisites](#prerequisites) -* [Goals](#goals) -* [Setting up an Alarm](#setting-up-an-alarm) -* [Setting up Filters](#setting-up-filters) - * [Monster Filters](#monster-filters) - * [Gym Filters](#gym-filters) - * [Raid Filters](#raid-filters) -* [Customizing Alert Text](#customizing-alert-text) -* [Advanced: Managers](#advanced-managers) -* [Advanced: Missing Info](#advanced-missing-info) -* [Advanced: Custom DTS](#advanced-custom-dts) - -## Prerequisites +.. note:: This page is still under construction! Check back later! diff --git a/docs/miscellaneous/webhook-tester.md b/docs/miscellaneous/webhook-tester.md index 27181cade..8140b1ce5 100644 --- a/docs/miscellaneous/webhook-tester.md +++ b/docs/miscellaneous/webhook-tester.md @@ -1,10 +1,3 @@ # Webhook Tester -## Overview - -* [Pokemon](#pokemon) -* [Pokestops](#pokestops) -* [Gyms](#gyms) - * [Gym-details Example](#gym-details-example) -* [Egg example](#egg-example) -* [Raid example](#raid-example) +.. note:: This page is still under construction! Check back later! From 51751aa57afa7f460322723a7ce20fdb80450f24 Mon Sep 17 00:00:00 2001 From: kvangent Date: Fri, 2 Mar 2018 21:04:38 -0800 Subject: [PATCH 58/79] RTD - Clean up sidebar. --- docs/configuration/alarms/index.rst | 17 ++++++++++------- docs/configuration/events/index.rst | 13 ++++++++----- docs/configuration/filters/index.rst | 14 +++++++++----- docs/index.rst | 11 ++--------- 4 files changed, 29 insertions(+), 26 deletions(-) diff --git a/docs/configuration/alarms/index.rst b/docs/configuration/alarms/index.rst index 19b22c873..ccd778256 100644 --- a/docs/configuration/alarms/index.rst +++ b/docs/configuration/alarms/index.rst @@ -33,13 +33,16 @@ more. There are several different types of Alarms, each representing a different type of service: -+ :doc:`discord` -+ :doc:`facebook-pages` -+ :doc:`pushbullet` -+ :doc:`slack` -+ :doc:`telegram` -+ :doc:`twilio` -+ :doc:`twitter` +.. toctree:: + :maxdepth: 1 + + discord + facebook-pages + pushbullet + slack + telegram + twilio + twitter .. note:: It is valid to have multiple Alarms with the same type - a different Alarm could represent a different channel or a specialized diff --git a/docs/configuration/events/index.rst b/docs/configuration/events/index.rst index a0ea1ff61..0b1dc2762 100644 --- a/docs/configuration/events/index.rst +++ b/docs/configuration/events/index.rst @@ -20,11 +20,14 @@ in the World. Events can be several different things - a new monster spawning, a gym changing teams, or a new raid appearing. There are 5 different categories for Events, each with different information: -+ :doc:`monster-events` -+ :doc:`stop-events` -+ :doc:`gym-events` -+ :doc:`egg-events` -+ :doc:`raid-events` +.. toctree:: + :maxdepth: 1 + + monster-eventss + stop-events + gym-events + egg-events + raid-events .. _events_dts: diff --git a/docs/configuration/filters/index.rst b/docs/configuration/filters/index.rst index bc967a0a6..159461ae4 100644 --- a/docs/configuration/filters/index.rst +++ b/docs/configuration/filters/index.rst @@ -28,11 +28,15 @@ When PA finds a matching Filter, it triggers a notification. There are 5 different types of Filters, each matching a category of Events: -+ :doc:`monster-filters` -+ :doc:`stop-filters` -+ :doc:`gym-filters` -+ :doc:`egg-filters` -+ :doc:`raid-filters` + +.. toctree:: + :maxdepth: 1 + + monster-filters + stop-filters + gym-filters + egg-filters + raid-filters Restrictions diff --git a/docs/index.rst b/docs/index.rst index cff02add1..0f49adcca 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -33,12 +33,11 @@ know of any rare spawns or raids. configuration/filters/index configuration/alarms/index + .. toctree:: :maxdepth: 1 :caption: Advanced Configuration - configuration/server-settings - configuration/managers configuration/geofences configuration/rules-overview @@ -55,6 +54,7 @@ know of any rare spawns or raids. 3.5 -> 3.6 Alarm Upgrade Tool Bug Reports / Feedback + .. toctree:: :titlesonly: :maxdepth: 1 @@ -70,13 +70,6 @@ know of any rare spawns or raids. Contributing -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - .. |discord| image:: https://discordapp.com/api/guilds/215181169761714177/widget.png?style=shield :target: https://discord.gg/S2BKC7p .. |patron| image:: https://img.shields.io/badge/Donate-Patron-orange.svg From 7db7d7a718c0e17c79205463c697249b43f185ea Mon Sep 17 00:00:00 2001 From: kvangent Date: Sat, 3 Mar 2018 07:19:16 -0800 Subject: [PATCH 59/79] Correct boosted_weather field name. --- PokeAlarm/Events/MonEvent.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PokeAlarm/Events/MonEvent.py b/PokeAlarm/Events/MonEvent.py index 7d88dc562..4685100be 100644 --- a/PokeAlarm/Events/MonEvent.py +++ b/PokeAlarm/Events/MonEvent.py @@ -45,7 +45,7 @@ def __init__(self, data): int, data.get('weather'), Unknown.TINY) self.boosted_weather_id = check_for_none( int, data.get('boosted_weather') - or data.get('boosted_weather_condition'), 0) + or data.get('weather_boosted_condition'), 0) # Encounter Stats self.mon_lvl = check_for_none( From ba5750845c813a0a96144ab28dcecc4b35f4b347 Mon Sep 17 00:00:00 2001 From: kvangent Date: Sat, 3 Mar 2018 08:10:03 -0800 Subject: [PATCH 60/79] Really fixed bug with is_sponsor filter. --- PokeAlarm/Filters/EggFilter.py | 2 +- PokeAlarm/Filters/RaidFilter.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PokeAlarm/Filters/EggFilter.py b/PokeAlarm/Filters/EggFilter.py index 545f7d8ea..b9eb85c02 100644 --- a/PokeAlarm/Filters/EggFilter.py +++ b/PokeAlarm/Filters/EggFilter.py @@ -53,7 +53,7 @@ def __init__(self, name, data): # Gym sponsor self.is_sponsor = self.evaluate_attribute( # f.gym_is_sponsor True - event_attribute='sponsor_id', eval_func=operator.eq, + event_attribute='sponsor_id', eval_func=lambda y, x: (x > 0) == y, limit=BaseFilter.parse_as_type(bool, 'is_sponsor', data)) # Gym park diff --git a/PokeAlarm/Filters/RaidFilter.py b/PokeAlarm/Filters/RaidFilter.py index a0d9b1e88..fcbadf45f 100644 --- a/PokeAlarm/Filters/RaidFilter.py +++ b/PokeAlarm/Filters/RaidFilter.py @@ -79,8 +79,8 @@ def __init__(self, name, data): GymUtils.create_regex, 'gym_name_excludes', data)) # Gym sponsor - self.is_sponsor = self.evaluate_attribute( # f.is_sponsor True - event_attribute='sponsor_id', eval_func=operator.eq, + self.is_sponsor = self.evaluate_attribute( # + event_attribute='sponsor_id', eval_func=lambda y, x: (x > 0) == y, limit=BaseFilter.parse_as_type(bool, 'is_sponsor', data)) # Gym park From 0f011a60ed6bc32f1cbdb20979ef65fb8d407e40 Mon Sep 17 00:00:00 2001 From: kvangent Date: Sat, 3 Mar 2018 08:11:48 -0800 Subject: [PATCH 61/79] RTD - more index tweaks. --- docs/configuration/alarms/index.rst | 15 ++++++++------- docs/configuration/events/index.rst | 10 +++++----- docs/configuration/filters/index.rst | 10 +++++----- docs/index.rst | 2 -- 4 files changed, 18 insertions(+), 19 deletions(-) diff --git a/docs/configuration/alarms/index.rst b/docs/configuration/alarms/index.rst index ccd778256..e1ff23c57 100644 --- a/docs/configuration/alarms/index.rst +++ b/docs/configuration/alarms/index.rst @@ -36,13 +36,14 @@ of service: .. toctree:: :maxdepth: 1 - discord - facebook-pages - pushbullet - slack - telegram - twilio - twitter + discord + facebook-pages + pushbullet + slack + telegram + twilio + twitter + .. note:: It is valid to have multiple Alarms with the same type - a different Alarm could represent a different channel or a specialized diff --git a/docs/configuration/events/index.rst b/docs/configuration/events/index.rst index 0b1dc2762..b862934bc 100644 --- a/docs/configuration/events/index.rst +++ b/docs/configuration/events/index.rst @@ -23,11 +23,11 @@ for Events, each with different information: .. toctree:: :maxdepth: 1 - monster-eventss - stop-events - gym-events - egg-events - raid-events + monster-events + stop-events + gym-events + egg-events + raid-events .. _events_dts: diff --git a/docs/configuration/filters/index.rst b/docs/configuration/filters/index.rst index 159461ae4..69a914fb7 100644 --- a/docs/configuration/filters/index.rst +++ b/docs/configuration/filters/index.rst @@ -32,11 +32,11 @@ There are 5 different types of Filters, each matching a category of Events: .. toctree:: :maxdepth: 1 - monster-filters - stop-filters - gym-filters - egg-filters - raid-filters + monster-filters + stop-filters + gym-filters + egg-filters + raid-filters Restrictions diff --git a/docs/index.rst b/docs/index.rst index 0f49adcca..0e2512d57 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -23,10 +23,8 @@ know of any rare spawns or raids. getting-started/faq .. toctree:: - :titlesonly: :maxdepth: 1 :caption: Basic Configuration - :glob: configuration/server-settings configuration/events/index From b6737fc8bfba3c93f70dc19ba7ab5399f8acaf02 Mon Sep 17 00:00:00 2001 From: LegitDongo <9087537+LegitDongo@users.noreply.github.com> Date: Sat, 3 Mar 2018 14:31:59 -0600 Subject: [PATCH 62/79] Update Webhook Tester (#637) * Fix gym caching * Start using locale for all things data Rework forms Raids can now have different gym ids (whoopsie!) Add team id check Add ability to test for is_missing_info in mons Small text formatting changes --- tools/webhook_test.py | 172 ++++++++++++++++++++---------------------- 1 file changed, 83 insertions(+), 89 deletions(-) diff --git a/tools/webhook_test.py b/tools/webhook_test.py index d45951e05..e416e3550 100644 --- a/tools/webhook_test.py +++ b/tools/webhook_test.py @@ -6,6 +6,17 @@ import os import portalocker import pickle +from glob import glob + + +def get_path(path): + path = os.path.join(ROOT_PATH, path) + if not os.path.exists(path): + print 'The webhook_test.py file has moved from the PokeAlarm/tools' + \ + ' folder!\nPlease put it back or re-download PokeAlarm.' + sys.exit(1) + return path + truthy = frozenset([ "yes", "Yes", "y", "Y", "true", "True", "TRUE", "YES", "1", "!0" @@ -19,47 +30,21 @@ "5": "raid" } -teams = { - "0": "Uncontested", - "1": "Mystic", - "2": "Valor", - "3": "Instinct" -} - -weather = { - "0": "None", - "1": "Clear", - "2": "Rain", - "3": "Partly Cloudy", - "4": "Cloudy", - "5": "Windy", - "6": "Snow", - "7": "Fog" -} +ROOT_PATH = os.path.abspath(os.path.dirname(__file__)) +locales_file = glob(get_path('../locales/en.json'))[0] +data = json.loads(open(locales_file, 'rb+').read()) teams_formatted = re.sub('[{}",]', '', json.dumps( - teams, indent=4, sort_keys=True)) + data['teams'], indent=2, sort_keys=True)) weather_formatted = re.sub('[{}",]', '', json.dumps( - weather, indent=4, sort_keys=True)) + data['weather'], indent=2, sort_keys=True)) _cache = {} _gym_info = {} -def get_image_url(image): - return \ - "https://raw.githubusercontent.com/not4profit/images/master/" + image - - -_default_gym_info = { - "name": "unknown", - "description": "unknown", - "url": get_image_url('icons/gym_0.png') -} - - def set_init(webhook_type): payloadr = {} current_time = time.time() @@ -68,28 +53,28 @@ def set_init(webhook_type): "type": "pokemon", "message": { "pokemon_id": 149, - "pokemon_level": 30, - "player_level": 30, + "pokemon_level": None, + "player_level": None, "latitude": 37.7876146, "longitude": -122.390624, "encounter_id": current_time, "cp_multiplier": 0.7317000031471252, "form": None, - "cp": 768, - "individual_attack": 10, - "individual_defense": 1, - "individual_stamina": 9, - "move_1": 281, - "move_2": 133, + "cp": None, + "individual_attack": None, + "individual_defense": None, + "individual_stamina": None, + "move_1": None, + "move_2": None, "height": 0.5694651007652283, - "weight": 5.733094215393066, + "weight": None, "gender": 3, "seconds_until_despawn": 1754, "spawn_start": 2153, "spawn_end": 3264, "verified": False, - "weather": 0, - "boosted_weather": 0 + "weather": None, + "boosted_weather": None } } elif webhook_type == whtypes["2"]: @@ -108,7 +93,7 @@ def set_init(webhook_type): "type": "gym", "message": { "raid_active_until": 0, - "gym_id": 0, + "gym_id": current_time, "gym_name": "unknown", "team_id": 3, "slots_available": 0, @@ -124,7 +109,7 @@ def set_init(webhook_type): payloadr = { "type": "raid", "message": { - "gym_id": 0, + "gym_id": current_time, "gym_name": "unknown", "level": 5, "latitude": 37.7876146, @@ -135,7 +120,7 @@ def set_init(webhook_type): payloadr = { "type": "raid", "message": { - "gym_id": 0, + "gym_id": current_time, "gym_name": "unknown", "pokemon_id": 150, "cp": 12345, @@ -166,17 +151,17 @@ def int_or_default(input_parm): def get_gym_info(gym_id): """ Gets the information about the gym. """ - return _gym_info.get(gym_id, _default_gym_info) + return _gym_info.get(gym_id, 'unknown') def gym_or_invalid(prm, prm2): questionable_input = raw_input() - while get_gym_info(questionable_input)['name'] == "unknown": + while get_gym_info(questionable_input) == "unknown": print "Not a valid gym. Please try again..\n>", questionable_input = raw_input() - print "Gym found! {}".format(get_gym_info(questionable_input)['name']) + print "Gym found! {}".format(get_gym_info(questionable_input)) payload["message"][prm] = questionable_input - payload["message"][prm2] = get_gym_info(questionable_input)['name'] + payload["message"][prm2] = get_gym_info(questionable_input) def cache_or_invalid(): @@ -198,7 +183,7 @@ def load_cache(file): global _gym_info with portalocker.Lock(file, mode="rb") as f: data = pickle.load(f) - _gym_info = data.get('gym_info', {}) + _gym_info = data.get('gym_name', {}) def list_cache(): @@ -214,9 +199,8 @@ def list_gyms(): if len(_gym_info) > 50: with portalocker.Lock(os.path.join(path, "gyms.txt"), mode="wb+") as f: i = 0 - for key in _gym_info.keys(): + for key, name in _gym_info.items(): i += 1 - name = get_gym_info(key)['name'] f.write("[{}] {} : {} \n".format(i, name, key)) f.close() print "Find list of gyms in your \\tools\ folder (gyms.txt)" @@ -224,9 +208,8 @@ def list_gyms(): else: print "Here is a list of gyms found in your cache:" i = 0 - for key in _gym_info.keys(): + for key, name in _gym_info.items(): i += 1 - name = get_gym_info(key)['name'] print "[{}] {} : {} ".format(i, name, key) print "Enter gym id for raid (from above)\n>", @@ -262,25 +245,27 @@ def reset_timers_and_encounters(): }) elif payload["type"] == "raid": payload["message"].update({ + "gym_id": current_time, "start": current_time + 20, "end": current_time + 20 + 60, }) def get_and_validate_team(): - team = teams.get(raw_input(), 5) + team = data['teams'].get(raw_input(), 5) if team == 5: - print "Team invalid, defaulting to Uncontested" + print "Team invalid, defaulting to Neutral" team = 0 else: - for team_id, team_name in teams.iteritems(): + for team_id, team_name in data['teams'].iteritems(): if team_name == team: team = int(team_id) + break payload["message"]["team_id"] = team webhooks_formatted = re.sub('[{}",]', '', json.dumps( - whtypes, indent=4, sort_keys=True)) + whtypes, indent=2, sort_keys=True)) print "What kind of webhook would you like to send?(put in a number)\n"\ + webhooks_formatted + ">", type = whtypes.get(raw_input(), 0) @@ -318,29 +303,30 @@ def get_and_validate_team(): int_or_default("pokemon_id") print "Gender (1-3)\n>", int_or_default("gender") - if payload["message"]["pokemon_id"] == 201: - print "Which form of Unown would you like? (default: A)\n>", - form_character = raw_input()[0:1].upper() - if form_character == '': - print "Defaulting to A" - payload["message"]["form"] = 1 - else: - form = ord(form_character) - # A-Z = 1-26, ! = 27, ? = 28 - if ord('A') <= form <= ord('Z'): - form -= ord('A') - 1 - elif form == 33: - # ! - form = 27 - elif form == 63: - # ? - form = 28 - else: - print "Invalid form type. Defaulting to A" - form = 1 - payload["message"]["form"] = form + monster_id = "{:03d}".format(payload["message"]["pokemon_id"]) + if monster_id in data['forms'].keys(): + sorted_forms = sorted(data['forms'][monster_id]) + default_form_id = next(iter(sorted_forms)) + forms_formatted = ', '.join(data['forms'][monster_id][x] + for x in sorted_forms) + print "Which form of " + \ + data["pokemon"][monster_id] + ' would you like? (default: ' + \ + data['forms'][monster_id][default_form_id] + ')\n' + \ + forms_formatted + '\n>', + form_character = raw_input().lower() + found = False + for key, x in data['forms'][monster_id].items(): + if x.lower() == form_character: + payload['message']['form'] = int(key) + found = True + break + if not found: + print "Not a valid value, using default" + payload["message"]["form"] = int(default_form_id) print "Encounters enabled?\n>", if raw_input() in truthy: + payload["message"]["player_level"] = 30 + payload["message"]["height"] = 0.5694651007652283 print "CP?\n>", int_or_default("cp") print "Attack IV\n>", @@ -354,17 +340,19 @@ def get_and_validate_team(): print "Id of move 2\n>", int_or_default("move_2") if payload["message"]["pokemon_id"] == 19: - print "Count towards tiny Rattata medal?" + print "Count towards tiny Rattata medal?\n>", if raw_input() in truthy: payload["message"]["weight"] = 2.0 if payload["message"]["pokemon_id"] == 129: - print "Count towards big Magikarp medal?" + print "Count towards big Magikarp medal?\n>", if raw_input() in truthy: payload["message"]["weight"] = 14.0 - print "What type of weather? (put in a number)\n" + \ + print "Monster level?\n>", + int_or_default("pokemon_level") + print "What type of weather? (number only)(Default: None)\n" + \ weather_formatted + "\n>", int_or_default("weather") - print "Is this mon boosted by the weather? (y/n)\n", + print "Is this mon boosted by the weather? (y/n)\n>", if raw_input() in truthy: payload["message"]["boosted_weather"] = payload["message"]["weather"] elif type == whtypes["3"]: @@ -373,16 +361,14 @@ def get_and_validate_team(): get_and_validate_team() elif type == whtypes["4"]: gym_cache() - print "What level of gym egg? (1-5)\n>", - egglevel = check_int(raw_input(), payload["message"]["level"]) - if 6 > egglevel > 0: - payload["message"]["level"] = egglevel - else: - print "Egg level invalid. Assuming level 5" + print "Which team?(put in a number)\n" + teams_formatted + "\n>", + get_and_validate_team() elif type == whtypes["5"]: gym_cache() print "Enter pokemon id for raid\n>", int_or_default("pokemon_id") + print "Which team?(put in a number)\n" + teams_formatted + "\n>", + get_and_validate_team() print "Moveset important?\n>", if raw_input() in truthy: print "Id of move 1\n>", @@ -393,6 +379,14 @@ def get_and_validate_team(): weather_formatted + "\n>", int_or_default("weather") +if type in ["4", "5"]: + print "What level of raid/egg? (1-5)\n>", + level = check_int(raw_input(), payload["message"]["level"]) + if 6 > level > 0: + payload["message"]["level"] = level + else: + print "Egg/Raid level invalid. Assuming level 5" + reset_timers_and_encounters() while True: From 110b66ed0cedca3c1386a5cc7ff2b4a12db31cf1 Mon Sep 17 00:00:00 2001 From: kvangent Date: Sat, 3 Mar 2018 13:17:14 -0800 Subject: [PATCH 63/79] RTD - new Geofence page. --- docs/configuration/geofences.md | 231 ------------------ docs/configuration/geofences.rst | 94 +++++++ docs/index.rst | 2 + .../images/geofence_central_park_bounded.png | Bin 0 -> 88438 bytes 4 files changed, 96 insertions(+), 231 deletions(-) delete mode 100644 docs/configuration/geofences.md create mode 100644 docs/configuration/geofences.rst create mode 100644 docs/miscellaneous/images/geofence_central_park_bounded.png diff --git a/docs/configuration/geofences.md b/docs/configuration/geofences.md deleted file mode 100644 index 79d1e9bb6..000000000 --- a/docs/configuration/geofences.md +++ /dev/null @@ -1,231 +0,0 @@ -# Geofences - -## Overview - -* [Introduction](#introduction) -* [Instructions](#instructions) -* [Example: 4 point geofence - Central Park, New York, NY](#example-4-point-geofence---central-park-new-york-ny) -* [Example: 21 point geofence - Coronado, San Diego, CA](#example-21-point-geofence---corando-island-san-diego-ca) -* [Example: Multiple Geofences in the same `geofences.txt` file](#example-multiple-geofences-in-the-same-geofencestxt-file) -* [Geofence Generator: Draw Your Own Geofence](#geofence-generator-draw-your-own-geofence) - -## Introduction - -Geofencing will restrict PokeAlarm alerts to a defined geographical area. -The area is defined by a list of at least 2 sets of latitude and longitude -coordinates. You may provide as many coordinates as you'd like to define -your area of interest, provided that these sets are in the order that -defines your polygon. - -**Note:** PokeAlarm will first check pokemon alert distance, *then* will -check to see if the pokemon is located within your geofence. -See [Monster Filters](filters/monster-filters.html) on how to limit alerts -based on distance. - -## Instructions - -Create a text file with with a series of at least 3 *latitude,longitude* -sets and place this in the same folder as `start_pokealarm.py`. -(A minimum of 3 points are required as of PokeAlarm v3.1.) - -**To define a rectangular geofence:** Use 2 lat/lon sets, with the first -set defining the top left of the rectangle, and the second defining the -bottom right of the rectangle. - -**To define a polygonal geofence:** Provide as many lat/lon sets as it -takes to define your polygon. Make sure that you provide the points -**in order** to describe the polygon. - -Execute `start_pokealarm.py` with the `-gf` or `--geofences` flag, -along with the path to your geofence file, or add -`geofence:YOUR_GEOFENCE_FILE` to `config.ini`. - -## Example: 4 point geofence - Central Park, New York, NY - -The text file below defines the northwest, southwest, southeast and -northeast corners of central park. The heading in brackets -`[NAME_OF_GEOFENCE]` is mandatory, and PokeAlarm will fail if not -included in the geofence file. - -file: `central-park-geofence.txt` -``` -[Central Park, NY] -40.801206,-73.958520 -40.767827,-73.982835 -40.763798,-73.972808 -40.797343,-73.948385 -``` - -![](images/geofence_central_park_640x640.png) - -In the image above, each numbered marker 1-4 represents the lat,lon -coordinates found in central-park-geofence.txt, respectively. - -To run PokeAlarm with geofencing enabled, execute: - -`python start_pokealarm.py -gf central-park-geofence.txt` - -or - -`python start_pokealarm.py --geofences central-park-geofence.txt` - -or you can include `geofences:central-park-geofence.txt` in your -`config.ini` file. - -If successful, you should receive a confirmation in your log: - -``` -2018-01-20 18:05:26 [ Geofence][ INFO] Geofence Central Park, NY added! -``` - -For our Central Park example, all 4 points encompass the entire park. -The visual of the geofenced area is below. -The red marker in the image denotes a selected location, here, -`The Pond, Central Park, NY`. - -![](images/geofence_central_park_bounded.png) - -PokeAlarm will then notify you of pokemon within the shaded area. - -**Note:** Remember to configure the filters to use this area of ​​the geofence -or will not apply to alerts. Example: - -``` -"filter_tiny_central_park":{ - "geofences":["Central Park, NY"] -} -``` - -## Example: 21 point geofence - Coronado Island, San Diego, CA - -You may add as many lat,lon points to define you polygon, provided that the -points in your geofence file are in order of defining said polygon. Below is -an example of a 21 point polygon encompassing an area. - -file: `geofence_coronado.txt` -``` -[Coronado, CA] -32.7134997863394,-117.18893051147461 -32.71508853568461,-117.19330787658691 -32.715305181130056,-117.20541000366211 -32.71046664083005,-117.2189712524414 -32.69977759183938,-117.22764015197754 -32.6864144801245,-117.22832679748535 -32.679985027301136,-117.22412109375 -32.6859810484179,-117.21107482910156 -32.685619853722,-117.19390869140625 -32.67239912263756,-117.1721076965332 -32.675794797699766,-117.1677303314209 -32.68020175796835,-117.17494010925293 -32.68164661564297,-117.17279434204102 -32.677600955252075,-117.16695785522461 -32.68540313620318,-117.16155052185059 -32.692626770053714,-117.16197967529297 -32.698549713686894,-117.16541290283203 -32.70346112493775,-117.17897415161133 -32.704400040429604,-117.18008995056152 -32.70700006253934,-117.18978881835938 -32.711983226476136,-117.18704223632812 -``` - -And remember to set filters to apply geofence like this example: - -``` -"filter_coronado":{ - "geofences":["Coronado, CA"] -} -``` - -Below is the resulting geofence: - -![](images/geofence_coronado.png) - -## Example: Multiple Geofences in the same `geofences.txt` file - -You are permitted to add more than one geofence area in a single -`geofences.txt` file. Add a bracketed header before each set of -coordinates. For example: - -``` -[Central Park, NY] -40.801206,-73.958520 -40.767827,-73.982835 -40.763798,-73.972808 -40.797343,-73.948385 -[Coronado, CA] -32.7134997863394,-117.18893051147461 -32.71508853568461,-117.19330787658691 -32.715305181130056,-117.20541000366211 -32.71046664083005,-117.2189712524414 -32.69977759183938,-117.22764015197754 -32.6864144801245,-117.22832679748535 -32.679985027301136,-117.22412109375 -32.6859810484179,-117.21107482910156 -32.685619853722,-117.19390869140625 -32.67239912263756,-117.1721076965332 -32.675794797699766,-117.1677303314209 -32.68020175796835,-117.17494010925293 -32.68164661564297,-117.17279434204102 -32.677600955252075,-117.16695785522461 -32.68540313620318,-117.16155052185059 -32.692626770053714,-117.16197967529297 -32.698549713686894,-117.16541290283203 -32.70346112493775,-117.17897415161133 -32.704400040429604,-117.18008995056152 -32.70700006253934,-117.18978881835938 -32.711983226476136,-117.18704223632812 -``` - -In this example, you can configure an individual alarm to only check one -geofence from your geofence.txt. This filter will only check the geofence -named `Central Park, NY`: - -``` -"filter_central_park": { - "geofences":["Central Park, NY"] -} -``` - -Or check the 2 geofence zones with: - -``` -"filter_central_park_coronado":{ - "geofences":["Central Park, NY","Coronado, CA"] -} -``` - -Additionally, you can use `"geofences":["all"]` as a shortcut for checking -all geofences in a geofence file. Example: - -``` -"filter_all_geofences":{ - "geofences":["all"] -} -``` - -## Geofence Generator: Draw Your Own Geofence - -These are handy web tool to create and visualize your desired geofence. - -Jason's [A Better Fence Editor](http://geo.jasparke.net/) - Recommended by PokeAlarm team - -To use it: -1. Create a fence name, color and click Create. (If you have a fence already -paste it into the Coordinate Set) -2. Click for each geofence point until you have made made a full circle. -3. Click exp (Export) from there you can copy, paste or click Download with -or without fence name tag. -4. To better manage all your geofences in one file you can save a json file -that saves everything as you have it. -5. Click load to load previously generated geofences and continue. - -JennerPalacios's Codepen [Geofence Generator](https://codepen.io/jennerpalacios/full/mWWVeJ) - -To use it: -1. Type your desired location. -2. Click for each geofence point that you would like to add to the -coordinate list. -3. Complete your geofence area by clicking the original point, the last -point, or double clicking. -4. Click `Show Coordinates`, Assign a name - ie: [Seattle] and then -click `Copy to Clipboard` diff --git a/docs/configuration/geofences.rst b/docs/configuration/geofences.rst new file mode 100644 index 000000000..efbb49d83 --- /dev/null +++ b/docs/configuration/geofences.rst @@ -0,0 +1,94 @@ +Events +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + +Prerequisites +------------------------------------- + +This guide assumes the following: + ++ You are using the latest version of PokeAlarm. ++ You understand how :doc:`filters/index` work. ++ You understand how :doc:`managers` work. + +Introduction +------------------------------------- + +A **Geofence** is a geographic boundary, described as a polygon formed by a +series of points. Each point is represented by coordinates of latitude and +longitude. For example, this is a geofence that surrounds Central Park: + +.. image:: images/geofence_central_park_bounded.png + :align: center + + +Defining Geofences +------------------------------------- + +Each Geofence is composed of a name and a list of points. The first line of the +description must be the name, surrounded by square brackets. The points of the +Geofence follow, each as a pair of coordinates on a separate line. The Geofence +around Central Park would be described as follows: + +.. code-block:: none + + [Central Park] + 40.801206,-73.958520 + 40.767827,-73.982835 + 40.763798,-73.972808 + 40.797343,-73.948385 + +In this case, the name is ``Central Park`` and it has 4 points, one for each +corner of the park. There are no limits on how big your geofence can be, but do +note that additional points may require increase processing time. + +If using multiple geofences, they must be listed consecutively, with no empty +spaces. + + +Filtering on Geofences +------------------------------------- + +.. note:: In order to filter by a geofence, you must load a file describing + your geofences. See the :doc:`managers` page for specifics. + +Using the ``"geofence"`` restriction, you can filter events by requiring them to +be located inside one of the geofences you have defined: + +.. code-block:: json + + "geofence example": { + "geofence": [ "Central Park", "Geofence #2", "Geofence #3" ] + } + +.. note:: An event is only compared to a Geofence if it is listed in the + filter. This means that PA does not waste time checking unlisted + geofences, but also means the `` DTS doesn't work unless + you have a geofence restriction specified. + +You can also use the ``"all"`` shortcut, if you have a large number of +geofences and find it cumbersome to list them all. It is equivalent to listing +every Geofence attached to a Manager: + +.. code-block:: json + + "geofence example": { + "geofence": [ "all" ] + } + + +Notes +------------------------------------- + +Differences from Rocketmap +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you are using the same Geofences for both Rocketmap and PokeAlarm, it's +possible that you may see an event get rejected by PokeAlarm. This is because +RM and PA use Geofences differently. RM uses them to rescrit work movement, but +PA uses them to restrict events. As a result, RM will occasionally send +an Event that PA will reject. If this is a problem, you can either +increase the size of your PA geofences, or remove them all together. \ No newline at end of file diff --git a/docs/index.rst b/docs/index.rst index 0e2512d57..51715eec2 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -23,6 +23,7 @@ know of any rare spawns or raids. getting-started/faq .. toctree:: + :titlesonly: :maxdepth: 1 :caption: Basic Configuration @@ -33,6 +34,7 @@ know of any rare spawns or raids. .. toctree:: + :titlesonly: :maxdepth: 1 :caption: Advanced Configuration diff --git a/docs/miscellaneous/images/geofence_central_park_bounded.png b/docs/miscellaneous/images/geofence_central_park_bounded.png new file mode 100644 index 0000000000000000000000000000000000000000..4340eab72545c03a4e46527d64589a97d063f48b GIT binary patch literal 88438 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 Date: Sun, 4 Mar 2018 02:40:01 +0100 Subject: [PATCH 64/79] RTD - Add Custom DTS (#638) --- docs/conf.py | 45 ++++++++++++++++++++++++++++++++++++++++----- docs/css/custom.css | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 5 deletions(-) create mode 100644 docs/css/custom.css diff --git a/docs/conf.py b/docs/conf.py index 06f948cc0..d260054a5 100755 --- a/docs/conf.py +++ b/docs/conf.py @@ -17,7 +17,7 @@ # documentation root, use os.path.abspath to make it absolute, like shown here. # import datetime -# import os +import os # import sys # sys.path.insert(0, os.path.abspath('.')) @@ -64,9 +64,9 @@ # built documents. # # The short X.Y version. -version = u'3.5' +version = u'3.6' # The full version, including alpha/beta/rc tags. -release = u'3.5' +release = u'3.6' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -92,7 +92,8 @@ # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # -html_theme = 'sphinx_rtd_theme' +# html_theme = 'sphinx_rtd_theme' +html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the @@ -100,10 +101,44 @@ # # html_theme_options = {} + +# From: +# * https://github.com/snide/sphinx_rtd_theme +# using-this-theme-locally-then-building-on-read-the-docs +# on_rtd is whether we are on readthedocs.org, this +# line of code grabbed from docs.readthedocs.org +on_rtd = os.environ.get('READTHEDOCS', None) == 'True' + +# only import and set the theme if we're building docs locally +if not on_rtd: + import sphinx_rtd_theme + html_theme = 'sphinx_rtd_theme' + html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] + +# Suppress warnings: http://stackoverflow.com/a/28778969/2288008 +if not on_rtd: + import sphinx.environment + from docutils.utils import get_source_line + + def _warn_node(self, msg, node, **kwargs): + if not msg.startswith('nonlocal image URI found:'): + self._warnfunc(msg, '%s:%s' % get_source_line(node), **kwargs) + + sphinx.environment.BuildEnvironment.warn_node = _warn_node + # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['.static'] +# html_static_path = ['.static'] +html_static_path = ['.static', 'css'] + +# Add custom .css files +# https://github.com/snide/sphinx_rtd_theme/issues/117#issuecomment-41571653 + + +def setup(app): + app.add_stylesheet("custom.css") + # Custom sidebar templates, must be a dictionary that maps document names # to template names. diff --git a/docs/css/custom.css b/docs/css/custom.css new file mode 100644 index 000000000..41fc91791 --- /dev/null +++ b/docs/css/custom.css @@ -0,0 +1,32 @@ +/* +Custom styles for PA rtd +*/ + +.boltitalic { + font-weight: bold; + font-style: italic; +} + +.underline { + text-decoration: underline; +} + +.underlinebold { + text-decoration: underline; + font-weight: bold; +} + +.underlineitalic { + text-decoration: underline; + font-style: italic; +} + +.underlineboita { + text-decoration: underline; + font-weight: bold; + font-style: italic; +} + +.strike { + text-decoration: line-through; +} From 982aac40c3096bc3090178fa6e5aea7df5e00b1a Mon Sep 17 00:00:00 2001 From: Billy Bryant <3013565+billyjbryant@users.noreply.github.com> Date: Sat, 3 Mar 2018 20:44:29 -0500 Subject: [PATCH 65/79] 3.7 Patch Notes (#639) --- docs/miscellaneous/patch-notes.md | 178 ++++++++++++++++++++++++++++++ 1 file changed, 178 insertions(+) diff --git a/docs/miscellaneous/patch-notes.md b/docs/miscellaneous/patch-notes.md index e258b50db..099aff12f 100644 --- a/docs/miscellaneous/patch-notes.md +++ b/docs/miscellaneous/patch-notes.md @@ -2,6 +2,7 @@ ## Patch History +* [Patch 3.7](#patch-3-7) * [Patch 3.6](#patch-3-6) * [Patch 3.5](#patch-3-5) * [Patch 3.4](#patch-3-4) @@ -11,6 +12,183 @@ --- +## Patch 3.7 + +This patch contains a few breaking changes - make sure to read +carefully, back up your current configuration, and have some free time +before attempting to upgrade. + +### Google Maps API Changes + +**Breaking Changes** - This is a rewrite of the Google Maps API calls used for +DTS. It removes the official Google python client and instead handles the +requests directly to give more control over how they are handled. This will +allow for better error handling and won't timeout for extended periods of time +when the API Quota has been reached. + +Additionally, it removes the automatic DTS detection and instead adds explicit +config options to enable the use of DTS. This is to reduce issues users may +experience with accidentally overusing the api quotas. + +See the updated `config.ini.example` to see the necessary changes. + +* **DTS Changes** +Some of the Distance Matrix DTS have been renamed, and are as follows: + + * `` changed to `` + * `` changed to `` + * `` changed to `` + * `` changed to `` + * `` changed to `` + * `` changed to `` + * `` added + * `` added + +### Alarms + +#### Telegram Changes + +Restored the ability to enable/disable the Telegram Web Preview via the +`web_preview` Alert Setting + +### Filters + +#### New Filters + +* **Monsters** + * `ignore_monsters` - Add an Array of monsters to ignore, by id or name + * `costume_ids` - Adds the ability to filter monster events by the monster's + costume id + +* **Gyms/Eggs/Raids** + * `gym_name_excludes` - Allows using RegEx Patterns drop events where + `gym_name` matches one of the patterns + +### DTS + +#### Costumes + +The following Costume DTS Fields have been added to both **Monster** and +**Raid** alerts + +| DTS | Description | +|----------------- |-------------------------------------------------------- | +| costume | The name of the Monster's Costume or `Unknown` | +| costume_or_empty | The name of the Monster's Costume or Empty | +| costume_id | The ID of the Monster's Costume | +| costume_id_3 | The ID of the Monster's Costume, zero padded | + +#### Move Types + +The following Move Type DTS fields have been added to both **Monster** and +**Raid** alerts + +| DTS | Description | +|----------------- |-------------------------------------------------------- | +| quick_type_id | The id of the Quick Move's Type or `?` | +| quick_type | The name of the Quick Move's Type or `Unknown` | +| quick_type_emoji | The emoji for the Quick Move's Type or Empty | +| charge_type_id | The id of the Charge Move's Type or `?` | +| charge_type | The name of the Charge Move's Type or `Unknown` | +| charge_type_emoji | The emoji for the Charge Move's Type or Empty | + +#### Catch & Probability Rating + +The following DTS Fields have been added to **Monster** alerts + +| DTS | Description | +|----------------- |-------------------------------------------------------- | +| atk_grade | Rating attack of the monster. | +| def_grade | Rating defense of the monster. | +| base_catch | Probability to catch the monster with a pokeball. | +| great_catch | Probability to catch the monster with a greatball. | +| ultra_catch | Probability to catch the monster with an ultraball. | + +#### Height and Weight + +The following DTS fields have been added to **Monster** alerts + +| DTS | Description | +|----------------- |-------------------------------------------------------- | +| height_0 | Height of the monster, rounded to the nearest integer | +| height_2 | Height of the monster, rounded to 2 decimal places | +| weight_0 | Weight of the monster, rounded to the nearest integer | +| weight_2 | Weight of the monster, rounded to 2 decimal places | + +#### Forms + +The `Form` DTS Fields have also been added to **Raid** alerts + +#### Weather + +Added support for the `boosted_weather` DTS fields for RocketMap users + +### Gym Sponsors & Parks + +Support for detecting EX Eligible Raids in Sponsored Gyms and Gyms in Parks for +Raid and Egg events + +#### Filters +| Filters | Description | +|----------------- |-------------------------------------------------------- | +| park_contains | Regex Patterns to filter based on Park name from OSM | +| is_sponsor | True/False check if a Raid is at a Sponsored Gym | + +#### DTS Fields +| DTS | Description | +|----------------- |-------------------------------------------------------- | +| sponsor_id | The ID of the Gym's Sponsor. | +| is_sponsor | Returns `sponsor` if the Gym is a Sponsored Gym | +| park | The associated Park from OSM for the Gym | + +### Caching Improvements + +* Updated the Mapping APIs to be more condensed +* Separated `gym_info` into `gym_name`, `gym_desc`, and `gym_url` into +separate endpoints +* Added support for `team_id` from RocketMap `egg` and `raid` webhooks +* File Cache now creates the required cache folder upon initialization if it +doesn't exist +* File Cache saves the initial cache file with the ".new" extension and then +renames over the original file to reduce the chance of the cache being +corrupted if PA exits incorrectly +* If a Cache file fails to load for any reason, PA will continue to load and +overwrite the file at the next opportunity + +### Overall Improvements + +* **Data Files** + * The base data files were reformatted to allow for proper sorting of keys + +* **Locales** + * The locale files were reformatted to allow for proper sorting of keys + +* **DTS** + * `custom_dts` - Improved Custom DTS to allow use of both Defaults & Filter + Specific Custom DTS fields. + +* **Webhook Tester** + * Fixed gym caching + * Now uses the `en` locale file for all data + * Reworked forms to allow for testing all Monsters with forms + * Raids can now have different gym ids + * Added `team_id` check + * Added the ability to test for `is_missing_info` in Monster Events + * Added raid level check + * Performed a few text formatting changes + +### Bug Fixes + +* **Filters** + * `geofences` - Geofences are now checked in the order they are specified in + the filter. +* **DTS** + * Fixed reverse geocode failures when only using the `` DTS field +* **Locales** + * Minor fixes for `zh-hk` size translations. + +--- + ## Patch 3.6 This patch contains several breaking changes - make sure to read From 8e7c5c84205023ca2e67ea76bd44ae17d6844106 Mon Sep 17 00:00:00 2001 From: kvangent Date: Sat, 3 Mar 2018 18:02:12 -0800 Subject: [PATCH 66/79] RTD - New Rules page. --- docs/configuration/filters/index.rst | 14 ++-- docs/configuration/geofences.rst | 2 +- docs/configuration/rules-overview.md | 94 ----------------------- docs/configuration/rules.rst | 111 +++++++++++++++++++++++++++ 4 files changed, 118 insertions(+), 103 deletions(-) delete mode 100644 docs/configuration/rules-overview.md create mode 100644 docs/configuration/rules.rst diff --git a/docs/configuration/filters/index.rst b/docs/configuration/filters/index.rst index 69a914fb7..13e78fb7a 100644 --- a/docs/configuration/filters/index.rst +++ b/docs/configuration/filters/index.rst @@ -83,14 +83,12 @@ carefully. Filters File ------------------------------------- -.. note:: - - A *filters file* (often refereed to as ``filters.json``) is a file containing - then Filters that PA uses. By default, PA loads the Filter from the - ``filters.json`` located in the base folder of the project. See the - :doc:`../server-settings` page for instructions on specifying the file by - a different name. This file must contain a single JSON object to load - successfully: +A *filters file* (often refereed to as ``filters.json``) is a file containing +the Filters that PA uses. By default, PA loads the Filter from the +``filters.json`` located in the base folder of the project. See the +:doc:`../server-settings` page for instructions on specifying the file by +a different name. This file must contain a single JSON object to load +successfully: .. code-block:: json diff --git a/docs/configuration/geofences.rst b/docs/configuration/geofences.rst index efbb49d83..6af2551b2 100644 --- a/docs/configuration/geofences.rst +++ b/docs/configuration/geofences.rst @@ -1,4 +1,4 @@ -Events +Geofences ===================================== .. contents:: Table of Contents diff --git a/docs/configuration/rules-overview.md b/docs/configuration/rules-overview.md deleted file mode 100644 index 83c971375..000000000 --- a/docs/configuration/rules-overview.md +++ /dev/null @@ -1,94 +0,0 @@ -# Rules - -## Overview - -* [Prerequisites](#prerequisites) -* [Default Rule](#default-rule) -* [Creating Custom Rules](#creating-custom-rules) -* [Examples](#examples) - -## Prerequisites - -This page assumes: - -1. You have a working PA installations. -2. You read and understood the [Filters](filters) page. -3. You read and understood the [Alarms](alarms) page -4. You have an understanding on what a [Manager](managers.html) is. - -## Default Rule - -Normally when PA is processing an Event, it goes through the Filters in -the order listed. Once it finds a match, it triggers all of the Alarms -attached to that manager. - -Imagine you have some filters( `"100-iv"`, `"90-iv"`, -`"in_geofence"`, `"rare-mon"`) and some alarms (`"discord-rare"`, -`"discord-perfect"`, `"telegram-all"`). First, PA will check the `"100-iv"` -filter. If that doesn't match, it will check the `"90-iv"` filter. -Once it finds a match, it will then send to all of the alarms. - -This behavior is known as the `default rule` - all filters to all -alarms. If you don't specify any rules for a section, this is the -default behavior. The `default rule` for the above scenario could be - described as the following: - -```json -"default":{ - "filters":["100-iv","90-iv","in_geofence","rare-mon"], - "alarms":["discord-rare","discord-perfect","telegram-all"] -} -``` - -Each rule has a name, and 2 required sections: `"filters"` and -`"alarms"`. Each section is simply a list of names corresponding to the -appropriate section. Sections are required, and you will be unable to -make a rule to a filter or alarm that doesn't exist. - -## Creating Custom Rules - -You can specify your own rules to override the defaults. This can be -done by setting `--rules rules.json` or `rules: rules.json` in the -config.ini. - -Each rule file can have 5 sections, one for each type of event. An empty -rules file would look like this, and would results in the default rules: -```json -{ - "monsters":{ - }, - "stops":{ - }, - "gyms":{ - }, - "eggs":{ - }, - "raids":{ - } -} -``` - -Adding rules will override the default rules and create new behavior. -If multiple rules are specified, they will be checked independently and -possible trigger a notification for each one. For example, the -following would send `"rare-mon"` events to the telegram alarm, and all -other events to the discord alarm. - -```json -{ - "monsters":{ - "discord-rule":{ - "filters":["100-iv","90-iv","in_geofence"], - "alarms":["discord-rare","discord-perfect"] - }, - "telegram-rule":{ - "filters":["rare-mon"], - "alarms":["telegram-all"] - } - } -} -``` - -## Examples - -Coming soon! diff --git a/docs/configuration/rules.rst b/docs/configuration/rules.rst new file mode 100644 index 000000000..2b6b673aa --- /dev/null +++ b/docs/configuration/rules.rst @@ -0,0 +1,111 @@ +Rules +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + +Prerequisites +------------------------------------- + +This guide assumes the following: + ++ You are using the latest version of PokeAlarm. ++ You understand how to configure :doc:`filters/index`. ++ You understand how to configure :doc:`alarms/index`. + + +Introduction +------------------------------------- + +In PokeAlarm, a **Rule** is a what decides which :doc:`filters/index` are +checked before being sent to which :doc:`alarms/index`. When PA processes an +Event, each Rule is a chance for a notification to be sent. The Event is +compared against each Filter listed, until it finds a match. Once matched, it +is passed on the listed Alarms, triggering a notification for each. + +If no rules are defined, PA follows the "default" rule. It checks every Filter +available, and if it finds a match it triggers every Alarm. By setting a +Rule, you can customize this behavior. + +.. warning:: Rules are processed independently of each other. If an Alarm is + listed in two different Rules that both pass, it's possible for a + notification to trigger twice. + +Custom Rules +------------------------------------- + +A **Rule** is represented as *named* JSON Object with only two parameters. +``"filters"`` is a list of Filters by name, and ``"alarms"`` is a list of +Alarms by name. + +.. warning:: Attempting to create a Rule with a non existent Filter or Alarm + will throw an error - make sure your spelling is correct! + +.. code-block:: json + + "rule_example": { + "filters": ["filter_name_1", "filter_name_2", "filter_name_3"], + "alarms": ["alarm_name_1", "alarm_name_2", "alarm_name_3"] + } + +In the above example, PA wil check ``"filter_name_1"``, followed by +``"filter_name_2"``, followed by ``"filter_name_3"``. If at any point an Event +matches a filter, it will cease checking and triggers all 3 listed Alarms. + +Rules File +------------------------------------- + +A *rules file* (sometimes referred to as ``rules.json``) is a file describing +the rules that PA uses. By default, PA doesn't load any rules file. See the +:doc:`../server-settings` page for instructions on specifying the file. +This file must contain a single JSON object to load successfully: + +.. code-block:: json + + { + + } + +Inside this JSON object, you need to add sections for each type of Filter you +wish to add. Sections are optional, and unspecified sections will use the +default rule. + +.. code-block:: json + + { + "monsters":{ + }, + "stops":{ + }, + "gyms":{ + }, + "eggs":{ + }, + "raids":{ + } + } + +Each section is a JSON object that can contain the rules for that section. For +example, a potential ``"monsters`` section might look like this: + +.. code-block:: json + + { + "monsters":{ + "my_first_rule": { + "filters": ["uncommon_spawns", "okay_spawns"], + "alarms": ["discord_okay_channel", "telegram_okay_channel"] + }, + "my_second_rule": { + "filters": ["100iv", "best_spawns"], + "alarms": ["discord_best_channel", "telegram_best_channel"] + } + } + } + +In the above, if an Event passes either the ``"uncommon_spawns"`` or the +``"okay_spawns"`` filter, it will trigger the ``"discord_okay_channel"`` and +``"telegram_okay_channel"`` alarms. However, if it passes either the +``"100iv"`` or ``"best_spawns"`` filter, then it will trigger the +``"discord_best_channel"`` and ``"telegram_best_channel"`` alarms. From 3c78c7bcccb9d905de0746ca5b09c72b29217815 Mon Sep 17 00:00:00 2001 From: Romfrosk Date: Sun, 4 Mar 2018 03:19:32 +0100 Subject: [PATCH 67/79] Add additional catch probability dts (#635) --- PokeAlarm/Events/MonEvent.py | 33 ++++++++++++++++++-- docs/configuration/events/monster-events.rst | 10 +++++- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/PokeAlarm/Events/MonEvent.py b/PokeAlarm/Events/MonEvent.py index 4685100be..0f68aa730 100644 --- a/PokeAlarm/Events/MonEvent.py +++ b/PokeAlarm/Events/MonEvent.py @@ -278,15 +278,42 @@ def generate_dts(self, locale, timezone, units): Unknown.or_empty(self.def_grade, Unknown.TINY)), # Catch Prob + 'base_catch_0': ( + "{:.0f}".format(self.base_catch * 100) + if Unknown.is_not(self.base_catch) + else Unknown.TINY), 'base_catch': ( "{:.1f}".format(self.base_catch * 100) - if Unknown.is_not(self.base_catch) else Unknown.SMALL), + if Unknown.is_not(self.base_catch) + else Unknown.SMALL), + 'base_catch_2': ( + "{:.2f}".format(self.base_catch * 100) + if Unknown.is_not(self.base_catch) + else Unknown.SMALL), + 'great_catch_0': ( + "{:.0f}".format(self.great_catch * 100) + if Unknown.is_not(self.great_catch) + else Unknown.TINY), 'great_catch': ( "{:.1f}".format(self.great_catch * 100) - if Unknown.is_not(self.great_catch) else Unknown.SMALL), + if Unknown.is_not(self.great_catch) + else Unknown.SMALL), + 'great_catch_2': ( + "{:.2f}".format(self.great_catch * 100) + if Unknown.is_not(self.great_catch) + else Unknown.SMALL), + 'ultra_catch_0': ( + "{:.0f}".format(self.ultra_catch * 100) + if Unknown.is_not(self.ultra_catch) + else Unknown.TINY), 'ultra_catch': ( "{:.1f}".format(self.ultra_catch * 100) - if Unknown.is_not(self.ultra_catch) else Unknown.SMALL), + if Unknown.is_not(self.ultra_catch) + else Unknown.SMALL), + 'ultra_catch_2': ( + "{:.2f}".format(self.ultra_catch * 100) + if Unknown.is_not(self.ultra_catch) + else Unknown.SMALL), # Misc 'big_karp': ( diff --git a/docs/configuration/events/monster-events.rst b/docs/configuration/events/monster-events.rst index 29d8ebaa2..452e2e774 100644 --- a/docs/configuration/events/monster-events.rst +++ b/docs/configuration/events/monster-events.rst @@ -77,7 +77,15 @@ sta Stamina IV of the monster. base_catch Base catch rate of the monster. great_catch Catch rate of the monster when using a super ball. ultra_catch Catch rate of the monster when using a ultra ball. -=================== ========================================================= +base_catch Catch rate of the monster when using a poke ball. +base_catch_0 Catch rate of the monster when using a poke ball, rounded to the nearest integer. +base_catch_2 Catch rate of the monster when using a poke ball, rounded to 2 decimal places. +great_catch Catch rate of the monster when using a great ball. +great_catch_0 Catch rate of the monster when using a great ball, rounded to the nearest integer. +great_catch_2 Catch rate of the monster when using a great ball, rounded to 2 decimal places. +ultra_catch Catch rate of the monster when using an ultra ball. +ultra_catch_0 Catch rate of the monster when using an ultra ball, rounded to the nearest integer. +ultra_catch_2 Catch rate of the monster when using an ultra ball, rounded to 2 decimal places. Moves From 100e6bf8c606dc716a1b127631379d358b2aa837 Mon Sep 17 00:00:00 2001 From: kvangent Date: Sat, 3 Mar 2018 18:22:47 -0800 Subject: [PATCH 68/79] RTD - Add rules to sidebar. --- docs/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.rst b/docs/index.rst index 51715eec2..99993fb31 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -38,9 +38,9 @@ know of any rare spawns or raids. :maxdepth: 1 :caption: Advanced Configuration + configuration/rules configuration/managers configuration/geofences - configuration/rules-overview .. toctree:: From f8b00611fbde3df74ea6eea07fd796599d729858 Mon Sep 17 00:00:00 2001 From: kvangent Date: Sat, 3 Mar 2018 19:35:00 -0800 Subject: [PATCH 69/79] Shortened Patch Notes. --- docs/miscellaneous/patch-notes.md | 203 ++++++++---------------------- 1 file changed, 55 insertions(+), 148 deletions(-) diff --git a/docs/miscellaneous/patch-notes.md b/docs/miscellaneous/patch-notes.md index 099aff12f..a629ce021 100644 --- a/docs/miscellaneous/patch-notes.md +++ b/docs/miscellaneous/patch-notes.md @@ -14,27 +14,16 @@ ## Patch 3.7 -This patch contains a few breaking changes - make sure to read -carefully, back up your current configuration, and have some free time -before attempting to upgrade. - -### Google Maps API Changes - -**Breaking Changes** - This is a rewrite of the Google Maps API calls used for -DTS. It removes the official Google python client and instead handles the -requests directly to give more control over how they are handled. This will -allow for better error handling and won't timeout for extended periods of time -when the API Quota has been reached. - -Additionally, it removes the automatic DTS detection and instead adds explicit -config options to enable the use of DTS. This is to reduce issues users may -experience with accidentally overusing the api quotas. - -See the updated `config.ini.example` to see the necessary changes. - -* **DTS Changes** -Some of the Distance Matrix DTS have been renamed, and are as follows: - +### Server Settings +* **File Cache Improvements** + * Decreased chance of corrupted cache if shutdown improperly + * Overwrites corrupted cache if detected, rather than throw error +* **Gmaps Clean Up** + * Automatic enabling for GMaps related DTS has been removed. Instead, + you will need to manually enable these DTS via server settings. See + the `config.ini.example` for usage. + * Fixed a bug where API Quotas caused timeouts + * `gmaps * `` changed to `` * `` changed to `` * `` changed to `` @@ -43,149 +32,67 @@ Some of the Distance Matrix DTS have been renamed, and are as follows: * `` changed to `` * `` added * `` added +* **Example Config Updated** + * `config.ini.example` has been cleaned up and updated for + readability. -### Alarms - -#### Telegram Changes - -Restored the ability to enable/disable the Telegram Web Preview via the -`web_preview` Alert Setting - -### Filters - -#### New Filters +### Events * **Monsters** - * `ignore_monsters` - Add an Array of monsters to ignore, by id or name - * `costume_ids` - Adds the ability to filter monster events by the monster's - costume id - -* **Gyms/Eggs/Raids** - * `gym_name_excludes` - Allows using RegEx Patterns drop events where - `gym_name` matches one of the patterns - -### DTS - -#### Costumes - -The following Costume DTS Fields have been added to both **Monster** and -**Raid** alerts + * Costume DTS: `costume`, `costume_or_empty`, `costume_id`, + `costume_id_3` + * Move Type DTS: `quick_type_id`, `quick_type`, `quick_type_emoji`, + `charge_type_id`, `charge_type`, `charge_type_emoji` + * Moveset Quality DTS: `atk_grade` and `def_grade ` + * Catch Rate DTS: `base_catch`, `great_catch`, `ultra_catch` (and + precision variants) + * Added precision variants for `height` and `weight` DTS + * Added support for RM supported weather -| DTS | Description | -|----------------- |-------------------------------------------------------- | -| costume | The name of the Monster's Costume or `Unknown` | -| costume_or_empty | The name of the Monster's Costume or Empty | -| costume_id | The ID of the Monster's Costume | -| costume_id_3 | The ID of the Monster's Costume, zero padded | - -#### Move Types - -The following Move Type DTS fields have been added to both **Monster** and -**Raid** alerts - -| DTS | Description | -|----------------- |-------------------------------------------------------- | -| quick_type_id | The id of the Quick Move's Type or `?` | -| quick_type | The name of the Quick Move's Type or `Unknown` | -| quick_type_emoji | The emoji for the Quick Move's Type or Empty | -| charge_type_id | The id of the Charge Move's Type or `?` | -| charge_type | The name of the Charge Move's Type or `Unknown` | -| charge_type_emoji | The emoji for the Charge Move's Type or Empty | - -#### Catch & Probability Rating - -The following DTS Fields have been added to **Monster** alerts - -| DTS | Description | -|----------------- |-------------------------------------------------------- | -| atk_grade | Rating attack of the monster. | -| def_grade | Rating defense of the monster. | -| base_catch | Probability to catch the monster with a pokeball. | -| great_catch | Probability to catch the monster with a greatball. | -| ultra_catch | Probability to catch the monster with an ultraball. | +* **Eggs** + * Park DTS: `park` + * Sponsor DTS: `sponsor_id`, `is_sponsor` -#### Height and Weight +* **Raids** + * Form DTS: `form`, `form_or_empty`, `form_id`, `form_id_3` + * Park DTS: `park` + * Sponsor DTS: `sponsor_id`, `is_sponsor` -The following DTS fields have been added to **Monster** alerts +### Filters -| DTS | Description | -|----------------- |-------------------------------------------------------- | -| height_0 | Height of the monster, rounded to the nearest integer | -| height_2 | Height of the monster, rounded to 2 decimal places | -| weight_0 | Weight of the monster, rounded to the nearest integer | -| weight_2 | Weight of the monster, rounded to 2 decimal places | +* **All** + * Custom DTS improved - filter level now combines with defaults rather + than replace + * Bugfix: Geofences now always evaluate in order listed -#### Forms +* **Monsters** + * `ignore_monsters` restriction - list of monsters to ignore, by id or + name + * `costume_ids` restriction - restrict by costume id -The `Form` DTS Fields have also been added to **Raid** alerts +* **Gyms** + * `gym_name_excludes` restriction - restrict gym_name to not contain + a matching regex -#### Weather +* **Eggs** + * `gym_name_excludes` restriction - restrict gym_name to not contain + a regex match + * `is_sponsor` restriction - restrict sponsor_id to be zero or not + * `park_contains` restriction - restrict park to contain a regex match -Added support for the `boosted_weather` DTS fields for RocketMap users +* **Raids** + * `gym_name_excludes` restriction - restrict gym_name to not contain + a matching regex -### Gym Sponsors & Parks +### Alarms -Support for detecting EX Eligible Raids in Sponsored Gyms and Gyms in Parks for -Raid and Egg events +* **Telegram** + * `web_preview` parameter - enable/disable web previews for messages -#### Filters -| Filters | Description | -|----------------- |-------------------------------------------------------- | -| park_contains | Regex Patterns to filter based on Park name from OSM | -| is_sponsor | True/False check if a Raid is at a Sponsored Gym | - -#### DTS Fields -| DTS | Description | -|----------------- |-------------------------------------------------------- | -| sponsor_id | The ID of the Gym's Sponsor. | -| is_sponsor | Returns `sponsor` if the Gym is a Sponsored Gym | -| park | The associated Park from OSM for the Gym | - -### Caching Improvements - -* Updated the Mapping APIs to be more condensed -* Separated `gym_info` into `gym_name`, `gym_desc`, and `gym_url` into -separate endpoints -* Added support for `team_id` from RocketMap `egg` and `raid` webhooks -* File Cache now creates the required cache folder upon initialization if it -doesn't exist -* File Cache saves the initial cache file with the ".new" extension and then -renames over the original file to reduce the chance of the cache being -corrupted if PA exits incorrectly -* If a Cache file fails to load for any reason, PA will continue to load and -overwrite the file at the next opportunity - -### Overall Improvements - -* **Data Files** - * The base data files were reformatted to allow for proper sorting of keys - -* **Locales** - * The locale files were reformatted to allow for proper sorting of keys - -* **DTS** - * `custom_dts` - Improved Custom DTS to allow use of both Defaults & Filter - Specific Custom DTS fields. - -* **Webhook Tester** - * Fixed gym caching - * Now uses the `en` locale file for all data - * Reworked forms to allow for testing all Monsters with forms - * Raids can now have different gym ids - * Added `team_id` check - * Added the ability to test for `is_missing_info` in Monster Events - * Added raid level check - * Performed a few text formatting changes +### Misc +* Minor fixes for `zh-hk` size translations. -### Bug Fixes -* **Filters** - * `geofences` - Geofences are now checked in the order they are specified in - the filter. -* **DTS** - * Fixed reverse geocode failures when only using the `` DTS field -* **Locales** - * Minor fixes for `zh-hk` size translations. --- From 31fb5c61242ca5c0ab73c99a16d19ee0d79ebc55 Mon Sep 17 00:00:00 2001 From: kvangent Date: Sat, 3 Mar 2018 19:53:09 -0800 Subject: [PATCH 70/79] Change 'is_sponsor' to 'sponsored' and improve unit test. --- PokeAlarm/Events/EggEvent.py | 2 +- PokeAlarm/Events/RaidEvent.py | 2 +- PokeAlarm/Filters/EggFilter.py | 8 ++++---- PokeAlarm/Filters/RaidFilter.py | 8 ++++---- tests/filters/test_egg_filter.py | 22 ++++++++++------------ tests/filters/test_raid_filter.py | 28 +++++++++++++--------------- 6 files changed, 33 insertions(+), 37 deletions(-) diff --git a/PokeAlarm/Events/EggEvent.py b/PokeAlarm/Events/EggEvent.py index 537b47203..4ff686bd8 100644 --- a/PokeAlarm/Events/EggEvent.py +++ b/PokeAlarm/Events/EggEvent.py @@ -100,7 +100,7 @@ def generate_dts(self, locale, timezone, units): 'gym_description': self.gym_description, 'gym_image': self.gym_image, 'sponsor_id': self.sponsor_id, - 'is_sponsor': + 'sponsored': self.sponsor_id > 0 if Unknown.is_not(self.sponsor_id) else Unknown.REGULAR, 'park': self.park, diff --git a/PokeAlarm/Events/RaidEvent.py b/PokeAlarm/Events/RaidEvent.py index ca149a612..ebdd643a3 100644 --- a/PokeAlarm/Events/RaidEvent.py +++ b/PokeAlarm/Events/RaidEvent.py @@ -213,7 +213,7 @@ def generate_dts(self, locale, timezone, units): 'gym_description': self.gym_description, 'gym_image': self.gym_image, 'sponsor_id': self.sponsor_id, - 'is_sponsor': + 'sponsored': self.sponsor_id > 0 if Unknown.is_not(self.sponsor_id) else Unknown.REGULAR, 'park': self.park, diff --git a/PokeAlarm/Filters/EggFilter.py b/PokeAlarm/Filters/EggFilter.py index b9eb85c02..a61baeed2 100644 --- a/PokeAlarm/Filters/EggFilter.py +++ b/PokeAlarm/Filters/EggFilter.py @@ -52,9 +52,9 @@ def __init__(self, name, data): GymUtils.create_regex, 'gym_name_excludes', data)) # Gym sponsor - self.is_sponsor = self.evaluate_attribute( # f.gym_is_sponsor True + self.sponsored = self.evaluate_attribute( event_attribute='sponsor_id', eval_func=lambda y, x: (x > 0) == y, - limit=BaseFilter.parse_as_type(bool, 'is_sponsor', data)) + limit=BaseFilter.parse_as_type(bool, 'sponsored', data)) # Gym park self.park_contains = self.evaluate_attribute( # f.gp matches e.gp @@ -108,8 +108,8 @@ def to_dict(self): settings['gym_name_excludes'] = self.gym_name_excludes # Gym Sponsor - if self.is_sponsor is not None: - settings['is_sponsor'] = self.is_sponsor + if self.sponsored is not None: + settings['sponsored'] = self.sponsored # Gym Park if self.park_contains is not None: diff --git a/PokeAlarm/Filters/RaidFilter.py b/PokeAlarm/Filters/RaidFilter.py index fcbadf45f..c68912e47 100644 --- a/PokeAlarm/Filters/RaidFilter.py +++ b/PokeAlarm/Filters/RaidFilter.py @@ -79,9 +79,9 @@ def __init__(self, name, data): GymUtils.create_regex, 'gym_name_excludes', data)) # Gym sponsor - self.is_sponsor = self.evaluate_attribute( # + self.sponsored = self.evaluate_attribute( # event_attribute='sponsor_id', eval_func=lambda y, x: (x > 0) == y, - limit=BaseFilter.parse_as_type(bool, 'is_sponsor', data)) + limit=BaseFilter.parse_as_type(bool, 'sponsored', data)) # Gym park self.park_contains = self.evaluate_attribute( # f.gp matches e.gp @@ -147,8 +147,8 @@ def to_dict(self): settings['gym_name_excludes'] = self.gym_name_excludes # Gym Sponsor - if self.is_sponsor is not None: - settings['is_sponsor'] = self.is_sponsor + if self.sponsored is not None: + settings['sponsored'] = self.sponsored # Gym Park if self.park_contains is not None: diff --git a/tests/filters/test_egg_filter.py b/tests/filters/test_egg_filter.py index 51991d8a6..07eb6076f 100755 --- a/tests/filters/test_egg_filter.py +++ b/tests/filters/test_egg_filter.py @@ -107,24 +107,22 @@ def test_current_team(self): for e in [fail1]: self.assertFalse(egg_filter.check_event(e)) - def test_is_sponsor(self): + def test_sponsored(self): # Create the filters - settings = {"is_sponsor": False} - egg_filter = Filters.EggFilter('filter1', settings) + filter1 = Filters.RaidFilter('filter1', {"sponsored": False}) + filter2 = Filters.RaidFilter('filter2', {"sponsored": True}) - # Generate events that should pass - pass1 = Events.EggEvent(generate_egg({"sponsor": 0})) + # Generate events + not_sponsored = Events.EggEvent(generate_egg({"sponsor": 0})) + sponsored = Events.EggEvent(generate_egg({"sponsor": 4})) # Test passing events - for e in [pass1]: - self.assertTrue(egg_filter.check_event(e)) - - # Generate events that should fail - fail1 = Events.EggEvent(generate_egg({"sponsor": 4})) + self.assertTrue(filter1.check_event(not_sponsored)) + self.assertTrue(filter2.check_event(sponsored)) # Test failing events - for e in [fail1]: - self.assertFalse(egg_filter.check_event(e)) + self.assertFalse(filter2.check_event(not_sponsored)) + self.assertFalse(filter1.check_event(sponsored)) def test_missing_info1(self): # Create the filters diff --git a/tests/filters/test_raid_filter.py b/tests/filters/test_raid_filter.py index 1b1945255..ee1bac276 100755 --- a/tests/filters/test_raid_filter.py +++ b/tests/filters/test_raid_filter.py @@ -102,13 +102,13 @@ def test_raid_lvl(self): def test_gym_names(self): # Create the filters - settings = {"gym_name_contains": ["pass"]} + settings = {"gym_name_contains": ["pass"]} raid_filter = Filters.RaidFilter('filter1', settings) # Generate events that should pass pass1 = Events.RaidEvent(generate_raid({"name": "pass1"})) pass2 = Events.RaidEvent(generate_raid({"name": "2pass"})) - pass3 = Events.RaidEvent(generate_raid({"name": "3pass3"})) + pass3 = Events.RaidEvent(generate_raid({"name": "3pass3"})) # Test passing events for e in [pass1, pass2, pass3]: self.assertTrue(raid_filter.check_event(e)) @@ -116,7 +116,7 @@ def test_gym_names(self): # Generate events that should fail fail1 = Events.RaidEvent(generate_raid({"name": "fail1"})) fail2 = Events.RaidEvent(generate_raid({"name": "failpas"})) - fail3 = Events.RaidEvent(generate_raid({"name": "pasfail"})) + fail3 = Events.RaidEvent(generate_raid({"name": "pasfail"})) # Test failing events for e in [fail1, fail2, fail3]: @@ -172,24 +172,22 @@ def test_current_team(self): for e in [fail1]: self.assertFalse(raid_filter.check_event(e)) - def test_is_sponsor(self): + def test_sponsored(self): # Create the filters - settings = {"is_sponsor": False} - raid_filter = Filters.RaidFilter('filter1', settings) + raid_filter1 = Filters.RaidFilter('filter1', {"sponsored": False}) + raid_filter2 = Filters.RaidFilter('filter2', {"sponsored": True}) - # Generate events that should pass - pass1 = Events.EggEvent(generate_raid({"sponsor": 0})) + # Generate events + not_sponsored = Events.RaidEvent(generate_raid({"sponsor": 0})) + sponsored = Events.RaidEvent(generate_raid({"sponsor": 4})) # Test passing events - for e in [pass1]: - self.assertTrue(raid_filter.check_event(e)) - - # Generate events that should fail - fail1 = Events.EggEvent(generate_raid({"sponsor": 4})) + self.assertTrue(raid_filter1.check_event(not_sponsored)) + self.assertTrue(raid_filter2.check_event(sponsored)) # Test failing events - for e in [fail1]: - self.assertFalse(raid_filter.check_event(e)) + self.assertFalse(raid_filter2.check_event(not_sponsored)) + self.assertFalse(raid_filter1.check_event(sponsored)) def test_missing_info1(self): # Create the filters From da792568ee888ababb3fd2b8c53f88f61c28a07d Mon Sep 17 00:00:00 2001 From: kvangent Date: Sat, 3 Mar 2018 20:03:29 -0800 Subject: [PATCH 71/79] Update wiki for sponsored filters/dts. --- docs/configuration/events/egg-events.rst | 2 ++ docs/configuration/events/gym-events.rst | 2 ++ docs/configuration/filters/egg-filters.rst | 3 +++ docs/configuration/filters/gym-filters.rst | 2 ++ docs/miscellaneous/patch-notes.md | 8 +++++--- 5 files changed, 14 insertions(+), 3 deletions(-) diff --git a/docs/configuration/events/egg-events.rst b/docs/configuration/events/egg-events.rst index 9a47a0f86..9cf7895ec 100644 --- a/docs/configuration/events/egg-events.rst +++ b/docs/configuration/events/egg-events.rst @@ -38,6 +38,8 @@ gym_image The url to the image of the gym. * team_id The id of the team currently in control of the gym. team_name The team currently in control of the gym. team_leader The leader of the team currently in control of the gym. +sponsor_id The sponsor if of the gym. 0 if not sponsored. +sponsored True if sponsored, False if not. ================= ======================================================== .. note:: diff --git a/docs/configuration/events/gym-events.rst b/docs/configuration/events/gym-events.rst index 8d0cf875f..8a95e464e 100644 --- a/docs/configuration/events/gym-events.rst +++ b/docs/configuration/events/gym-events.rst @@ -44,6 +44,8 @@ gym_description The description of the gym. * gym_image The url to the image of the gym. * slots_available Number of open guard slots available in a gym. guard_count Number of guards assigned to a gym. +sponsor_id The sponsor if of the gym. 0 if not sponsored. +sponsored True if sponsored, False if not. ================ ======================================================== .. note:: diff --git a/docs/configuration/filters/egg-filters.rst b/docs/configuration/filters/egg-filters.rst index 459596e82..f309f6f30 100644 --- a/docs/configuration/filters/egg-filters.rst +++ b/docs/configuration/filters/egg-filters.rst @@ -47,6 +47,8 @@ max_egg_lvl Maximum level of the egg when hatched. ``5`` current_teams List of allowed current teams, by id or name. ``["Instinct","Mystic"]`` gym_name_contains List of regex's required to be in the gym name. ``["Sponsored","West\\sOak"]`` gym_name_excludes List of regex's rejected to be in the gym name. ``["Sponsored","West\\sOak"]`` +park_contains List of regex's required to be in the park name. ``["Sponsored","Park\\sName"]`` +sponsored restrict sponsor_id to be zero or not ``true`` or ``false`` ================== ================================================ ================================ @@ -66,6 +68,7 @@ weather Accepted weathers, by id or name. ``["Clear geofences See :ref:`geofences_filters` page on 'Geofences' ``["geofence1","geofence2"]`` custom_dts See :ref:`custom_dts_filters` page on 'Custom DTS' ``{"dts1":"substitution"}`` is_missing_info See :ref:`missing_info_filters` page on 'Missing Info' ``true`` or ``false`` + =============== ====================================================== ============================== + Floats can use ``"inf"`` to represent infinity diff --git a/docs/configuration/filters/gym-filters.rst b/docs/configuration/filters/gym-filters.rst index 0f32de48f..bf4dd9c0d 100644 --- a/docs/configuration/filters/gym-filters.rst +++ b/docs/configuration/filters/gym-filters.rst @@ -49,6 +49,8 @@ gym_name_contains List of regex's required to be in the gym name. ``["Sponsore gym_name_excludes List of regex's rejected to be in the gym name. ``["Sponsored","West\\sOak"]`` min_slots Minimum number of guard slots available. ``2`` max_slots Maximum number of guard slots available. ``6`` +park_contains List of regex's required to be in the park name. ``["Sponsored","Park\\sName"]`` +sponsored restrict sponsor_id to be zero or not ``true`` or ``false`` ================== ================================================ ================================ diff --git a/docs/miscellaneous/patch-notes.md b/docs/miscellaneous/patch-notes.md index a629ce021..cdfef28ad 100644 --- a/docs/miscellaneous/patch-notes.md +++ b/docs/miscellaneous/patch-notes.md @@ -51,12 +51,12 @@ * **Eggs** * Park DTS: `park` - * Sponsor DTS: `sponsor_id`, `is_sponsor` + * Sponsor DTS: `sponsor_id`, `sponsored` * **Raids** * Form DTS: `form`, `form_or_empty`, `form_id`, `form_id_3` * Park DTS: `park` - * Sponsor DTS: `sponsor_id`, `is_sponsor` + * Sponsor DTS: `sponsor_id`, `sponsored` ### Filters @@ -77,12 +77,14 @@ * **Eggs** * `gym_name_excludes` restriction - restrict gym_name to not contain a regex match - * `is_sponsor` restriction - restrict sponsor_id to be zero or not + * `sponsored` restriction - restrict sponsor_id to be zero or not * `park_contains` restriction - restrict park to contain a regex match * **Raids** * `gym_name_excludes` restriction - restrict gym_name to not contain a matching regex + * `sponsored` restriction - restrict sponsor_id to be zero or not + * `park_contains` restriction - restrict park to contain a regex match ### Alarms From 71bdaa8cbef4011b897f65e7d9b2f48c79218aa3 Mon Sep 17 00:00:00 2001 From: kvangent Date: Sat, 3 Mar 2018 20:22:33 -0800 Subject: [PATCH 72/79] Change 'ignore_monsters' to 'monsters_exclude' and added to raids. --- PokeAlarm/Filters/MonFilter.py | 7 +++--- PokeAlarm/Filters/RaidFilter.py | 7 ++++++ .../configuration/filters/monster-filters.rst | 17 +++++++------- docs/configuration/filters/raid-filters.rst | 1 + docs/miscellaneous/patch-notes.md | 6 +++-- tests/filters/test_monster_filter.py | 4 ++-- tests/filters/test_raid_filter.py | 23 +++++++++++++++++++ 7 files changed, 49 insertions(+), 16 deletions(-) diff --git a/PokeAlarm/Filters/MonFilter.py b/PokeAlarm/Filters/MonFilter.py index 8fd685afb..228e35fb1 100644 --- a/PokeAlarm/Filters/MonFilter.py +++ b/PokeAlarm/Filters/MonFilter.py @@ -14,19 +14,18 @@ def __init__(self, name, data): """ Initializes base parameters for a filter. """ super(MonFilter, self).__init__(name) - # Monster ID - f.monster_ids in m.monster_id + # Monster ID - f.monster_ids contains m.monster_id self.monster_ids = self.evaluate_attribute( # event_attribute='monster_id', eval_func=operator.contains, limit=BaseFilter.parse_as_set( MonUtils.get_monster_id, 'monsters', data)) - # Exclude Monsters - f.ignore_monsters not in m.monster_id - # Filter fails if match is found. + # Exclude Monsters - f.monster_ids not contains m.ex_mon_id self.exclude_monster_ids = self.evaluate_attribute( # event_attribute='monster_id', eval_func=lambda d, v: not operator.contains(d, v), limit=BaseFilter.parse_as_set( - MonUtils.get_monster_id, 'ignore_monsters', data)) + MonUtils.get_monster_id, 'monsters_exclude', data)) # Distance self.min_dist = self.evaluate_attribute( # f.min_dist <= m.distance diff --git a/PokeAlarm/Filters/RaidFilter.py b/PokeAlarm/Filters/RaidFilter.py index c68912e47..a1ff9755f 100644 --- a/PokeAlarm/Filters/RaidFilter.py +++ b/PokeAlarm/Filters/RaidFilter.py @@ -21,6 +21,13 @@ def __init__(self, name, data): limit=BaseFilter.parse_as_set( MonUtils.get_monster_id, 'monsters', data)) + # Exclude Monster ID - f.monster_ids not contains r.ex_mon_id + self.exclude_mon_ids = self.evaluate_attribute( # + event_attribute='mon_id', + eval_func=lambda d, v: not operator.contains(d, v), + limit=BaseFilter.parse_as_set( + MonUtils.get_monster_id, 'monsters_exclude', data)) + # Distance self.min_dist = self.evaluate_attribute( # f.min_dist <= r.distance event_attribute='distance', eval_func=operator.le, diff --git a/docs/configuration/filters/monster-filters.rst b/docs/configuration/filters/monster-filters.rst index 6fa34e258..217c62e61 100644 --- a/docs/configuration/filters/monster-filters.rst +++ b/docs/configuration/filters/monster-filters.rst @@ -38,14 +38,15 @@ Available DTS General ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -============== ================================================== ================================ -Parameter Description Example -============== ================================================== ================================ -monsters Array of allowed monsters, by id or name. ``["Bulbasaur","2",3]`` -form_ids Array of allowed form ids for a monster. ``[0,"1"]`` -genders Array of acceptable genders. Options: `"male", ``["female"]`` - "female", "neutral"` -============== ================================================== ================================ +================= ================================================== ================================ +Parameter Description Example +================= ================================================== ================================ +monsters Array of allowed monsters, by id or name. ``["Bulbasaur","2",3]`` +monsters_exclude Array of excluded monsters, by id or name. ``["Bulbasaur","2",3]`` +form_ids Array of allowed form ids for a monster. ``[0,"1"]`` +genders Array of acceptable genders. Options: `"male", ``["female"]`` + "female", "neutral"` +============== ===================================================== ================================ Encounter Information diff --git a/docs/configuration/filters/raid-filters.rst b/docs/configuration/filters/raid-filters.rst index 1fe45afdb..224c3907d 100644 --- a/docs/configuration/filters/raid-filters.rst +++ b/docs/configuration/filters/raid-filters.rst @@ -42,6 +42,7 @@ General Parameter Description Example ================= ================================================ =============================== monsters Array of allowed monsters, by id or name. ``["Raikou","244",245]`` +monsters_exclude Array of excluded monsters, by id or name. ``["Raikou","244",245]`` min_raid_lvl Minimum level of the raid. ``0`` max_raid_lvl Maximum level of the raid. ``5`` min_cp Minimum CP of the monster. ``0`` diff --git a/docs/miscellaneous/patch-notes.md b/docs/miscellaneous/patch-notes.md index cdfef28ad..3adc7191c 100644 --- a/docs/miscellaneous/patch-notes.md +++ b/docs/miscellaneous/patch-notes.md @@ -66,8 +66,8 @@ * Bugfix: Geofences now always evaluate in order listed * **Monsters** - * `ignore_monsters` restriction - list of monsters to ignore, by id or - name + * `monsters_exclude` restriction - list of monsters to ignore, by id + or name * `costume_ids` restriction - restrict by costume id * **Gyms** @@ -81,6 +81,8 @@ * `park_contains` restriction - restrict park to contain a regex match * **Raids** + * `monsters_exclude` restriction - list of monsters to ignore, by id + or name * `gym_name_excludes` restriction - restrict gym_name to not contain a matching regex * `sponsored` restriction - restrict sponsor_id to be zero or not diff --git a/tests/filters/test_monster_filter.py b/tests/filters/test_monster_filter.py index b21ffde67..805ebc029 100644 --- a/tests/filters/test_monster_filter.py +++ b/tests/filters/test_monster_filter.py @@ -41,10 +41,10 @@ def test_monster_id(self): for e in [fail1, fail2, fail3]: self.assertFalse(mon_filter.check_event(e)) - def test_ignore_monster_id(self): + def test_monsters_exclude(self): # Create the filters settings = { - "ignore_monsters": [4, "5", "Charizard"] + "monsters_exclude": [4, "5", "Charizard"] } mon_filter = Filters.MonFilter('filter1', settings) diff --git a/tests/filters/test_raid_filter.py b/tests/filters/test_raid_filter.py index ee1bac276..a37f20de5 100755 --- a/tests/filters/test_raid_filter.py +++ b/tests/filters/test_raid_filter.py @@ -35,6 +35,29 @@ def test_monster_id(self): for e in [fail1, fail2, fail3]: self.assertFalse(raid_filter.check_event(e)) + def test_exclude_monster_id(self): + # Create the filters + settings = {"monsters_exclude": [382, "383", "Rayquaza"]} + raid_filter = Filters.RaidFilter('filter1', settings) + + # Generate events that should fail + pass1 = Events.RaidEvent(generate_raid({"pokemon_id": 20})) + pass2 = Events.RaidEvent(generate_raid({"pokemon_id": 150})) + pass3 = Events.RaidEvent(generate_raid({"pokemon_id": 301})) + + # Test failing events + for e in [pass1, pass2, pass3]: + self.assertTrue(raid_filter.check_event(e)) + + # Generate events that should pass + fail1 = Events.RaidEvent(generate_raid({"pokemon_id": 382})) + fail2 = Events.RaidEvent(generate_raid({"pokemon_id": 383})) + fail3 = Events.RaidEvent(generate_raid({"pokemon_id": 384})) + + # Test passing events + for e in [fail1, fail2, fail3]: + self.assertFalse(raid_filter.check_event(e)) + def test_quick_move(self): # Create the filters settings = {"quick_moves": [225, "88", "Present"]} From e585dd4ec97db9fa3ff5399b579b41143c2a3120 Mon Sep 17 00:00:00 2001 From: kvangent Date: Sun, 4 Mar 2018 08:50:22 -0800 Subject: [PATCH 73/79] RTD - Update FAQ. --- docs/configuration/events/monster-events.rst | 5 +- docs/getting-started/faq.md | 142 ---------------- docs/getting-started/faq.rst | 165 +++++++++++++++++++ 3 files changed, 166 insertions(+), 146 deletions(-) delete mode 100644 docs/getting-started/faq.md create mode 100644 docs/getting-started/faq.rst diff --git a/docs/configuration/events/monster-events.rst b/docs/configuration/events/monster-events.rst index 452e2e774..7c36f8a9b 100644 --- a/docs/configuration/events/monster-events.rst +++ b/docs/configuration/events/monster-events.rst @@ -74,9 +74,6 @@ iv_2 IVs, rounded to 2 decimal places. atk Attack IV of the monster. def Defense IV of the monster. sta Stamina IV of the monster. -base_catch Base catch rate of the monster. -great_catch Catch rate of the monster when using a super ball. -ultra_catch Catch rate of the monster when using a ultra ball. base_catch Catch rate of the monster when using a poke ball. base_catch_0 Catch rate of the monster when using a poke ball, rounded to the nearest integer. base_catch_2 Catch rate of the monster when using a poke ball, rounded to 2 decimal places. @@ -86,7 +83,7 @@ great_catch_2 Catch rate of the monster when using a great ball, rounded t ultra_catch Catch rate of the monster when using an ultra ball. ultra_catch_0 Catch rate of the monster when using an ultra ball, rounded to the nearest integer. ultra_catch_2 Catch rate of the monster when using an ultra ball, rounded to 2 decimal places. - +=================== ========================================================= Moves ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/docs/getting-started/faq.md b/docs/getting-started/faq.md deleted file mode 100644 index fc95f20d9..000000000 --- a/docs/getting-started/faq.md +++ /dev/null @@ -1,142 +0,0 @@ -# FAQ - -## Overview - -* [General Info](#general-info) -* [Troubleshooting](#troubleshooting) - -## General Info - -These are general questions about PA and it's development. - -#### Where should I go for support? -* If, after *carefully* reading the Wiki and the rest of this FAQ, you - can visit our [Discord](https://discordapp.com/invite/S2BKC7p). Make - sure to read the rules channel, so you don't inadvertently get banned. - -#### What scanners are supported? -* Currently RocketMap (RM) and Monocle are compatible with PA. - If you are interested in adding support for your program, feel free to - read the [Webhook Standard](../miscellaneous/webhook-standard.html) and - ask us in Discord what you can do to add support for PA. - -#### I have a great idea for a new feature! -* Open a Feature Request on our Github page. Use the - [correct template](https://github.com/PokeAlarm/PokeAlarm/issues/new) -- Please **DO NOT** just ask for a feature in Discord. There is a lot of - chat in discord and your request will certainly get lost. Issues let us - track the request and real with it in a more concrete manor. -- If you see a request you like, be sure to comment on it to show your - support! - -#### Do you accept PRs? -* Yup - you can submit them via Github. If it is a big change, feel free - to approach us before so we can coordinate better. - -#### Do you support new services? -* Please check in the - [New/Upcoming Services MEGA-THREAD](https://github.com/RocketMap/PokeAlarm/issues/147) - to see if the service has already been requested. If it hasn't, feel - free to leave a post requesting it. - -#### How can I support PokeAlarm? -* Besides submitting PRs or helping us with the - [Wiki](https://github.com/PokeAlarm/PokeAlarmWiki), you can support - Deadly (the creator of PA) on - [Patreon](https://www.patreon.com/pokealarm). - -## Troubleshooting - -#### PokeAlarm complains about a `ValueError` error and says I need to talk to some guy named JSON? -1. Make sure you didn't open any files with Notepad or TextEdit - they - can break the encoding on your files. Use Notepad++ or a better editor. -2. If you sure that isn't the problem, then you probably have an error - with your JSON Formatting. Look up how JSON formatting works and use a - [JSON Editor](http://www.jsoneditoronline.org/) to find your problem. - -#### Why isn't `` working right? -* You must have gym-details enabled in your scanner and webhook options. -* Most scanners don't send the gym-details with every gym related - webhook - PA will cache the details and try to remember them, but this - goes away upon restart. It takes time for the scanner to send all the - details. - -You can use file-caching to save the gym names to a file so that they -are available upon restart. Check out the -[Object Caching](../miscellaneous/object-caching.html) page for more information. - -#### How can I optimize PokeAlarm? -PA uses Gevent and Multiprocessing to be as responsive as possible to -incoming requests. However (due to language and hardware limitations), -it is possible for PA to be overwhelmed and have a hard time handling -requests for large setups. If you are experiencing problems, you can try -the following options: - -1. If on Windows, try Linux (even a VM will see large improvements). -2. Run PA on a separate server. -3. Lower the number of managers you are using. Each manager runs in its - own process, which makes it expensive. -4. If possible, separate scanners and pa instances into smaller groups - and even onto different servers. -5. Upgrade your server hardware. - -PA also has a `concurrency` setting that can be lowered - it limits the -number of active connections allowed to it. This will prevent PA - -Additionally, there are a number of settings in RM to optimize: -1. Disable extra webhooks - use RM's blacklist/whitelist and disable - webhook types you aren't using. -2. Lower webhook-threads (`wh-concurrent` or similar) - This will cause - RM to send less connections at once. -3. Increase `wh-frame-interval` - Increase the number of events RM sends - at once to lower overhead. -5. Increase `wh-lfu-size` - this will increase RM's cache size to repeat - less information. -6. Increase `wh-backoff-factor` - Increase break between webhooks. -7. Increase `wh-connect-timeout` and `#wh-read-timeout` timeouts for RM. - This gives your server more time to react. -8. Decrease database threads `db-concurrency` or similar - uses less - sockets. - -**Note:** Decreasing/Increase these settings may cause queue build up -in a variety of different places. It is a matter of trial and error to -find the ideal settings for your setup. - -Try the RM (or PA) Discord for more info. - -#### Error 10053 on Windows or Error 53 on Linux? -* This is an issue with too many open sockets on windows that causes - PA to be unable to open an new connections. See the above steps for - some suggestions on optimization. - -#### RocketMap repeatedly spams `Caused by ReadTimeoutError("HTTPConnectionPool(host='127.0.0.1', port=4000)`? -* This mean's that RM is not connecting to PA for some reason: - -1. Make sure PA is running. -2. Make sure RM is sending to the correct IP:PORT combo. -3. If the PokeAlarm instance is on a remote server, try increasing RM's - `wh-timeout` parameter (which defaults to 1s). -4. Check hardware for a bottleneck. See above for optimizations. - -#### Why do some DTS (``, etc) or another DTS show up as `?`? -* PA replaces DTS that are used with `?`, `???`, or `unknown` when it - doesn't know the correct information. This could be a variety of reasons - -#### Map images aren't showing up correctly... What can I do? -* Make sure you have added a [Location Services](../miscellaneous/location-services.html) - and have the Static Maps API enabled. If you already have it enabled, make - sure that you haven't hit the limit for free users. - -#### Missing icons in your alerts? -* Remove your lines from `icon_url` and `avatar_url` from your - [Alarms](../configuration/alarms) to use the default images in the PA. - -#### Do you want to use custom images in your alerts? -* Add in your alarms the option to add images (depends on the service - that is used) and add your url where the images are. For example, if you - use [Discord](../configuration/alarms/discord.html) it will be something - like this: - -``` -"icon_url":"https://raw.githubusercontent.com/user/PokeIcons/master/icons/.png" -``` diff --git a/docs/getting-started/faq.rst b/docs/getting-started/faq.rst new file mode 100644 index 000000000..15389cfd2 --- /dev/null +++ b/docs/getting-started/faq.rst @@ -0,0 +1,165 @@ +FAQ +===================================== + +.. contents:: Table of Contents + :depth: 2 + :local: + + +General +------------------------------------- + + +Where should I go for support? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If, after *carefully* reading the Wiki and the rest of this FAQ, you can visit +our `Discord `_. Make sure to read the +rules channel, so you don't inadvertently get banned. + +Feel free to also open an issue on our +`Github `_ - just make sure +to use the correct template and to fill out all the information! + + +What Scanner should I use? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +We support a wide variety of scanners and forks - including Monocle, +Monocle-Alt, stock RocketMap, and RocketMap-Alt. PA relies on information from +Scanner via webhook - as a result, certain features may be available for some +scanners and not others. + + +How can I get request features? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Feel free to open an issue on our `Github`_ - just make sure to use the correct +template and to fill out all the information! + +If your request is for a new service, use the +`New/Upcoming Services MEGA-THREAD `__ +and mention you would like to see support for a certain service. + +Discord is NOT a good place to request new features - it's highly likely your +request will be missed or ignored. + + +Do you accept Pull Requests? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Yup! Feel free to open on against our `Github`_ - however it is a significant +change, it is probably best to consult us first. + + +How else can I support PA? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Besides submitting PRs or helping with the Wiki, Deadly (the original creator +and maintainer of PA) has a `Patreon `_. + + +Startup Errors +------------------------------------- + + +PA throws a`ValueError` error about a JSON file? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +First, make sure you haven't used Notepad or TextEdit on your configuration +files - they will disrupt the encoding on your file and cause issues. + +Second, make sure your file is in the correct JSON format - Google "JSON +Formatting" and use a `JSON Editor https://www.jsoneditoronline.org/`__ to +verify you are in the right format. + + +Error about a 'Queue'? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +PA only supports Python2, and not Python3. + + +ModuleNotFoundError: No module named X +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +After updating PA, make sure you always check for updated requirements. +Run the command ``pip install -r requirements.txt --upgrade`` from the PA +folder. + + +Runtime Errors +------------------------------------- + +DTS reporting "Unknown" +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +If you see a DTS being replaced by "?", "???", or "Unknown", that usually means +that your scanner didn't send enough information to PA for it to determine its +value. This could be + + +Gym Name DTS reporting "Unknown" +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +RM doesn't do a good job of sending gym details through webhooks - to +make up for this, PA caches information between different webhooks. However +this cache takes a while to build up. You can also use the `file` cache to +prevent this cache + + +Why didn't I get an alert for this Event that is on my Map? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Make sure that your filters are set up exactly as you want them - in +particular, make sure you understand the "is_missing_info" restriction. You +can use the webhook tester (``python tools/webhook_test.py``) to recreate an +event to verify they are working correctly. + +Finally, check your scanner or PA for errors. If your scanner doesn't send the +info, PA can't process it. + + +Error 10053 (Windows) or Error 53 (Linux) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This error means that PA tried to use a closed connection. It generally happens +when the server PA is running on it overloaded. Check your CPU and Disk IO - if +it is spiking when you get these errors, your server is under heavy load. There +some things you can still do: + ++ If on Windows, use Linux (Even a VM will see huge improvements). ++ Run PA, your scanner, or your data base on separate servers if possible. ++ Optimize PA and your scanner setup. ++ Switch to a more efficient scanner (Monocle is typically harder to set up, + but more efficient than RocketMap) ++ If all else fails, upgrade your hardware. + + +How can I optimize PA? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Generally, the biggest improvement you can see is to eliminate multiple +instances using managers. Managers can be consolidated by +using Rules. Lower the number of geofences you use, or the number of points +they contain. Finally, you can try to lower the number of filters you are +using. + +Additionally, if you can set the 'concurrency' inside PA to a lower value - +this lowers the number of connections allowed to PA, which allows it to respond +faster. + + +How can I optimize my scanner? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +For the most part, you should consult the maintainer of your scanner for tips. +Generally, you want to follow the same logic and work towards consolidating +instances. + +For RM in particular, there are default values you can adjust (particularly +around sending webhooks): ++ Disable extra webhooks - Use the blacklist/whitelist and disable types you + don't need. ++ ``wh-lfu-size`` - (increase to 5000 or more) - this will increase RM's cache + size and cause it to send less repeats. ++ ``wh-frame-interval`` - (increase up to 1000) - decreases the frequency in + which RM sends events. ++ ``wh-backoff-factor`` - (increase .5 to 1)- if a connection does fail, this + gives more time between retries. ++ ``wh-connect-timeout`` and ``wh-read-timeout`` - (PA recommends between 5 to + 10 seconds)- if you are experiencing periodic spikes of cpu or disk io, this + gives your server more time to appropriately handle this request. Lowering + this value could cause the connection to expire early, decreasing the chance + of the webhook being delivered successfully and adding additional overhead + from pipe errors and retries. ++ ``wh-threads`` and ``db-threads`` should be as low as possible (generally 1) From 391538d62e7c1fa6c10b5d853975dc57614bc299 Mon Sep 17 00:00:00 2001 From: kvangent Date: Sun, 4 Mar 2018 08:53:33 -0800 Subject: [PATCH 74/79] RTD - move geofence image. --- .../images/geofence_central_park_bounded.png | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/{miscellaneous => configuration}/images/geofence_central_park_bounded.png (100%) diff --git a/docs/miscellaneous/images/geofence_central_park_bounded.png b/docs/configuration/images/geofence_central_park_bounded.png similarity index 100% rename from docs/miscellaneous/images/geofence_central_park_bounded.png rename to docs/configuration/images/geofence_central_park_bounded.png From b58264249d0fa97344773522f2f6bfcfbae1d5b7 Mon Sep 17 00:00:00 2001 From: kvangent Date: Sun, 4 Mar 2018 09:02:30 -0800 Subject: [PATCH 75/79] RTD - remove unfinished files. --- docs/guides/json-formatting.md | 3 --- docs/guides/upgrade-tool.md | 3 --- docs/index.rst | 4 ---- docs/miscellaneous/webhook-tester.md | 3 --- 4 files changed, 13 deletions(-) delete mode 100644 docs/guides/json-formatting.md delete mode 100644 docs/guides/upgrade-tool.md delete mode 100644 docs/miscellaneous/webhook-tester.md diff --git a/docs/guides/json-formatting.md b/docs/guides/json-formatting.md deleted file mode 100644 index 13d7a0a00..000000000 --- a/docs/guides/json-formatting.md +++ /dev/null @@ -1,3 +0,0 @@ -# JSON Formatting Help - -.. note:: This page is still under construction! Check back later! diff --git a/docs/guides/upgrade-tool.md b/docs/guides/upgrade-tool.md deleted file mode 100644 index 7db76a3cc..000000000 --- a/docs/guides/upgrade-tool.md +++ /dev/null @@ -1,3 +0,0 @@ -# 3.5 -> 3.6 Alarm Upgrade Tool - -.. note:: This page is still under construction! Check back later! diff --git a/docs/index.rst b/docs/index.rst index 99993fb31..3d74e908d 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -50,9 +50,6 @@ know of any rare spawns or raids. :glob: Getting Started - JSON Formatting Help - 3.5 -> 3.6 Alarm Upgrade Tool - Bug Reports / Feedback .. toctree:: @@ -62,7 +59,6 @@ know of any rare spawns or raids. :glob: Webhook Standards - Webhook Tester Patch Notes Caching Docker diff --git a/docs/miscellaneous/webhook-tester.md b/docs/miscellaneous/webhook-tester.md deleted file mode 100644 index 8140b1ce5..000000000 --- a/docs/miscellaneous/webhook-tester.md +++ /dev/null @@ -1,3 +0,0 @@ -# Webhook Tester - -.. note:: This page is still under construction! Check back later! From 5a5eda4b4e113e134bff89360cc7d403f9d73dbf Mon Sep 17 00:00:00 2001 From: kvangent Date: Sun, 4 Mar 2018 10:05:31 -0800 Subject: [PATCH 76/79] RTD - add sponsor dts to raids. --- docs/configuration/events/raid-events.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/configuration/events/raid-events.rst b/docs/configuration/events/raid-events.rst index aefe07a06..b56a6fc13 100644 --- a/docs/configuration/events/raid-events.rst +++ b/docs/configuration/events/raid-events.rst @@ -61,6 +61,8 @@ gym_image The url to the image of the gym. * team_id The id of the team currently in control of the gym. team_name The team currently in control of the gym. team_leader The leader of the team currently in control of the gym. +sponsor_id The sponsor if of the gym. 0 if not sponsored. +sponsored True if sponsored, False if not. ================= ============================================================ .. note:: From c3e0e138c993af4d497a86ff19cbc8f289837293 Mon Sep 17 00:00:00 2001 From: Marcus Ponting Date: Tue, 20 Mar 2018 13:20:47 +0000 Subject: [PATCH 77/79] send transformed pokemon name in form for ditto --- PokeAlarm/Alarms/Discord/DiscordAlarm.py | 4 ++-- PokeAlarm/Alarms/FacebookPage/FacebookPageAlarm.py | 2 +- PokeAlarm/Alarms/Slack/SlackAlarm.py | 2 +- PokeAlarm/Alarms/Telegram/TelegramAlarm.py | 2 +- PokeAlarm/Events/MonEvent.py | 11 +++++++---- PokeAlarm/Locale.py | 4 +++- 6 files changed, 15 insertions(+), 10 deletions(-) diff --git a/PokeAlarm/Alarms/Discord/DiscordAlarm.py b/PokeAlarm/Alarms/Discord/DiscordAlarm.py index 255ee2e38..fd556bccc 100644 --- a/PokeAlarm/Alarms/Discord/DiscordAlarm.py +++ b/PokeAlarm/Alarms/Discord/DiscordAlarm.py @@ -28,9 +28,9 @@ class DiscordAlarm(Alarm): 'username': "", 'content': "", 'icon_url': get_image_url( - "regular/monsters/_.png"), + "regular/monsters/.png"), 'avatar_url': get_image_url( - "regular/monsters/_.png"), + "regular/monsters/.png"), 'title': "A wild has appeared!", 'url': "", 'body': "Available until <24h_time> ()." diff --git a/PokeAlarm/Alarms/FacebookPage/FacebookPageAlarm.py b/PokeAlarm/Alarms/FacebookPage/FacebookPageAlarm.py index ba977ddf2..a20b61088 100644 --- a/PokeAlarm/Alarms/FacebookPage/FacebookPageAlarm.py +++ b/PokeAlarm/Alarms/FacebookPage/FacebookPageAlarm.py @@ -28,7 +28,7 @@ class FacebookPageAlarm(Alarm): 'monsters': { 'message': "A wild has appeared!", 'image': get_image_url( - "regular/monsters/_.png"), + "regular/monsters/.png"), 'link': "", 'name': "", 'description': "Available until <24h_time> ().", diff --git a/PokeAlarm/Alarms/Slack/SlackAlarm.py b/PokeAlarm/Alarms/Slack/SlackAlarm.py index 436c2fc64..20372b211 100644 --- a/PokeAlarm/Alarms/Slack/SlackAlarm.py +++ b/PokeAlarm/Alarms/Slack/SlackAlarm.py @@ -28,7 +28,7 @@ class SlackAlarm(Alarm): 'monsters': { 'username': "", 'icon_url': get_image_url( - "regular/monsters/_.png"), + "regular/monsters/.png"), 'title': "A wild has appeared!", 'url': "", 'body': "Available until <24h_time> ()." diff --git a/PokeAlarm/Alarms/Telegram/TelegramAlarm.py b/PokeAlarm/Alarms/Telegram/TelegramAlarm.py index 1c2d3fb60..009ecad52 100644 --- a/PokeAlarm/Alarms/Telegram/TelegramAlarm.py +++ b/PokeAlarm/Alarms/Telegram/TelegramAlarm.py @@ -36,7 +36,7 @@ class TelegramAlarm(Alarm): 'message': "*A wild has appeared!*\n" "Available until <24h_time> ().", 'sticker_url': get_image_url( - "telegram/monsters/_.webp") + "telegram/monsters/.webp") }, 'stops': { 'message': "*Someone has placed a lure on a Pokestop!*\n" diff --git a/PokeAlarm/Events/MonEvent.py b/PokeAlarm/Events/MonEvent.py index 0f68aa730..137ae4d10 100644 --- a/PokeAlarm/Events/MonEvent.py +++ b/PokeAlarm/Events/MonEvent.py @@ -123,8 +123,9 @@ def __init__(self, data): def generate_dts(self, locale, timezone, units): """ Return a dict with all the DTS for this event. """ time = get_time_as_str(self.disappear_time, timezone) - form_name = locale.get_form_name(self.monster_id, self.form_id) + form_id_3 = "{:03d}".format(self.form_id) + mon_id_3 = "{:03}".format(self.monster_id) costume_name = locale.get_costume_name( self.monster_id, self.costume_id) @@ -140,7 +141,7 @@ def generate_dts(self, locale, timezone, units): 'encounter_id': self.enc_id, 'mon_name': locale.get_pokemon_name(self.monster_id), 'mon_id': self.monster_id, - 'mon_id_3': "{:03}".format(self.monster_id), + 'mon_id_3': mon_id_3, # Time Remaining 'time_left': time[0], @@ -219,7 +220,7 @@ def generate_dts(self, locale, timezone, units): 'form': form_name, 'form_or_empty': Unknown.or_empty(form_name), 'form_id': self.form_id, - 'form_id_3': "{:03d}".format(self.form_id), + 'form_id_3': form_id_3, # Costume 'costume': costume_name, @@ -321,6 +322,8 @@ def generate_dts(self, locale, timezone, units): and self.weight >= 13.13 else ''), 'tiny_rat': ( 'tiny' if self.monster_id == 19 and Unknown.is_not(self.weight) - and self.weight <= 2.41 else '') + and self.weight <= 2.41 else ''), + 'image_suffix': mon_id_3 + '_' + + '000' if self.monster_id == 132 else form_id_3 }) return dts diff --git a/PokeAlarm/Locale.py b/PokeAlarm/Locale.py index 01cc5a96f..91dfed1f5 100644 --- a/PokeAlarm/Locale.py +++ b/PokeAlarm/Locale.py @@ -119,7 +119,9 @@ def get_type_name(self, type_id): # Returns the name of the form of for the given Pokemon ID and Form ID def get_form_name(self, pokemon_id, form_id): - return self.__form_names.get(pokemon_id, {}).get(form_id, 'unknown') + return self.__pokemon_names.get(form_id, 'unknown') if ( + pokemon_id == 132) else self.__form_names.get( + pokemon_id, {}).get(form_id, 'unknown') # Returns the name of the costume for the given Pokemon ID and Costume ID def get_costume_name(self, pokemon_id, costume_id): From 4e5d6595a3c3918ce0d2256a2f75698d964ebc02 Mon Sep 17 00:00:00 2001 From: Marcus Ponting Date: Tue, 20 Mar 2018 13:37:16 +0000 Subject: [PATCH 78/79] bugfix --- PokeAlarm/Events/MonEvent.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PokeAlarm/Events/MonEvent.py b/PokeAlarm/Events/MonEvent.py index 137ae4d10..205d308a7 100644 --- a/PokeAlarm/Events/MonEvent.py +++ b/PokeAlarm/Events/MonEvent.py @@ -126,6 +126,7 @@ def generate_dts(self, locale, timezone, units): form_name = locale.get_form_name(self.monster_id, self.form_id) form_id_3 = "{:03d}".format(self.form_id) mon_id_3 = "{:03}".format(self.monster_id) + form_for_image = '000' if self.monster_id == 132 else form_id_3 costume_name = locale.get_costume_name( self.monster_id, self.costume_id) @@ -323,7 +324,6 @@ def generate_dts(self, locale, timezone, units): 'tiny_rat': ( 'tiny' if self.monster_id == 19 and Unknown.is_not(self.weight) and self.weight <= 2.41 else ''), - 'image_suffix': mon_id_3 + '_' + - '000' if self.monster_id == 132 else form_id_3 + 'image_suffix': mon_id_3 + '_' + form_for_image }) return dts From 9cddc089b42645fae3b1a570fb48c7ebf11ae746 Mon Sep 17 00:00:00 2001 From: BillyJBryant <3013565+billyjbryant@users.noreply.github.com> Date: Thu, 12 Apr 2018 10:08:43 -0400 Subject: [PATCH 79/79] Adding deep linking for PokeGo++2.0 --- PokeAlarm/Events/EggEvent.py | 3 ++- PokeAlarm/Events/GymEvent.py | 4 +++- PokeAlarm/Events/MonEvent.py | 6 ++++-- PokeAlarm/Events/RaidEvent.py | 5 +++-- PokeAlarm/Events/StopEvent.py | 3 ++- PokeAlarm/Utils.py | 10 ++++++++-- 6 files changed, 22 insertions(+), 9 deletions(-) diff --git a/PokeAlarm/Events/EggEvent.py b/PokeAlarm/Events/EggEvent.py index 4ff686bd8..53eb2d0cf 100644 --- a/PokeAlarm/Events/EggEvent.py +++ b/PokeAlarm/Events/EggEvent.py @@ -3,7 +3,8 @@ # 3rd Party Imports # Local Imports from PokeAlarm.Utils import get_time_as_str, get_seconds_remaining, \ - get_gmaps_link, get_applemaps_link, get_dist_as_str, get_weather_emoji + get_gmaps_link, get_applemaps_link, get_pokego2_link, get_dist_as_str, \ + get_weather_emoji from . import BaseEvent from PokeAlarm import Unknown diff --git a/PokeAlarm/Events/GymEvent.py b/PokeAlarm/Events/GymEvent.py index f826478c7..966f61d0e 100644 --- a/PokeAlarm/Events/GymEvent.py +++ b/PokeAlarm/Events/GymEvent.py @@ -1,7 +1,8 @@ # Standard Library Imports # 3rd Party Imports # Local Imports -from PokeAlarm.Utils import get_gmaps_link, get_applemaps_link, get_dist_as_str +from PokeAlarm.Utils import get_gmaps_link, get_applemaps_link, get_pokego2_link, \ + get_dist_as_str from . import BaseEvent from PokeAlarm import Unknown @@ -65,6 +66,7 @@ def generate_dts(self, locale, timezone, units): 'direction': self.direction, 'gmaps': get_gmaps_link(self.lat, self.lng), 'applemaps': get_applemaps_link(self.lat, self.lng), + 'pokego2': get_pokego2_link(self.lat, self.lng, self.gym_name), 'geofence': self.geofence, # Team Info diff --git a/PokeAlarm/Events/MonEvent.py b/PokeAlarm/Events/MonEvent.py index 205d308a7..d03f4b667 100644 --- a/PokeAlarm/Events/MonEvent.py +++ b/PokeAlarm/Events/MonEvent.py @@ -5,8 +5,8 @@ from PokeAlarm import Unknown from PokeAlarm.Utilities import MonUtils from PokeAlarm.Utils import ( - get_gmaps_link, get_move_type, get_move_damage, get_move_dps, - get_move_duration, get_move_energy, get_pokemon_size, + get_gmaps_link, get_pokego2_link, get_move_type, get_move_damage, + get_move_dps, get_move_duration, get_move_energy, get_pokemon_size, get_applemaps_link, get_time_as_str, get_seconds_remaining, get_base_types, get_dist_as_str, get_weather_emoji, get_type_emoji) @@ -165,6 +165,8 @@ def generate_dts(self, locale, timezone, units): 'direction': self.direction, 'gmaps': get_gmaps_link(self.lat, self.lng), 'applemaps': get_applemaps_link(self.lat, self.lng), + 'pokego2': get_pokego2_link( + self.lat, self.lng, locale.get_pokemon_name(self.monster_id)), 'geofence': self.geofence, # Weather diff --git a/PokeAlarm/Events/RaidEvent.py b/PokeAlarm/Events/RaidEvent.py index ebdd643a3..52d0aa629 100644 --- a/PokeAlarm/Events/RaidEvent.py +++ b/PokeAlarm/Events/RaidEvent.py @@ -5,8 +5,8 @@ from PokeAlarm import Unknown from . import BaseEvent from PokeAlarm.Utils import get_gmaps_link, get_applemaps_link, \ - get_time_as_str, get_move_type, get_move_damage, get_move_dps, \ - get_move_duration, get_move_energy, get_seconds_remaining, \ + get_pokego2_link, get_time_as_str, get_move_type, get_move_damage, \ + get_move_dps, get_move_duration, get_move_energy, get_seconds_remaining, \ get_dist_as_str, get_pokemon_cp_range, is_weather_boosted, \ get_base_types, get_weather_emoji, get_type_emoji @@ -157,6 +157,7 @@ def generate_dts(self, locale, timezone, units): 'direction': self.direction, 'gmaps': get_gmaps_link(self.lat, self.lng), 'applemaps': get_applemaps_link(self.lat, self.lng), + 'pokego2': get_pokego2_link(self.lat, self.lng, self.gym_name), 'geofence': self.geofence, # Weather diff --git a/PokeAlarm/Events/StopEvent.py b/PokeAlarm/Events/StopEvent.py index 7ae63e95b..ae7380ce1 100644 --- a/PokeAlarm/Events/StopEvent.py +++ b/PokeAlarm/Events/StopEvent.py @@ -5,7 +5,7 @@ from PokeAlarm import Unknown from . import BaseEvent from PokeAlarm.Utils import get_gmaps_link, get_applemaps_link, \ - get_time_as_str, get_seconds_remaining, get_dist_as_str + get_pokego2_link, get_time_as_str, get_seconds_remaining, get_dist_as_str class StopEvent(BaseEvent): @@ -62,6 +62,7 @@ def generate_dts(self, locale, timezone, units): 'direction': self.direction, 'gmaps': get_gmaps_link(self.lat, self.lng), 'applemaps': get_applemaps_link(self.lat, self.lng), + 'pokego2': get_pokego2_link(self.lat, self.lng, self.stop_id), 'geofence': self.geofence }) return dts diff --git a/PokeAlarm/Utils.py b/PokeAlarm/Utils.py index fd5192180..dbc4cddde 100644 --- a/PokeAlarm/Utils.py +++ b/PokeAlarm/Utils.py @@ -372,9 +372,15 @@ def get_gmaps_link(lat, lng): # Returns a String link to Apple Maps Pin at the location def get_applemaps_link(lat, lng): - latlon = '{},{}'.format(repr(lat), repr(lng)) + latlng = '{},{}'.format(repr(lat), repr(lng)) return 'http://maps.apple.com/maps?' \ - + 'daddr={}&z=10&t=s&dirflg=w'.format(latlon) + + 'daddr={}&z=10&t=s&dirflg=w'.format(latlng) + + +# Returns a String link to Teleport to a location in PokeGo++2.0 +def get_pokego2_link(lat, lng, name, type): + deeplink = '{},{},{}'.format(repr(lat), repr(lng), str(name)) + return 'https://pokego2.com/p.html?{}'.format(deeplink) # Returns a static map url with and parameters for dynamic test

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 literal 0 HcmV?d00001 diff --git a/docs/images/09_dashboard_geocoding_distance_enabled.png b/docs/images/09_dashboard_geocoding_distance_enabled.png new file mode 100644 index 0000000000000000000000000000000000000000..885af6ad795334b4f808cbdc2712859c1b3b561b GIT binary patch literal 46418 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 literal 0 HcmV?d00001 diff --git a/docs/images/11_credentials2.png b/docs/images/11_credentials2.png new file mode 100644 index 0000000000000000000000000000000000000000..66c0ca0b839933e3ef00f50ec582efae7818077b GIT binary patch literal 48190 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∨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 FCIE0#9x?y` literal 0 HcmV?d00001 diff --git a/docs/images/13_key_name.png b/docs/images/13_key_name.png new file mode 100644 index 0000000000000000000000000000000000000000..f139a83995f0a7f56da2a0f4d0ee6cdf8c12cc6d GIT binary patch literal 37464 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 literal 0 HcmV?d00001 diff --git a/docs/images/14_here_is_your_key.png b/docs/images/14_here_is_your_key.png new file mode 100644 index 0000000000000000000000000000000000000000..721fe21a3eccfe83ff7f6ed49e3ff4967653a74c GIT binary patch literal 34652 zcmd43XH=70)CL&!0zyQ*DnUg+^ePC5C{1bvtVo9d0qIRhC`tz*NWF@HN>h*~QbP|3 zy{aG}1Stt26j1>wp$JJJA<4Y)e)FxFKl5XL%$l>7BFX!nzV~_dv!CNr6QkRL0;dE( zAdukQJ2%WgpuY-0p#66b@&cbc0{!zF__5F5?6xkbYUuP5@XKEwI)*wRP;Cl$&xr^4 zo!{>c+#duw{E_=-U%KpJQ4lD8^X?5Dix7JXE5h$SJz_QjMcbG7$+-!nbL20{f8R;J za(-Zg6TThz^TNZ_ZT-snr_}~4Gv3wijNZV3QO^b3i06pG3L!^@u4FiAVWdv6rWjmk zDyDoyxxT%Sk%jYoJ7yUn`%F$z>1OKjJ340$?!V{PbYBjVIE|sNhtp0w)_(l{favcE1WAJ&;)sv-ocuY`geZ~`61*$l-)=6^qH4;j$Gdds!6flaZMiv z)sRj3c|a|(IaLU3R&#T6^hFTJvBUcQeT%DaeoDLpA^#=%Ehc4Iz|)r39!?_;U-(;y zH(32{%e};^_s3_8&B5Gej{FiARHE->xtF+VMRXoQ8T8w%4olND0v_Hc&5^F}V7A%(&vFI+ghC_xc3scVz2e<_=zNL1JC0NO%*VokKudVsG zVMvb4`azqva*&u>w>Jj2w6wIktj!xM3>$Vq;^N$~F-0VgN0}(%58hI*dEdLgbmX!3 z%^g>{zv?_`mKc#H*~I zFLy>-bIz0>@j@aEur`K$u4Yn3Zx0q%S;%K9U%B%4^Ga8I_-bwM-jRXW0de(!&k`U_ zOPRZOt1w~fsqy2pA;$&p9lAVI${aVQO^2;I z-akM}mwJTA4gO)Ir?sYzFE0psC9PXZ^YaV{2pC^3@>A2eLON1+tRiA})zxiZ25ZV& zGA$>HqI_B_Ea0ATGhianhvI6FTrcJy5FZPQHKFm{)y|`L5PR4rr%s((wwB}vfpC11 zV?!QKM!$S{E}>ibNw@Svf)KN7EC|!F=`-6-;WI_oA|zWP!^coe(v?FoSC8?!rl@x! z0x6T&Z!fohrrKJasS{tx^JK7j_30NgAj%H#_O=`z=p3n#TDx>tDs3Q$$0bK_e#+yg zq_K{MtP_dXa-T4-iRJv5`1LnP_2QD0p5Xf+;q;oP(;FK#9L3Y?A0v0+cZ3fIJ@Jw< z)p!X%wI^*o;Ue{9YY~50(5l*ge08+~H7BmjEc`YdJWKtc>evv*VbKFw3~CXmf5HWw z)*85CslfGol-00K_GXh-RGmOBO-9_dCqoeZ0+-0L^N@s}xDL;EfoZD5&Lt0G+-x}F zQ$9h4p<4@se=5m#k2|0dC)Pm7BNv^jpRzH=HeY>!G}N9ne-Vds(;)rA5$me6e!vx5 z2UN59=sR+&z0F?Y zeF7s_!1%GHSiNxiZHR7CN(%GI>!P1Mv_2z?jMvq{&LI=}(%_a=hvP_FoX}i{i79_v z<#D(3X>oYS_47yhIa{YJH6|tYIf2|3d1T&!Kp{${v6D@!lRfMOq3ju~fUK(x+FjR@ z-;HQQ?xKBVcU@^cj9EE{&~;}bM_1SHF~f(eJfGVgBei>f!cMwdU-uyTA!-r09E-oP z(<&p!@l(xqo7vwHxrIQ#kWm^z0MT39#A zsfJ>!Sa>f}emBO>np_{G;_c<7KRPB0a2mk$=pVKwwdP zQOx#05)GNlvyV1GaO>^IMeP2bFPdMUZdtUlBdM#m@j7Bw9a^9Bn8d`yuqDo_OzeFA z{4X@c3-Aq5OcHj~Yu{Mds+y@C7~2v~UwgI^-`=jxQSYnj>n^V#ppf-$6g9HPUI3kU2}i8Q+{ z|Ee+WcR9^hG^kxK>F4ZjR3cqV#FxKP7Q1$+_GVt;fyhn=POwi{xrJzCdPZPI z?jz{EwK7W{VP1kn*x82;{+j5Jy3W3jDW_qNzrE;?pl;H~O4Bmw9>Ng6dX)mOp^*{8 zvzMe2X@J>5xJs-UZ@52M8AEZH5-rZMkgK2{()uhuPK)! z(>gn&BtWFQgslF!qHM@FYmj?EiWV+4fszn+#|hI~qh`0VRYA(V};%*0+zUjg8V%9HB# za73c`HBvJU{nrU0ytc2CLese13nhu2PQE?7tt_+E_Ixh)ga$b>N$W05+m{O=8h9^5 ziY`LA7wmnzgn;m#Wp7SD``dB_?4?1g9JgVTyjti8MOA69q>N=} zh}G7{w>CfM>1#%|HW@@VH+^w#KY9Jrt7l?6FC?zPPZW)9m~9-F_ivcmI3Vr+`%ZWD z7yxtvu8C|ND8q&*`h+L*m^_{P`;*zU*B3l`PFc1tgXSUZv{aJrjGHu2PGg;|m*Gbv z1wIrTA=@DDt&ccMskXevEkco?@&59}+|Y%Ss1U|d3G3NeaD;AUNBsvdrABT%8dFnV zmd_mmo^lj- z$2@~wrLrTS@LyxhdT3kvtN|XqvsJv1uy-LC5=IhZPDZS>x&K>lbKauS5ZqN!mLDv2 zu>b8&mtN#`cO8;f1+*ADDR28JHSor1o66?0)bR`~s7EH)hOCt^uJ5!#&F|JPB_#LR zR$6{_ppkWpaOz7fUo5+-BJ^$BP!Iu{rX@911=EFp zb6-*S`xYfJ1; z;l9?iLKal%Q%qDgE_yU*=g=(GG@6j3Blp*`(Wk&OsR2Y5LZrQ3|HAvOgqDC=hjbGs z2NTO3=O<%f6_=&K`35S}kLr98<#q4Tp-vMuN2FKRFA|(c)|k9^w<4OHFKixJk5}&7 zLg#+xKYvTyir6G1`*1a+7u2tNR)b_c>^itP$(QZ3)o@j?;n_c6kJVTwD8-o&4FS6& zQSV$OlVSJaovvLkc+?5VAtMHDU@Ep_xKj7CeFGMci@>?9>Q3c)NJdc$-L{ZoxLM%% zTb32=jx3x!pdDVNB~|gIjwnuDu@@9Ju}+GR_|X1&RpVsP$5|Tyyi>SNHOh^a@+HT* zw9c}o&Mti+$0pBOHr*(=klYWEolwsn6l{L=Q0z;QQa~x0wQANO8qd4>(93*Z+S7)Q zXN9~R;!Ftm5yz^~v5K?(SzUq7eczKb26vkbzMy<6N_r)HkFWd2l1k<8Bo4Zg7*Ea4 zUV9@~^(a#vQEcTKuTfhSc|LmMgSwP2v25wvt20M1+T}-k^UR1OA;!3|SWMk@>m=84 zb;zB1A(d&Q+d;P{iGohYw88I?3OVXqGy0Y!*Kq@@s{5PSM7Z?vAnlp{{nyY#b?$eA zy1Y}ov$WQ~e@bMx+bFmhuE|+=LDg*k_2767&-CT)SL%NCZg?tB1k7>&Wb#khw~m&HOSe(==_SJH45YBN5+UQby! zx{AF>h)@vw(i5YT=yc^O|)0BJ3MM@I8+hG6YjH?{(cDas=kzRPDzpEc#l-cP zQ+Q0qH9>mtV?C^6%?kfL5xE%sMh-?_dPS&T-1nc?%fS*)w|}<{h<|Pe7d(&C_|c#x zOe~GP3b_uKFm$@^wyZkis}iobw*QN+1o(0HCgIFyMy%JDh?3ojtXX*PPlz^;bJMzy zk-z&r!M1f;-$amiHYIr3_EPMlJn8W&d)j)ehcoE_TM7K}ITh?S_}d09oHi{iUvX>s zqfAgmpUp(Tnv<^dF(0D!K{pYsQ|fhez4fIxd^M}4@h0(S1VB-@6OMQ-*3pZ#KEe~R zSa%^Fij**c zwT!m&7wVh_u8*arlZXlv}q)<`nk=kRbR_nJo_v@(-wPj+<7u;4SLGob^CdZ zAL(xd>p@RrjQaG}x`(R?r^NX$$YB&d%e!8(7GUbxBwcbDh#y?+e%P{efBpTKCp_Cn zN{i`<%#Cp3&yS*NEg$Kx=QRzmI1K8fNpfQdMo(45b5@Q!@ft0KLdzvN%K6o8^f6NE z@={*$04||Y_;4&!WG%SFJv=2^%v=N4BOtod;!m2cQ<`mkZ|~e^6j)o;LihSTb!X*G z_t6w1k7QbCP(y2O!1s24L*q;;M(nv}Y=oFDw$A9Yp$uu2<9Tk+>s+wTLVNAAqO}hH zNdW?1TA-zPu+(W$f@6dp9Gejs?-QZh=3hwSJc~0yJYs%dH#aHZar7neOQzMH>1SyE z5CRAdoDdMnx~cl|b2eF~7OE5&BqJ`T*mm@$fJg@1-Z8ijfi>~wHOV=fi;b2ZRfm$Z zEqw9)_}_B}Y_NAcFb4~Qq89i{=d5($TO9;d0;9MY_CPx4+0s(saIQ^Br3y6Qr%9NnJC6L!H7i8|Qr2_Wu^<)Z4Cnhf z+XSaG6Y4h0S_Gj{R|%o&fPV&ot{2ch6r|Yl#J=y@IaZ_ej%T0FYw_5* z)TD$IipS2iF>Rk?$gD~-uJ(!OqW1~OvBOT|CWNWAO}&TnSFccuT_Se^_WbVmPAUDV zD$3-rqNoJC}h+IZ%iqRjjT^_w^!_)}%gJ-Btia&21jX@jbRZw(O1W4RaOepEue z#iXX2-yO_9ln!uw_e}n)^!)Ltq*8emrNEM64f=9dT6(uviOIFdjqAD}_)_%)Z-ysJ z#_o@@i#`GvC~JVtd*?zbmxz16rfiW#4+tJI#}Z81W?Ij6)Gh=)y3O>EjEphN2XceGSKsAZ6CCL3;1}Q<|Ujc~&oj$h? z0uW_5Tlb2ReJZ_ve4>_3!Eb{Y+$FaZ9Q90Ie}Dj;CmJ$?*{Pi73ka z?1KUmX@DsVzh7i#YHVz*5T9_ocIt^ zw^0@dyghM{nr?{1TCVzo=blf&X7lwu!t1kLeegMIOAVd_0Qv zS*YOJzWw2%l4BqEv%mj&hHw0o?$>{WIwNn2NrR9_1~c}7IzN2#PpTUY~)LS&Vdd>nhw_UR$$N$%Z*N zI4Be?4drOC>wsD9I$nlG4>-`ib;WcY_e3J)LdHl>k4Z(}2B{R@mq#}=sGcDI&`%Bf z@jdnyUc2NaQh_3=d`hs%zX&zd5=6-Y>Jj+@__m4HU=jIWeNuVb)!9d%#;Sx1@`A#< zie(GrqM9R^v}XYC)d)mulHh#g1Ht^~NeNrxMK+bi*{Z%Wd3dJC8+2_%eN;tYVaI=-X(FK-ulSXw2?zD0J0RsNaUvVR>5Z(T&?F;?#tK z0?Cdngu8nWR2;!`7g6hNdjxmNwggrkBA!W^uq%(dk^@D-N3qXu8ND4RVLSpV9J1QN z?0p?_V9M5qxhq`LfmDz65;Uv`y?-s%=EK`TIkNg}_eIgw-OAC1S8C8=~eQ-^G`&r-@V8i7Y!T6O%>K=fgH4D4&ULU>=6&DtiJ1W(Ma( zi-Q`pESgtY{Z$+1=PR+XJH^FIB(q_;>i2!BGsB{(H`7b1RkGI%aTd1;`dO!1N*lc2 zGz_hb>{Mhx-6V~R%Dy%EwpJ#(n9Gc-KTaXS9lU9Ew!LnH&G_G|AromE6ybq%ANIqI zgMVfku5mTCF6zQ^GNa;mU$;EM%L8VFfSnI?X71!OJ@J@lGUy<$*{V1#mFeUdWhTOH ztK#xSbZ4E>x607`%3j8gy6Yu&1tuGMC0$)Q9bp6Z4b;1CD_2DA@_6n*EJ*(TO>bv4 zucYhm4q)SLaBsEn#pEz#1mrzQ1z1d-G%b7vMjtcYt+J}3414BQ*5U95hL<}jn8zyB z4wGy6{ZTOxmRT}2dMkO!T4nsLWzP8cmWVQ1M+_Qn>0z8KZP#4BB~tPeSMy#e^sY$n zJ^hro1QJF{`PC)F-fvfhhEKf2MabCLgxkFN2la=H3L^=8pFcBr{+8nD0dbZOXVHEW z-N8UJD6?$Je~$Pa_MBd6DSX2@T^;hu8sw~#5@)JXsr(N-B@p7H^Q_VZv)TmtJ`r@u z&uh9W&I|$}v9SsFAsHmcC$FZRhNEQ=kcqPLe!>+6g>RQVbW(Wk;Mg^VTS-;;jN1Hu zf}2zNB@ZYiv=XTXkThbrO1~BrpE-+g;fzZB{yJKVjI(Naso4YV<((wI*>q;R{E}17 z*?BIsLH>$IbMF7vX3 zeJwI=kV0^ld@cw?T9PSocOV(o8<>|Z!*EB}0hza$e1`Ik81lN5oEUvEg?1Ht^XBX!5R4BJm8&Zw5S;4^yMA~C5*WT-61-Qtj%H)VR}!=0njo62PNBUh30=F^kgpwA zu3J=~a2<3yJ2#R=L`_2_CYt7gBNv0WyTO-#z46HX3fpK37iUspoM*qB=&A(}+cq|Y{cmrN^S$6P40@=nq!i$A9oVCBCYFPv zGDv&(@w;=5I+K=4=P-fRoO?k|9wL#DTX8E6h7$pJ-LvG98ucX|x?AB2X5({)ZFSbg zinKcSpvqp^)7`rhiLdk*uM$Mt`_a6HZiaS`&3%(ah(41G+8SyckDm3+rFO|_P4A+; zkLcBQJo|x%=>1tEm%;Vb$F7S*KYCM`v!)1kD+EkL(SuP|g@uK5DiH_KSl{cf-g_pY z!bhkeA&k1}sp-wky`Ruap!&eVEBUR4nOxvU@5CwnDZe6b` zR}vzBCG7c+jg6&g@68D@gInwKzqGFaXKOE%{ZQAPJ8ZO3G{ zPC)OF^Z|d9i=37FSPLF9>Q?xiH8e53Q1QEq5m}oj~n1TFM1s-G^XN?rYTs5$UZ$+Ir?9wpe|(nm!P zr7Sykr0eaWU#qnhGO3v?ib2Lz^`M2F{uas`!7AU98uwtxwl&mbZWq56<}vt94p>#f z;wW@4fiujhvf0uA7g55!425kE$cwiBPOsj1lE$-$yIkGDZkBL{pTWNQ1_mbJznCRy zP>EFse)+=gd8}pjj3;TlUY^_+w$e$%bPi=L9ugArZQK>Y<-rQ!vo0YDkT2F}5MAZd zVxx@P&z^ZNW}81q)?VWLs9?nmxmR_89IGcn&x0mjuAZIB z`W2UM+EYx5tAUw+6**L+T+x&R5bhoKC~~LkWNx6JO?naDu2r+gJIYbiYIeFq+s-lQ z<}tS2u6@|jdDIM)ahvm5sIEe{-}=*!V89)%e0ig|cYuq6qXbC-=a18*R``144JzNf zvwLi_r3KEf$dhV8WE%ePulG0Qr~2VAN4->Q7s7&E_M?;c1IAbggwLh1-MsK$t}G~A zIF`qlfO;ON?!)Q?WI4>l>5rY|wd@TcPK}HCb)Xf{gWCt=1Tkm&)ukG2n{2nT3vZ_| z#+Cmv>16*F?bsA$PctG{dm{}1e=blA)DP;M1mrfW2b6lluK__c2qcua5CXb>{(k~T z+`j)`hLANM9&csOj;(Xp>wGST^N-*iRNIbu&hzf>?&xJ|m;z4G(7@nVx|RJ`An=a9 zXc$xxN%KGjdG2uc$kOsS+Dqvady`?zS%P}HyI-&ld!x0^pssYC045}=6bO+!wXM+O z+p}ykYAYr?r+?DClDGs2Rl3I9P?TzxGVA+g_B-~cjvW!k0BZO0%8CQ0*=MHp zl_BR_qOmWEcz@x1~YDbCva!ODJeO5 znNVrlWdXbi($J}}kWr5A1x3NEg_D(Gm>~bTMv5Nz*D7{ zS>&Q2_PzbOY9brqhvy6=7(`xUaoJCG+ZrJigE{@^`p+7@&C3^P039<9# z?ORK^zRyHEkJzhCyAr{nqdGd0EeT44xv0IJhk%q~h3f|c=KF;?*!GQX@Tt?M4`rm4 zkC#U>8&I~hTUxU}F8l8L3XGd`6S{E#nhyY10rPfB9M6hw)ZpgL+2M#bk z-`4(~GTRolxvTp|^!4~@a9P~RMd=7D^WR!hn z4{+J}oLwlVq~kC-IYJx>9eS%)m?~w=i}(waugKI=QBryj$f>yU54s>|RrLxzAt2`1 znVJT8)K@ZD^tltpMo$`X6elJ*hGOG6YA0;n)Ab3fa_Ra@sJ#@<9G^5K>bL+8^i1vW zCvn@T-@uXcV|jg@&NK~MschIg(!>6R?S-6$-!w%lyr{kYxmy@)Q<3$V?TB++NzL1P z&*AfzKGZLl|0XMIM74cW5L)r))IzZU1Twp5B@6d+FG#KQtvu4NTjBcZa=1cGw3Kh0Fn-|7IkI@iW!|*-W|W6lZ7Eke1Z@r9zoizKc(?ps@#`WyDSNAtq|y^eZqM<J7q&oLaQ%&0*-zC^qT=GTUW!l%`gvWH^l=)$+XrLTnDH*N<|TCPvO{|X zbT<{cDT|hy!sPcQlYH3=zKq_1{7RHKK4RIxtBwQ4HYAmv?P zaK6K*hZnW!O-0}4^Vp-P<%DaLitoRqBEL&zWMJmZ^B8Hf+uq8M{SoW*$ZGb`?5;+n zIR;QoF$dYm>`DfMvG<}+oxj0kpgjAXbHR%^WXA@$efj8_?a5g`UYdHu*0OWz8kQ%vrsh9SPQa#pF_<1gliyI{f-*zf7S~ zj`}h>f9#sgO#{aSdNwZMzJY+2?yNJMJkp2JRYr4&r3aYKM>6C@Dcv}v~>W{ufD zjpccCgZMPj_v_9`A4(EWqn>mFz~ooAaTx8?ty{PDmZiz4@M%arocgAAA%)PJK?x7v z(&oA;#5pdD+_PV7C7;~=K994TN9@>D<@5+8O=f>NiMT-bV1LQuCLV!6$hI%5KhT*a z3P%|cZl@|!F^31aMjbxBXuYMha%MVOD%*E(wqpGsa3y=bV=t32@4$BJ;GgD$?&zRG zR|@;~pC=2g1o!XHqgqS5KY=0AGrfDuU&w`kKNKW5^=|!;;55$u-6UonE{OBRaUdb^ z3E_6OUc%wsabt)*Hh7I2bUJzm7#v2Ppfr=Xd1a}1R637CeV#Qx5Z(_>xSpmV<5b+-Aa6%^ch>RKp$aD~L zl6w-Zj9WQSvzG&xe?G3RWmiU0h>?bP&8_FNch&wpS)e9fBQ$(^eGVDy-&$67aeix; zOOf0dl(}Ci@j?3QX(7=E@=#FAZTf+DLg<7_~p@Wu{Kp^o;fZ}svUYpq@Qe+hwsrIvp!Nb~<#jnig?Yb(={r!mfdsD>zYhrbz zU7prSg9D&5&IF}(4;0Nqn zU=7w06DV5M`dH^OQpO<6?sD5dZOc$j;-q!NxNyU?NWk2@tn7i(49EW2JS&GW*~?1w z`P96+XY%w@S>R?n&a?Jy#uj5c#pfnJY>}dZ?dYLq01fjh^&N=HaU<)NzIk(Ux+VDX zi31>HS!&++qW$BWm*0A!qkqS|6`^|FI~wpClQ){!oIj8)tq`_3o)m9vSlzK5ZEthw zdKhIOY<@QroAxr|x5xJHt?FL`gU94#`1?q?R>&k;$D+t=(;<5?v@6YR+zSRkmU7}sR~p5IT<=ZR22CUw<-lx@ z|G5A46ETlSGVgkD!zhwQWGxqnOlp{ivEA%E`4f=`{V}Of#!^1q2@{Ptc5;kCm{==U zY0(54ic-FLO81hyyqAxU{0ZA2CXI3%@_DK?)Eod4>2_kz3g>tQI<(XV;9jF|Qz6WseFimmd+=m2KmpHlp#@Wr!-FYux{+)B} zp>B#6?R5uq_i^qSflhJk>A#e-(?10)-^(MUSEC4no{XO&whMX9rT8|6vx0~0V>1UN zZUDR{PdweRp*!(qFg^vb%Nrs^EzI*F_;?pzoM8~iJ}ratLZFbbUm>SKLG9LU_P!Gm zM8J_2!Fkf+45z23BRgFRQu!q=%gOD)?j{@-8+meoZ!gpo<83=y51=ub93$pvMQ9w% zow~hU+R#9hXebU0UYpuPP1ZkovJYxvi^xr~Rn!Xy?h~;525_l;u6x&qa)IS?tLU>w zp*lFtlnHVeB?Jz$th6*&$)+w!rQStJP^?LswmraRsL#WRlY?!mfCNl+HGZ}P$XyH$ z4KcR7?Fh&5xvBa^dsHV*Ej}SaWy5h*!)sB9DR18rWVkq#175iCqdN}#(%0p7I7RVU zn`3Y}`M$?55Ga<5(g~a<8)@uhD`jUIK@R!dC&gMh*CIZ-j8Fhg2;y3g%B*hn?LPv3 zW1}Y}+AScR?J=Oato?5Fr|%P^36EDiw;(%*4j*Q8{3Cax?jhL<{O{UKTg$Sh%UlYN zRtl8eD8Y#B?V9kv^tx_Y7Q85TyyhDqb_TzWPe`D0nYWJDHVvNpEafw|8a(IH1~D!t z>fGYv<1_YG`$>31yK8`4W+JhD?^(Le-@vU1@hl!A$^p=~ucQ&c3QX!`N(kjZug>%@ z#EAzUag!UX_2NUjsz3VqFK2YW3^*1bPeSK9EUkxKeptG>R-b$8Gj0K4#Nsi-7Y`)@ zH2zUi>qe~@*fu53%2L=(*idD5fu!QC5mX`P=w(;ULJAfjp~xJZ7I+l-#!roT($ZpI z=ZA2^yoZYrjgATxIVx+r)81S$#w#iR-OL3bu&rHFCDhG423=Re0rC}|yAbKP3L$B* zRritpSi|kfOzb>zR~qg&I&&JIrhgu~QM&{YfWuzFj*%io!I^Rg>#l#!z$^q=wzIV${P$N zcI%Q!-Ssc~<(Nf)u!aCm1(HS}a&^^+0ZgPCMjgCD_jfk+rzUXZhNjECzOzNWwHxD0 z7`*N0Y}@U)rasY&Yc(!aFsbu81J04F=Z`5>h^q5c!Dob~?Mvg)f^1A^V=X1Iym}D* zILTBVUCX;}P}PB4m${5My*U>Rahw>szD`DFh1|D5*3?iTd>rcez`BBi;_gd9OyJmC z6Jz+uDy(Krpyr?#h+#LpXMQdb4-noP|xz1Z6id`xE_qfF;igXJAY)8Pz# zZn`jva=dSP)8K>({GhYpX18{J#eSKJf9n)_qBAJYOjk*>iHbp-x8!R z0KIU;>7d){I|?@j)_Y+I8JV#Aj#G@%{ZjC70xP1lX?YCVlFZhPHv zzgugO5ug`5eeo$8MPSK3P=>! zdOQ3Q`R=6BbhS_gb{Z{L=PQ`62;Wl59Z<|QbO^eNz94rs z^{N(5!sjHtQ90J8)#~f~(`V#gf(!(}lVo!>34bf~BHW~iHT%oc?G7EgzAxP11IO1J z8{f>A%BbOiQEw*U@93><-ZlzYLUt%=+gaJ=>NjZ4n?H=$xS@}K-ZOSg)6U0!uDHYt zWrlAImC%L|o!hH)Cob8-^u;J63Db<+WzSzd(^<_7bH?Yt>9_5z3>K%hneVRAr*@vi z4mDHZ$GUsJ3$}ICcbnJ+`>2kE$8JHmdsnmcj-K@B%%VB-T9nq=1x^F5>h+`P!O>)^ zjI}Y*=HD~#+SPESTZ)30EKZeM&zgZpUdG(rO>#YUml|)ldn$LWDO7P(x#P!{Z~LNW zPip_5C|qCb3f1;}I{6qP!e;tTgE8)9Q*--|;9~pHbeP83l#8P-gFjVfB~Ejj&j(OI ze{9#WeaCAO0`IXBNA{jQl3qDhUao=OHt=C(mPu6!?F!$Ss{w=zvegC6&SA@agvIwt zulN_Bpz5EVNXg=3ksiwzbL<28zAv9NSbF2q=lG}Q8aVl=?#cbqjw$#43Ajcc{%B#C z7N^5}QdN-5+sXZ&8wB?N2Dh;i?;#kc&} z2a-HqbNPs_)?3Qqf?W2O(4uCc(&`4O*LC4jIoVd;o4GT)!T7%b1xyq-_yJ;&&Sd{B zBUqEcq)zY{GDsf4biCik=GI0uAK2qj?Vx1bn(%Aj9CzR6Itn6&CI7N#rw7c_gz~$__(L5nnD>o`OdJh_8!WZ_P(NH}z-q1_;k=o);lDHT*rg~Dr|Lwye6s;v}d&a=9 zgV7SKWLLTb<(QhHwke?z8&7?5LMsqWj(wMy!KhY;lIeN}PToz{`n@fBB?9wDT~fgn zY0+MaeRoTQ>9-7g$^^Hhw(Jh&5A)Kyz=)f*KuMCC4TvUPEIEqI@8v zAUd)9`l$dtwk^Wi4dB zD)DrlbB>VJ`nEB|1ozKYE-m$%^}o*`Qa?J5REK0e+%muthN-qN7K77>Hv2R>%P43U z9)NCey8uE@09h&?16AJ{An@QXmctAMBz}6gu&@B!NUaHvpnPvlKKu{W9QE*e0`n*X zF`G9^&l~tv87#|4Ma$x!5KBa;w$-!1eAtC8_3}oSaqFzXmc|NvbiN{Z=#Vr(keP$N znbtjf$0xzggG&DzSG~vR^0>1Vcur2G-g>NzVo&jii5ol>|3VQ9p(gj&cH8o zi2->-)c@=X5kTD~2zJETOw5h~ilx20l_Xz2bZk~`E}<)iFWqQ%mi|<^Yh`)a3;@^? zqKJ1MH< z@1L)ectle7e#5;_6{<3gdkBbjQ0g_~tBQpGD9zPyjSv0SQsGeVsyIc>z)jz+dV2EYCZ|h}{-leF%tU^74S-WswwCk<~x3<(m0-$=H6NTW3}7-Sf|Q;<{H^+p}7vM z02U*#qbWJgy3z*KXYJ?K@wlQ+2ASpIbi5`T&NF6zDF1QF`$pMS2T#>MQU?PSn^st0>1&~x<`TX)+B=uG8 z#^>S&UNaSMSJ#gY1fbp+9&_CDONcEi7sDM(Fb=rKeVflrX2@3AE&S=%AqixMgg^7o zASq{CH0&p4Q{yz<+csG}S*!5*G?-P~9OOtk;D={844Rf(IDuc{6~CB-QR!vjtz&*@ z$lIKUkj~ZMme)-|9 z*j-hnP;b+Q=pu0=U8xkQapi{mVE5>|wvH`&z`m%V183{?SU^@AluQvQ2phdf=Sv@Z zFkyFw9O>Q?uy)75KNXfVm@t|e#^`HY#=zQaS2tP>Sq8txQU@f*dh!}*_@X0TPC5}+ zxZA8I6ri8JRaFD@UYoCmp7d_S0g_q~Wzj?*Pg7BPSXsVgw54cvUfevawyI&q!D7u% z-&p)#S*OHM!RaQuajf%)Ja%mMjN9n+*1)GM`N5BYw6fUl8RGJmas;AoErVj?CWgB) zKvT3+SAISGB;O5*y+1mitqfzDF@~=jz>JrFLzHPbugbZS&u{zwq^8<5#G^{+x&b@Bsd@x!OKM6~QM$NSWVMa`|`ieoG#sTTUit}f4{zW4W;7yWI%_QKG3W;KZ~^iwil!pfWHF>lVi=H@d&$Wy>I zc#5gdgDc|ZIH?nKc%I3$`nbe%+#Q=4j5RSmST^#Lxxe*r_?p^n|A(RTH|^>?Lyf5m z=5Nz=EEWSRTqB^~u^oRn?#=@Mz^T#FR~ANJ=}0NoX$ePNt?IpXbU8`cLQYALVp=qaue^dxf475&o7n}+3KrE(GluUtCk57f zJ$Q^OZnD-j)_zH7I>�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 literal 0 HcmV?d00001 diff --git a/docs/images/15_find_your_key.png b/docs/images/15_find_your_key.png new file mode 100644 index 0000000000000000000000000000000000000000..6053ecbc3a873f80d5bebd5f054d22cf1effe448 GIT binary patch literal 37938 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 Rw5se*pgv6XO5? literal 0 HcmV?d00001 diff --git a/docs/images/fb-example.png b/docs/images/fb-example.png new file mode 100644 index 0000000000000000000000000000000000000000..eb1737de72f52838f59893307d2054f577848acf GIT binary patch literal 38543 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%0DH}Npb^22jr$xtR=}|owk0T* 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 AmjD0& literal 0 HcmV?d00001 diff --git a/docs/images/minimap.png b/docs/images/minimap.png new file mode 100644 index 0000000000000000000000000000000000000000..4a026d40d60486a4924d8124107bff676a1ec081 GIT binary patch literal 4694 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 Y0~JOL;ZI|lGXMYp07*qoM6N<$f+9?#(f|Me literal 0 HcmV?d00001 diff --git a/docs/images/slack_example.png b/docs/images/slack_example.png new file mode 100644 index 0000000000000000000000000000000000000000..dac4059142c6193f8aa43052485e9c7a2c28a542 GIT binary patch literal 68076 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 diff --git a/docs/images/09_dashboard_with_geocoding_distance_staticmaps_api_enabled.png b/docs/images/09_dashboard_with_geocoding_distance_staticmaps_api_enabled.png deleted file mode 100755 index 885af6ad795334b4f808cbdc2712859c1b3b561b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46418 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 diff --git a/docs/images/11_credentials2.png b/docs/images/11_credentials2.png deleted file mode 100755 index 66c0ca0b839933e3ef00f50ec582efae7818077b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48190 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∨c+MUtnqEbg3wK**`U!^x{Jtn0`Q@Yqn-uL>}s`Hj|h% z7pou^uloAeRux6-0;Orgt@`CSb z?`(Dc3YEC2?k*m}juvSq+TH{f%b1S1ZE;QS+U6%gSHZ2m>z}lIp;|At0*&OlX$*Dd ziH{bm^rz7>rq-0g>syU7F^v9~ZaeF4ovScs$3%Gd)$~71gjN(r7;^39QkD)*y1uLa zYrKi;v<&jqdBJVF2O}QchrS-)Sk@K;6sYTOeH3<-uW5!{NcjR29a-96O%J@v7GQsR zqvPUB`uT9bm^fiVyQo2^J{1W|oYe>{DBL2502Q@c~#di+23Rc8{u)iLZ2ObQa4|4!+{(i$LwtWA;g4@~m z;M|fMPPycgQUi6MR6eN}?0(tgzs=)>W;iJqu{Z}D;bNG3Mdv8Zyjy^F)oBkyK${CkY zs(U7Ec&Y;SKh(14ho5gO^meY#wh{}PV;h+{y=|mv=FNPyGcG5o!>Rgo$k1OJ9Tm_T z!-D*-{#(6WHSl|+2yt_1An@66yt(!z9nO-u>yoo*8*7=72dsW!`ymzc(4}bL5LI%8Ne$+iv>VG`q z(yz2cmaL}qzk2T%MdyW7B{=dSao z(q|@V|DFIYD60dS&Pl!rbN-E|WIqd{oo+^)sPprsuh^>l%^%sVu=O>TEvBzGbj*+E z^Rh#ZcOW3DJ|DV1-3o;*Nr@t$!0Vn5wIX()jn86L#CS@s5f(+$`7hlDx<5ezA)$j{ zU85`jRT926?ib%4Mgc_8{#|pkK8R32u74M4)(5`4Beki?1H%4xzt|zvc5XEOoQ|5D zFT?p9G}vHHiLtK_Pg8fyCoR@TO2&arR{44EglbZ-#$I` z7o7||=8)rDusf#3FPf4h0OdGjFYuy!H>J>_B0M}J2gg#EvkJ=h4e3!AW78?g;lP-J zfoTX_Go*{(1Jv;T`9gmd>-?z2W2HU>Ik)X5(4rDRYy;Z63|PSPsHe*>+dOr;(0A=o ztCkF$(BG}voq5*-fVq7AZe`7&*+DsxNru_x|91De<6<{QSUbhk*al1++#6}QGl$Qt z?!)U)OJxIXhgCuYogSVQl>Po^axpbAqO8pwkJJ?hQQxLzz6KnD5zp@Q|5y*a^5a2) z6Ui-{1LwSP#CO}pL0Zxn+|J2hPNsM)0Y^I-oX)h#9B{2Sll8Dycy)f}M$I8f^bOra zqvGkUpZkI*p)56*npdv~Bvg7F zm`lcURGG~>+qc->;xf7Z=_QMSy|ty|+N0l!0AJIOP0>F+_?hq@P<5z2a0Hyf=v zcT0lxzHuX+Qu&wVRF6B<`x`c~Cn+7R+H`DT2&+cBpc9S4GgI+cS9`r3x;J-tIDMz# zVG~l#{u-0{lc3P9g9!&=OdwoqVX#c)OFUG9-ZsW?*I%j6>=}uW0L=$t&kK@LJjzDV zE7!*Mbkdsok(8bGmHVb*kgWrmjTcov@K!uo32QOxENYyx^uk#eyK)2TIP`Jy29hd` zJSU<6F)6V>fudDpa!jt6b%ftSk0B0Xeo*^4+3lDhDMDvEYkM@4lf2Es zaOFAe(yiyKWY2-OkM_UEo9h&bvKCi%pJ=Z-NW@mrByzK{Hq%PPhT zR~pFGX`Cp zWtpKSTB-La90979!A6T|UhsyGkFNx?&tUH#Td8d6=L#<3tG7c|{W5t8fLD4x$%DFQ z_G8v3|8)O?^3pnPm%4yo;fH;fccF2i|hh)ee{vB(ukztYXXdyNk+eo#L0#OuLhpcv!9*5z)!i z!%qqt!_A6Te3}nVv!@srU{=g7Axn(|X!(I3Ws2U8!WtSe=nEvZ)USqeiFcz#pdo#S zbI*A@*e8O6rV%yUeG;752^gsqSkkbkb)CMR8v%kCUwhXf(W$llOa2an^p zyB=b459*$_|G^9$|DQ4EJ(9gD3TNQ3)6jDD^=#0$G?M`e%B!xdLG%`HRZXJoEeN_) ze>l62vbHU5nbJF@K=nWdN-iR31z#s@@T_Y0IobulWHC5wD9uy9WO2+!)2XI?EGe?% zDu^C<#}-9XWjIv-ZoGgSJB-QDkzUXV%rPm`x$ieWiIf@eo;)dUx=y_f31;DZX|0$T z>T+N2Yu@WGFjFz6$5neVj1{)K_v zo;uqoKadq}G+ZxJ;?=mW$8L-~Tv6ienIMPCEBw-5mizYbCk%q@L8Wjx_?kYw+W3b} zE&Zy~y&>~TbcfA=xT)2$hE=0CpMbz&Tp%GrA{4wsRp9oktcd|uMp|y-cH^0u`c?%0C_X?m@hxmc70>Jr**Qdh+8VKJ1kCGD&jv5wX;8g^;s%UzaRu z+{wB}!f^&w`Pw(**6iph=S@U`L#Sr39Zp$uT&_en~_yy zm@G~cB0XB~JhPX})EQTOAnZ|35eQv-6<)tO<<|?ki%Ir(pr~I|(7c45K={twToa$m z`8IrcHvpLY4KVjg&sZt@YtbdHDY~Y1+L(7Ka;Pd%p-*@&hhm;^R(8zz$;pw@nJ{SZ zLx4m{A$cc*?+WvY4MJ>Iy`$(q6#Hgg*RR5yOp=g@RJ~;DKr=aMY^A&939n#le^Fs8 zv-|0x1NbUjrqyG|?GDd*CekfahpVc(UlSgDPJ#O;_r&316Bb#-YI8du^AE64QJ5 z3+B%04ASx-1dO|qEoUVOfp>yYiHzb`W4DY6>$8$^fcL*A^V+OwT{R9=c0{H!&7|Me z+Pdh=GA9NlZqrd*fES^)#VxfN$x456h*5~xfo0q0=SrdD@5y{VEmLi_Gd^vSAk8am zB7^RCw4h*o!WtZyRq<%K5-`6CE>v|J%70Qo-i<`}igNfG3~`p1qt#CV(xnhf@NnC zSmsA%(l7&nd&r-d~v%FLYC;a@cvzq&y-a9vq61mLO;4bynF759uRYjXv4% zzZp=4jhNn;%B)kgt{ZP{g0& z;ITzoIJyikJRA>xt0Rp*oTU)D9@&REv>fQ=#87hYY2#C!I1>Y+e{jsVFqU>8kTCo)$lQy;m3R{0Jil@QNfeMlp#Lx|`|QFqJKJqC^~UUB}5;i(&VyHx^76{|?YR-g{O>4l8TCQxM?feNjco{1Li17f1hMao3+E zfFx+s`|1kQ4Em?cWeTh;mKwoICi-6$$*2Gp{I0;&^bt^$!c;F@WCDl5RDQJ9>KZ2gL54jK&+FF*=2fb+Z9{kxh(9Y?S4zt}nJ1ZQB zfB4T15->X>Jm&yNai4MBDN%qEGc)FMKjTTeUH-V-;mgj$xl0;Z4P4o9`TDZdIM=&# ze2=<1#DXS{c~!wzhM#_8n+S#E2zElJL1wMf7i49yn z`ddk)pEnrBFEloPc3b8(?@cf4&w}#<;dOPIN%^zv<-}&ff!<3B=5xz2P>I83c=ybH z=lZ&uN-fq1h;lnc&(K(oES%pu^dM~K=Z(w7J&^(H#pFK^2?(odd}V!ob)eb3+y{qE zTO57c(m!Pb(*l(VX}mRaX%Z9U{n#OQ(}|e%>u@ZPM*SIn2HVlDCxtdTm#80kTl%Sa z(s^^IC1eTo+LB^P(xh8Whwt3n_Dq zPML=)6wCQL1v&Nx*iOD}v6%2t)(}C*yRa}qt~{T80xg{`z4(wtVph6%!xMB ztapyp6i@xRnyz{-*5~HVyuFPgqxdeW%Fzm@mKDPQ?jlAF!RL5E)3I5)hMf4GB_pov+Wst%E_mp@qG}x+;*gcu2Xh`gb z;rR&N(7kBOgO&lOhoKY(kbJ$3BiTiLeJ=z0pOWF(<=4SP|_0*SVE8FI<{ zd5Sv~4dirnPeA_wDt>|&h(<$Zc%h%ClLL!`hCXHAG$p3ECC`m1KAp0PQ22a}!lv$H zE>yV_1HAdd65=h&M9>{FY_$ZNrY?)RykDe%tSy*5>76h*G)4h{oiAGK6f0W^03YzZ z2bs9aA%@o7Sy=y_r_IUsFVatLcT2$W2Tvv68_T3_5)L3Y9D5H48o?pzS6zRFC6dF5 zpali)Jw(aPPJYml43A0nr%C)7c?#Qi7Mca?=&bA3MPa^i9qn>a zqyVC^JTjSWuRE-R=p3M8y&bFAQ(iCf&S24hkbUy-X@#H)E69=yKqzhe#r0W<0M&dF zW+`%8J17&p?t%=yl3-zGr|a9nCg{Q4lhs}jcLD@S@ksd4DqMQ^mj8v#$;RdFG#|(` z?2UtQ%M(C5=YO`ikQD&RiuI0A&j=aW6q5MAw!Qp3RkAk303 z*~aIzj)`_6pHP#%)3NL^!(CQFcJIG5&3)N-<~TVTJu>!#5pPNI6qpqmHa{)erBY8m z_do06`>W;9ZaYqrO=+((n_P&4_S)KLo!a$q1Baz)R+@Z6Z%M@f2=h0G_QnPh{5|x= z(C!|Cj~b2J)XtCtJkJw%IqAm)}Bq&{%D2*!v-)iqQn`(2dl8$kDd`d>}lU zKrkk$>68%t(5+^P4rNX#6o4)gBNIq2M`iWuSr^(a=({2Q?9bo+Wo3&t{(L3SaZ3Os zDWJ3cd3&=!C($F6UXj`URIQTvT_N;rgn&dfw|)VrdSb(By>TeB6Ds)6-NxzCnIRUt zjMK>|J?ctDZ-+8Vr&ovDcp3z=+9f|)VY(t2QZyy zPn!C90^n7orQ=a)Ah>l;x~4ljjWAD^7T9xMX? z#hU?V?&!S-hgr$(QhB@O;&}tPn=&VW@%yVJ9Fsh8R+x9!katVRLBYuPZ}^6}mO8LzFD!@_VG+cYS*s*&vJ9hn`2 zXW%H^CFA5kq5_wyAVgYrMod9_p&24b#7%>BDpRd&Jk= z8lG&x_#!^)_t9hLKOB4JWgv$iZ2PiZH>n}uo|S9q?61g@65>*AK#i=lc}9X;#U&_b z*@pP*dt@@{FM}PfX;O|2YMd4G-RM^Bynp4ragw|)=`n73qdp2B<3FKIsV9}S(3f_V zjy|mav@PkVg=8ceJaE@MrAm3UCMZVOh_I@2hPG;uKSLFBt&tr5EX8Ix$VTx=i2P@e z-nXJ9hoRfwp)Q9nh>%^Yk^?Hx1+&AGWm>Go9P0~+#aj|_fEskxPfXZMb<#iHF-Yz7 z*!GIMPCO=rC~JKM!5*KEzC8#8Osk9$taCDHQTv|n63jrZd`Qm1DGIJ!XZ?NXMZG_4 z&&eZz3@iS*mkb(7^r@YS#?A_QG~@~W$9B%dTsADxDoUV*4Et?l1O-o$Akuic2mS(b z?Evz9U5I8j2vd1r*t2HxLgx0IG!bAvAI!sK(#ipZdO;YBq}d>)0GE)4@B*0EUG5_B z{um%?izV92)J<(&m_48| zK(34!FVNvUV%ON~RqI5?ft!Z|%H7RPVaXYfFP4(%Z5g*Xcb@X)*0pMR(OpNh|2P8L z>>hAAQ#uwp{>r0w3Q=xN>A2`{Tq*H}>_lL1RXKh*?gl3IGIn@$Iv4)sNznEBoLGO7 z*TuOi6m7pLLOyxV^*Y}}fGWcYkAhD<*BgNJ`qox1soBBy$OA5JW+G}6*;jB%c-b@_@ z=+-xpm8ahhh(9~y6C!N(7pU!f2)>%zEQ;SHjWZlsBjjeol9IE0?E04@?4uiepHjp}p&rKGSKi;ipO2uY z1~6(`GF1^jClq8-_$y)6HqIEwcusw9rHRaE{BIZKfX}!k<5WqA-LgWwkBER_9c- z+GG2#mBWUYDt59GOk}Eowv!WIP0sD?52zqds-i0YGX6vtyk6RGZcy)Dx3U66_B`d z#53dZd1x?7-tzTRNa<)@#kZL^Gc0G-Z3V<9e+SB3`MOTG`nj zg)3jEuiuQkC;8VHe(5Op6f~BG2Km`A+wB+xB!?grqde)Qiv7DWQf7jA3)#LxMWmxT zNJOH#%&YQjTv4<*=u~Mjt^O{GDEU71&&kAQ(`%V%!&8ZFGBp5|{^NG=TLU>n8d_hM zo^+4j)Xu59Sb*lOjpXfkCWFq15Ac~8nKmTcgyLriZMvqx}SAh zv2a*?@5YThrNe=r0Tem414v1HrwAPxIFJ4nKG!F`lew80&$Qi z{0WVVe{=uC^o^ywQZu^?!V}Zg#wCX4{3)${7!eIO7sAR;$;x4F;5$t_{`tSxk>`)^ z+5$=XASS+NK_4!KSaFt!d`*4Sujmf(7jv|!X}4RAn_3vHa3@dLjos=pUCgK{>&V=k zuo`Ycxb_0i;_f>;x*wz)y zjpfr$GKT{|lEY5G672d%kiZx-vkdez!3!F(LdzT1Izw3YtIALvykhQja=$6N^A((M zYF+!3hZ~-qcl8bXB3}yIwKv0qc)i#iZc86i9>oV?K%q`G`{*_fPRWx?EhM;rkv&70 zUq6lfKpEYWqK?OTSa_sTX$}3KmacaDp=fS-BUb_-uR`^gHS~w4^s-O?Z9m057DjT& z$wn8?n%IX5*|e7S-cY&{TNYNPI+!hqMjLj{Gk)*1w}ERGJ+$o0y~Xe^%=B7d6w1h8 zuj$eY`rvvCiUS$eG8L6I=;5T*UY+Q-a-Po`>RPS*i?)0>9z1#vj_f`sg;o@!<=T#W ze^2CpFYS>+(n4(q~S;H_y5>@o-#_-V2{6P ziSvOjduW&siPsI&KBUBgI}GY+ReyefGurKNvN?C_Bdh~^XGCYvqiI+Jyc{}aMLC-b0mRZf!~X(uA#sG@Ad|;DhjKW=~MbT*p|noc{j=3oe#@ z&_A|;kjHzWyT7i?zehHmefUMy_W$8=|NjLjr%hRh)feLeWJ8&UQiXznsr6(}(*H;h zay<;%MQ)qn|3PwhRQ@k$)c=2ovEdxntAVVt#9$|P9z3fl`Y&dU4L1gWm^XrC?|IZV zOiug1*p@dD-1NoHHI~*QWZt$LqLP$xE8!xL_x9endzDiIoq-xK6Hqn!tcQ9LfQ$cj zA$RmnT);+4=*Uw-7Bt-@(b_@umC-KGKtU4;oRkWyA?Ty_ZfAEYo24GRweUgH2@Zrl0)qUDuZ zAQ}t{F7M!wJ1^HfDTqgdQzAtaI)Idbdnb?Vr(=PQF~}W1CXgif818}C70q+>W6By# z7)1-5T_$9T(Zpy!ptE%&c(YF*PCKxZi&Md&%zs9C6HPgJ?TMHmv(Vl zELiy8UnJ>hiw1lxzZ`Pp zkiDpT>;I#NKeQN`|5}|(0N6%GPrs`zY1L)ku;ee;d*)Gknr4vvrz9YloZ?p<^i014 zn~T*iskJbi8y-TinhymaRNtA$i<=dKu>RWepm~5gbCpeH? zerk64l8V{&M==Fv1-Md_1G6))$bY^Kz6`a+JB)`;m@36SsF8|-nLehyu4FqWzczNtS6m*J7sw?X3JCoa*x)JQA-04Osm}nLT`W5K z|FHL-VNGpe7a;bAa0O8T5v6w!DN-UT(t8m?4bnSO0ulsN6pT`(ccmk}O9@C(N+=Ra zXaNzafzT7_v%~H8n|bD$d8Yjsf66&0`|PvJ`>uDbwJ`{tRb5^4`6Q@hLrh1ex4Zeg zn@LYsMJ9_%tR1xw;1||N6qbU?-ID}mOa7vmk6!!bWZ^xw;v0XqNcZhR`7%*wE6U!W)Q+Y%! zN>D0*1SfpYyHS!Q?8rLBlHal*M{4nq4);W{2go7wK@`wc&o`JD@AJ9Nn#I71u#WI4 zRRcd}Ksn z-`#uFuw#n@LYK7|_UOS;zX!0*!;YCtxlaLy29CQHWw{61&7hsmD!GU%*$;t0k` zga@blZ2qZ%0gVbe2i3lTJqw48@T!o4T0VMSVkzlPe&^M&_j04?Wf;Frru&pDa06MH z=5v@C4wV4VAxzLn{DT|86B z*0}Q3?1`RAO**thP2R-r)u{N0FMVsEs(o_(hMEMt7LmuO@~K_1reI}DUh2l=?p{Sr zv*yhFR%Pa>IJ)je%*=Jn+wNSBrAPAft-kXjaQ{d2X=$@bk^Ej7+x%rAd9Ak0x$Yu6 zSLB-Sbln;I1ff$}D%@z^%kFViXb*=Ht809^1>N0p7CQILVutY%IqTu8cO?xK=GV(+ zuf4(C-+T{Ae0o7D;$9xNuTk_mzRIRDFR0b+zL;z3s1+jY7o_jUdKp&usp)dN>64S$J9CR9MCA z;EqNc>ufoGkWPZMa>jeAD|CK6>+#O8z;w zSng(^%qIG-)laRBge9M?8a7x%M6fY*M?Nnf6Ka}Ql-w+Qu;&PpCH8bqJysh1tj6&+ z!hk42Jj0H7;q{p^(_2?l#0V;7!*74~w_HUlo$$$*=PUe*k{9uhjb{Jwn`Z8B$!`fg zj?DHH?g>tIhKUz80__qT0)#0ub=)C+Gn-MpR$X&Rj$s+_a#IfTDi4F90YG;sj;g=~DPc$~=8dQD2!T*B3^V{EayR8@7apVp0|Ffzh} zF}HQI^0vlprZDq(8$zq%I|J`2rF@o6vjq{F5`;_Dix1D-@%rc=m*{t~3TvW3-&JPP zI@^oY7*z9mTm+WmbDSKU1hTP~$C`g_@hha1w3{BQi zRA7u7DMH`ibaeMhEH!nnybL*znEvMOILL@u@URjJ_BlH5Er+r-cJ!`rROjIucXdNE z2@$F?{*;VInYnj!n>f?)-LfievStaeUht;nefcyZJ!8RFp=6Cs)_hplCaFrla*HIp zz@Qqamb2Br-buUviel>iWjN~Kcw{aKdMmObG4M(MIeEDUrH@>u z5Z)PVorCN#9WNax%M6foLecF{E>g~)o24j2r3>3!*En)j z4yP{)gHN>)ObNrZS<6|Uzgc9n=}B`AdMfeh_!netq!H}KZ|=EI+=bW{@iH}u+g4xm zWXyrdUO-yCvJ7oufTONG^i15{Id=&D7nd!*X<>P}XbKkaIvA(49lOo~fIMhaUiFVo z+==O7@{~Q+)5aPEzmhuKQ?S*1reSZgq;6it=7p8MKnHDD${AvHN=wa+6nqERTl-8M zIu@B7+o-C5^ z(opC0mAWXjy#FSQu3j&lDZv8t!P^um^4wv&ODYY(z0^unvjq`9fRUFq3Stb$8kETcQK#F*o@;BtM8cv4ubyzsiiCs%mk! z+k%u}XloU$OinjuOvOjKBnJBOru!&=i+q69cAe&kbXF?DQ)^sRfpKzC2RQ@Os!+Q3 z=YTVfNAnmGhe~E|Y3ghtxc2!8caEeAYF-39j(RCinEF??E1aC3VLmsy;)fs)&q%sp z>wG(nvvC)%ARHl_j0Mf6rL)o8>!6wI%R&93LU2qdvA2w7K=S&*n7A%Ak2pSer^sxN z;j9v0Gq|XB^57O^Z$2hg=iMG zL5J}>g}}*?{LgIm@cUga@f7&|KZ@NC%Z~u?+PLy(>G)%OGLTCtekqM~;rjh53aJzS z*A+OytQ+4RtQxuKt9p94`tQ8sdWoCcLO*wJO>e_;{f@Ku+=n3R!5bODf9H(=tHZ3< zZ_Ol5BRNyz46@*^p#0qdO58TgtR-zce}gy2kSXT#krf(8&KkHd^}7*QaHE{(qe%L z(C&<0+qMAeJGLaCobVHuB#?2l+R#FL3ah2mA%O#Q*)!qNDH`;dk7?~At?HKPH24@J z=Lo=^*CIPQ%KU1iX6els&C5Z640IZJG*(^%1x*2vDf=we)Py+a;U$oppwg}dl51yX znN6Vo#urp|RJ+gS&taVAH|0D5mFD*k!^L`T9$67QoYS)Q1=AkM>9m};`oyuyrE0X2 z3LZcB;VgH72I&_${>6 zXONkrlEWFJ*+B=%w_Tfvm6*wwg+cLxz;4ez8UOe`liRP2J`J>f{aSQO{pn%C-(OLP zb5LxfWsQ9ha3B`P3}p6K!^rpxu$K^c}-_Dp-|-!08pqd_x`%Dsvf&`{wE z0qZRI7-gR3o+dE>6(BPa?f~Fu1P*`lUOwpDj1pgnfW~rAc=GAL28E&(`(UXY`z7#L zmVegk4PV$62`o*+7l%qZr(ZhS{39zhHkY{fP{d#dIxP)Q0=MS#;%#O^z#3EWHS<4^ z763iIGDf>S zOcY#ytyz5M>gzBh4#4QJys&C@i6ZK)gP({rcK~NkhenE|U|5LhJ0P%*_^q_#Ci55& z7KB9VZ^PPQz%_L|5iBq_=4M0u2%k(1U-Lb4dk%;X_8&f+rl<|xDVk6>v(tEdc+rK! zi*83u--)Dnf0euf8QO9k{Vb3ka$=8sok?Ar4=tdB|Ol0#M!U^0z|FLnIz zrS{0ca1{054K0uOuCWjb$|%p|K)on#jOo4f-yQQqB|p{_(JsaUmW1wqJ*Btj2HT~( z)#PQp;+y92XC}wVF-|QoMtnc^_x3U@Q1HcUW`ro(Olg9M0lg_6mTBp&Z zRJ5^Igtw!I)&fj|e@Di{m_VOY7PkC!F3Fe_+dAFg?|?^Tdn%hdu_^Msqi1+SQGAZP zRGHBOc3D&+Q#6z(PuJK=Zdz|p>}?0>TEq1Q_h#3vAHGT-vdr-^`(0&pWHXK=)ULU>|5w1Hd48_SGIQGJ#n*kQReB!OI&w5Cl-%~ zFEflz`|nO@bR26qy=IPhHj~dTkUg(UzcQD|#Fd>8Z!S20N zko_}tpIO0%h*#l@_DHRp4dyQ+pqXT`taOLt`2=}MDW(K3(a{yEoG`bleeawaSugy#BjxuUIXnL#5MV_*k zhqREQj_q(CDkXo0J5=-{q_z}@E0G|@Rq))%?s^yGREE?UW_i^NpX+#UFrmq>Ic=@L z9)rJ^@uC%yEsTbwUiN2}qKm$Nu&~!U7!CDboxXe8t{fXpC8KMQ5$4+{;xZiOxAiVR zz9G@8l?9MSra_rI6N3hnd7cj*OjWArJoKgu%pBCSkeeThk}F4Tdy04b{T><39I&vH zsa&4VlcNqPC6$#N6{Z;T+!o32qd7{j1?*BRQIVNEa6W>qUi!+lrtmEm- zXOh)pqr?YEWu^+KE-5EHEMug6rHh;)s_@W&EoLjl(zN$cmZk;TFx6{X`hA4{3F=Cze^Ngc&OsO*L69Ph< zG3pBhzcX5~Rh>6IY*Y759+>ZSnMB%F8^OLrovk9_u0<*I$Z`ht0RNPYp5YW2OuT2l zdi<$4O()Ly(;+@zi#WVfNhr!H4Bt?0P`TFXw8akZ(q0CIh zP&(0Z%f!Fv)4*eu?<)aA^urNW^j-%rZ+UL!wwe#W%tU(ooF}o|aU1<& z`yU$0 z0wt7Fg;$4|7hM?C7V8xXP4ZN{F6Nuli&(nM08)@y{C}F^6bnTMb`%;4{-TowYl9(q zZ8!-MlmYO{&rHk)*ave^VzFu!*tISe@g*d1y?PPv8ydM?Ud7w?#e{y1xJ zG$vPQ)aVkbXS7*u5!mX=7qF)HXA$A)q(T)GJ8qKASTe@6fWIs#v72OlX5L& zENeutam$%^Koa)Xn;gDBS8@wx33YPy6D-zR#&IsuYLj@^xUAuw>PgH;l4YN0(#MH{ zM-1PSx8Jq3ED53kf9BIfIN)O@_gCI3N}PvoFV%SDFB#^yBHq6sybYs8r4$um+17-=4gJ{M2(1sdhwnjsMhaIP{2O{zG8wq3K)* z92A1Ya% z&^W-8Zx5ImOU8e!WtnyI*%BEnfHCvKjIH@~cAtzbE9w-b$J9!_K{S6EeL4GWdBnYF zfDtno5ZF1!YJjm2erF1`t{w0Ea&}17Kr(Be#_I9TpaXWk6+W;a*Gz#!UH%Og_Wq8I zGP4;`e|Zl6Fg`kpwsLP5UE9P?sYBWzxb zd<4z*!_C&EFhxcTf5oli9_hy9N@V%)5BZ2c@$BA0#Q9{7x{Z3O4dcYxmnuSc5u0cl zl2U|~^BFCG^Ou^#10=*VCeWF#eGLJgZ~>B|$%6;6)Gr`ugodlA#` zF%*&D^ovm&^6F_scoaoSOG2pXv93t!ELF8y8K-Xv7J-R#u16ccr{nus4Q|nkWQq#C z>i7MqdG@UgV2TVsZcP*{Nr*^NPD3*k-gGz-$f$fN>PBH+Zm{IIg-(oV*@dXySm=89 z=!BnnWvxen4}}BaIh(yg@Tur79P2778=KCJ`jnPAnv}e*ObXE}AdH=%@uixvjH{z7PduvN`>)1vE|LU$}ea$&uXOv^Xd&r`P%56kf%7F+CJI zQACI0TsQ6UwM%eVQWl~w514F3_&;e)id*aNa*!n@`qtl>L1jcg^=%<3*ZDrvFEYHe zylEarj|*zw7W5FbX9_lN%$n7sMkhWgz}GW|toYiR4*Sk58U^JgG%S_o4ttfc6KQ5m zQ|m~`_est}dCFh(Sf4meLmD3bxxSIv=g)9v+3Yc5IcX>3)3iSe+zP44!kSTAWIhu^ z_#!9YMn_p90hj@*?u4pn#Uhf_ne>zFIuLeF$ z>7pSA=?R~2-%6pl6lRIq>L&v!@JZrR?{M!h%jkPPVb$X{Vg?~Q1<~xEYrQa5CGg99 zZ_W&ICKpl$mWZHz{PM`5_FwsPZKF9`47R2B zq+|b(y|vi;Sy4ov_Kizt+NT!wlV6`^m|VBsNa?VYrew&x1u3B%Deg}>DS44snm87? z_f9c?cU`ZsB$uT>wUQhP;4*P*I0t)(|0M-x`sh?e4#J;?LRxwtb&1-^(qiY*! ze@3sP_RiKaEtRkT)f2K86ZaHrW@H+?|5t_-bngaV`{c{>b{@MDk9Q?JN*PgvWm`t~ z{7tqPLXnPxl88pH2OsNBmEGdtXo+Iql?073^P%XB%#~0&d}UGr3osnx1`IZ1EtV99|e5+=f_QtvN;ND=U{F* z`ge=ff#>6r!}W4#`;NF;O)%Ag@mEaP@vpnWU1L4mjs{5&61<9bG78g)ZXUA7)?q!? ziSnE=0*J7M31Z4dDE;}(E-4r@gj9FK8^K)d{gu*_%kGmZ>>%Yz$5nM(FM}1+es>3n zYKzL7@M|a%;K}cJnGQo{mW*K8GcL7A;uVKi&E>Pksf(mDOd~_DyKg}?ihRb`C!1I1 zyZ($J4kads%Pl4FmBSvqVdirfLe@L&*qEkc#fttu7zFWnvPx8@wAfcpwI}oeYd6NytZQSBISQ~jy?7-)-#C4Fr?Eg<9ZpVb z^+A`TPMTF7FnHfHLc9Zgs*0QNCiDdzoq`;vC)m|`E#jucr%YAv81bvD+?Mu7krJE$ zyL(VlmFS0L3m>!@+d$NJF^@nut`VI)izksd_X$o%gIy9bC(SKoIT4#utH%fe=ih@evRY^8 zJP5T4*hZiP%h%CP4;U-GAr@zW?{uc+*e1izT2N zyXJHj7?&=}6Qj}`Hd8|_CN5r{cuolX6Ym`G-L9PR|?p{k5jbflY#;OKV-WI5sINP|${U7n-opx9Q31r2m9dBGE!b@CiWo#40sgf+-f=kH(vxhu#~=YV~?Bl_o% z4n5o+Gneh><02X5`Qr)P4nBp<6PJEeLlERy7U8KPWLIUT?j^PrkG@05(|a97QGMw# z0%8>WH}s%7!bD6@odWvb4W^ZCQ2lk-yryJVmI$M-(jrbdKZP`=`*p9fUy7CYeI-lD z*S#8%o#*x=2`$=6y0JtvM^d7|lzOq9gosY6luC))$#+gcz6<~*11Gk)0i5ViDfQV| zlLINrBSi@+ z*#=e3{R;(!lv6kTwecGn6T)cWs)xu6ZF%!KtZ@Hi`g!4KrHQB;d7OimY&gAUs`)(e z5hePW6}A{b=u@QV%^q<{^}A}8{Z2~hrjdpq_@2u!FYl~y9&D6eTlgwO56>Lq|}z{P)r$sg@7O=o5BodZdX!$JvKjAp^QyOh5F7XI#`8S zbz5AdyW#DZzOqX*ErQLy?Cj9fS|}2ea)*kxfN{yCQk~-c)Bo%}p-OxjlKu8hCF74I z->KtvmwtZ9;p~#S1rY0)OpcRtP_8u4Y__+DYf=I=>E$u8t+(zd7K*-th8a%gkhqgHS zh5Pwwoa!)Kpd@Q!jHGD1h^HuC{~xcH-zL`5NtD;VsYUHW z+?b)dm-Krf{rIwpO^I;E+c3eBa>_rqXJ@~U7eRqLd$ye&{ote;?EMMX(Fegb^nfL1 zed3+9DK2>De3{I|n=hkXe0_){?j6ON+_l^}bOGTi65vO|!HDt`JL_yQRcZc$Y7EPpF3O3piQ~@6;2Gr`>21n_MQaWAapwMq85ZloT`}kS{6q6%}FYV>621-S(gvuf>`e~HDE&!OG4_=vXsX})hQCQGgL*u{_ z5CfbsjQm4e&VH+5KAFao&N-N4MC#_eqk-#=h2Ha}yTeMsb>u$-ToHWHH!_yaNet?7 z6(PdiaTk3hqtpv%PlqLs90OZn+ zC*3UsiP0Q3dn*t4S;UfR!8fikS_f-$66GX#wDwnwljOWe399BrJ4mKNEwvJIgU8qw zCF#BG*N9^^Hyyprz5L@$yML}<0Nob={9`01Qs~|cLZ+4ZWV^T6J94p{N%^ROrTB&^ zSX%kIZM+k%hUbV4>GEqK@nw37s8fHfwcsn7i4UDYo~Uj6#7JFsoPz7ZU!8l1P#>Ym z`#D!!Q_0wIyJX$gYSZu-1=RDe80fz21q#n&Kz1KbS&KOvM69SWSa&@_!6)->pls`NO!5?B!?}^^oa!n znNnvj9ih+#!s_1<9I~z!eBTRXwZ{hsYGs=%h9BndChQbN%Fns71oBrqJE;xYL%3(c zI53c6g(T_`J)~8K+mfM?*is|_K_hiy43GmCz0USMQlKK3M0VePdX(aQ+P~+1qdI^p zY}5uvxS2$3JH}=AUgk4Y7DmeMJ@**2$M9N~cxswEMXM?ES&ihikJC4wqR{03>uda; znC$?m(smG_GJG31IOBaQd}drWjrGh!Yo@uc+cw`es=R)5Q>^SRuAbzphQ*B|dcr;S5gyy~jpKsZIJ!*2>xenI7nxAnNUBSto69s~C zUuPE`;kUpV^1}c4eZ7xWx-XTvG{z|zTzmMW@{3uWADC3OC?6D1KRnG8PUM>VDmp)4 zsqwKYHtn5b!*JUjmmsmgX3|sF={<;JL3?8%Zx>YZ6fw~vPG*+LUwz#4p?t7z^0~9`vWv+oRY0 zkTT~(nAa27ix7>)ad+C2Lzh$FC0n=BbgoVu z1e*8%ep51%d3rn3w1E{II%)iMYBkG!V@`{aPLE7rzbfJOAO*3&edrMYtcb20)>?o2 zYuu4n&NpeWpPRn2CkFLg&mVJQv$eR_;4YN(8!!Yp|0iNhj(hKF0gsI(r3!Me`QO#; zqTFmLX8G_CODNrc9!{gu@Le#kC4p*GJ8vMZKapuZEPGO$0t)|%O4z8}Czi9$?etlr zD?4W^&i>VDWDHY|`&G-DA)-$SHUg-+F)bFE=u;=?Ng0FJ&Pvi)E8-XjVxSiD10%ve zUzI-k>qp5mIW0;JFcd9^OjG3fX&fT2ms}6iR>~jGIzdb0U_-9({vM5k5A{ZSI|Vvb z?~wq{9RQ4O5<7$4ZF;4u>6GOJcvIka4=yKIN(Mt`q?W#6h*_z%Hk;g4 z`ioGlH5h7q{rFtlXBoXTb;L00Z1&WXWO<{`+`u@=xrzWu#WB`L20Jq~h|OCnGZ>(`IWCnb+fAw*tM2S6!d6~0V`yL0gf9@B_Nn~>Ru5M|@ z@Y1O&&7jDEArM3meZM&+G~fuF0hJ;^297S%?JGy7{F?dB$@TPK%^p5$`6ea1ssSl+iqp@-KSYrx z&WRyp<>^|F)0oRwcmcc!KRgvz<8=IoGChd_^H^#H4{6+;YMBLR2h5AAFE>UF)2gRC zn{>{{F~v*v&o-N@D?seT?mrjPH}@uKy_vUUn^Jo6egj}TxwQHS6vIr-NDxx;rkDLh zzwaQ#ywKNU3^@$LIi~w-a0)YMG;L@qxJvNdqPh|w`GBDj(bzZQ>rkIr6oC-_Ef zB6@wNO=P3*PJW3`STZ{A)!>ss2pRKn>&7=JRD}t;XlgW0clnqkBIZRhFE2xDW_%Tx ztsBPIdaw%1Up`&q#E{qqJsb(_RgIQr3*+r3?)82e`D6G~cK?|ZA30;hB$JngYs#w|UwKD^UM!q=hd^;B zJHrB5u|pfH9pc>l5BWK;scN9J#>!%|GiEU}p|DkSx$I## z{%(X zwWuq;KOsnCus4^tWr4}e-@(dzE-Oa$92C8AI{$C9lbR*RM^0}tmYE&{89^yTJpmC^8C_jMk*?eevG z`l;J=_ziw{>o!UCg{N!8n*^2gTjjF2g~?R_37jCM@rHXbRq>Q8?j^F8Y$SCOd$qbY zN5We=aCesD)|b<(!JC>A@pn_10S;(FEt;y!G>wZ~H@$oZKi)Twg>!9`5|hUC6TFLj zmam;gk}@F*dnqvB!dnwsjin~L@ca##%5mdb2$A=skGG2uB`ab+ZP}OGbhhm~F?`(r z#?{9a5`?fjCVI^}Q}%t@$+C{HKpErSMU8{X^R4&B9+x-IzF-!Fc8Dfd{#inN^A0}O1j{id>6AFfiaC(0xVji*k0?~xIQ zghtCZ(zxe5PDwGAuskjIYLvrz-1QA5r><_DM}`IA`P>Qu2h2BTeyu*f?~Y@Qr=jdM z1UyoB|A#k?_oeiW?wdPJJ-(0HpOk*gCPdop-QpTetC3Ayr9vu6!PEsB5Vw)d=rhPgqn zj@f;}MhjteU;5GepD9LG5-_zFu8BL8EsL;7%RyAs@#i zf~2~AQFPovDf)yK!gc^1p`O70pthr;h8tGwyuYcRyD)wk9LcQ-GP2*@dAK@CRq~e} zG0`8%YyHFs zfFpBe@zGr8*;^x`;4ihHEcuU{qwL9PRSwNxF&H^plmlBl#pjQIXS@IhB>xO>17Y~z zzc9)w7TWj7$iBi*cvSc%QCB`WK?FnlY*eXwZ)zZOfT@GcSQ?ZoQ4#b%;Qm_P*;>_b z85IA+tp|a)nEqQGpJ?acL*KlOUI>dVWCd@^HwuSl#)@-qTPya*FM{d#o(rgv zjLIOxs((nYIA67Q3Zm7l##~fTw@O(odBNGrMJi>?wn+s_e0vpNfL?1#vzrb5iPq8B zyer1F-$5BART{QN4(bR06W2Wa7gBeN2K^mURgnU{Y4i@nJ0h4hH4fp0Wn-88^D2D& z7VhDEJsxa0>zXn0rcwN#PY`8j9WAp#~rC zU=}31P$J*^MMXJ(PI|X=VbejS%B7q2>c=4>&qPY9PyJ|wHCu@)j@YzbCM%@yC^={c z5AQ6kbZi+o^4aa*v)4+C1`p0Iz}2;A_g-L+qU?+C(7pYVU?I7nRCb|*IvU!Q61-;F zVtJh(8`)0C=Iy->jw0LzqhJ^*2T-q#W%Yjoc#o0CVHxd#so%!Nl&D4D#L)|n^ueG|c&~a=&E-DH>;=j8V^(|$R0;52tZWxvPLr!^&V=m$E%o6gUdlQjrhR)8eYSP{TJTL8p&S zawjcJNDIy8VEM*jd?mYkNA3>)XQ&QNzD$e-p}e>>_m3YOaud&5&c=aq-B~~G;^8oa zu3TpXlqa~HQ}-56UQ7XZz^3H!El4{{r9g=;p@6rf+)K9$Umer>WIqX-UO2JNEg-w% zrFqckZOLTEgq()?z(CR9*1DHR|C}M9fa;z9_eP(YOsfK5J4Z({YzL&yg_dMujl#L7 z@_-x%bZ9qlw)u$!R*PB*8eT5*+tPw#n(R8#GBE~{p6g;;b7F8i&nXyd|77qI;&z6! zGp>_f-S$hQLC>8wX7$^P{TTx!KYG`wfph%7*(^O5e=4{QZ+gF5NXVkqAyOjg`t5jA z+#MuiBKD+U=EK|FfLr!LCCo)UQ5~GNOoNkPCuSeJbmV>Kzc+7#VNi0Z)Kcp2m|M8G zL7A{{MnTn3SW ziATwvY5xrKOBZR*c}BR3U$Z_#p~>>sDt?$^zG!)InyDV^iOS^gyltjeBnoIdf8z+C zfbyP8k#8lQa_YmA0_VY};M^HBP-_3N&>tqB;CU3q_J8#QIjg>Ss4d7l`Tt*dS1Sf) zu4eU3l52-Zh=BMMM(3Dl8#$NxR}(E=s%OM7l6D8a~; z)eKlHeo(S>6T`p($u%*G_51Z0POs?Rb7a0oc>`p0pMU2+{)r)9v>ImDJNS0Zj*Sfs z-7e@R62BUf%hLZr)zbKCTM~%W?c;kv8B(34dKU9o?28Y9*g_?g)Y+62kLl0P14SHm zESH}bssbdiaPX}H6<`FC!if#q)qNrdj6w^8R!bvhLq7~r%bP?7<=RSEA+Ai}kfzEP zASSjWX&Y)YSYkEbYNT{xKeCZ|@CjI5>f)oW#d3D-pq{`}p&klIsLumZ*uFFjmnW?3b6v{lm(TcBivuc88i z=6~-TnUu7(8bM5lI4PD8Yv}OXdH$=FgFnr%(Ev0%wv$;(aW znHuO`G;yH56K(3`V!ZFFPh~n69e{GESR8vz=G}MPGZk@U^VZ*+3 zR#RrIbsJKW6%d#|fS9p8;tiLYzZQ-vq?iiLcfx*Cr+DV{2j~2cU`?5xO|KJrvP-m@ zXr{rzqc`~Dn!LcNfvdx&N;pMN?x}7=t{1xZE1JeNOIiS=dJ7#1|9)H(0;gQk8VE+H zy|OL(SX`x7tbRSDoO3wk=M%+sU)6(b!64#s3{R85w{bOVqXw>kti_Vqt18*gJT&;0 zli-PSfNu%U8IG#J|F~wSXE;4jpj?fAvE3(m{sHr!yw$&lS~a`g;I6)UTPJ--%#D)# zrv~^o+i&4}{5J2+f!{(QB`Ce<;Ao|XZI=r_&A#IdIl1YGv>MD6L;`KnH4;^aVfmDI z^YIFs5x}A4@Tmf|fq#`J!Td2Y&lMWxb>J5-@0Px0+p&*w9>T%ha37wW9RYO^poI@jT+=xzE*Nbf_Iftw?CA~z>eegj3QkhxJ!ez; zA2%s2hZ{QtZDj`1sw3RyM$F=V)J?ubbURcUpOkWRJx0SjMboO?c|NgRV-{N=oRer3 zB)o8i!c5}d2ukU0^O;tR%b;aL@?+nkMWej8i47*Po4aSeB`uVo{k7jKd`S6~2Tj_4@6+h=%cpjg|9byQWE!y^7S8Y76SeDwv zQdM{~@n<{pTSM0CXdS@X`}dMcp3qTlUC0yYMrh3`d(7JcKx@_hAEC8loYv_6yBk#J zC}QaTT4Koc6#&wkvCgeDqju~uquWbIDT*!rUs=OrO#Upomj?--k9CQ16+DRDoZ%0! ze@`;<`7~V18#J#uV)V&oR+ymVq~J2LRQPsf0%tBB+7O9lcKi2Er+pS#5fZXtubf}9 zVed5TEME48uc1ZR1nm?9ZO4x41}4`46Nu*X7L_hOMcg{n$q0QhRBb`2QR~FUrXU{g zDbW$~uUPF%EOdLkBwCs{WFbcONG03qu!c#qP~Z9Wo@@)dhFbRRDJ;_phmL|u7?)!H z(o<9>o8H5F=1XU{y~%N(AbGCDbdh(`geY(fh*WwR@l`YGnNl_^RY?_b;Ef@n+QLh7F{59>fN=%o|4&X=K)pcXV-lIOmHI@#q zSyhRz_psJp&0UY9%rM!5i+;h+L^Ioyvrf&@*S73TbL=^_^G`U z@Q*#4X*-Sn{A{Kc?mg`hItr6hWMDTQ*h07zDd}%#`B`_j=1(%$_IXZ|lyG=Y*QXji zrv3*|Ci<6eqdF07PjLv#LGRD~bz(SQXVT?6sXlv@-dGmby(NjDu=NGOvN88@1<&99 znhl2upH&hqukDo+=RbP-n=_7%JXz?Md}QIpGo{66%@I)9-y9Ps){zkLIWEq(Ka;jH zJpJUT2V1f=-`%XN=h(&LqjQqU#rN_;zQhRHU9G%uP5GSD?aKS}j|N>TlRus97$_&o z_GCIUboA2Di%gx|%3-9MH_SF(_0CihUrD?L4BDFXpA)YQdrrWAEupdPu>KC3}de%KZY!t06E&exUiyHa>YM| z2Ajdu!Q);}@GCVh6fMSzc=?Wg?+J%yT}^j=a*%Mq1XnvYaZTzswpI4kBG{TCM~?xs zSjGkA7h`Lk!yNn}>DZSsxl<-aboP_q>gHRF!<0VVLdBfdum3K}u-qM~xNW#X_<)pf z#trl)t$pdtWi43F@-aC%O;uRo^_16WBEb{EZC66z2uJ=}86$@rc3UVOC;-@8~z+g-e}Pxt7S5#6~B z@oxCdP6YGte@h7{PQ9_uDq=|-ve>fgQLxE7??QyjVk7LHX2yopoUyZ}eM4i?VBn&d z*B9L=lzl2PS{l$#Br!~stdqj@A~qxk#<%nCy>O#P%?2klhOVdT6t;NVrQbBZw%A<6 z*!Q~sq{~oD#oV@G=!U1nYy>QHc>Npv*kn2+MsiZvU44GZ;rXI6ELBzY*w|*^xk|V> zn>2OpyL)J6fxf+MmL?M~*t-Q+3*eK|yCkFTq1J@J;x8(8N#Gp&551;$NG>+0xacYzKO2_(%9s#{RPAa^4sIU65(S_2Exz-k9bzE9xQz*ejDC z9Kk&f>RaYBSgnSKv53C0s=W`vNsFtYGVW?=J~qV7h*b4SuczGTUSa-TH`VXC+y_%5uH4}H)w%8*`6<|)u+%cKEu`_QlUsuz z*4_~P3z74rGv@k;J9o@=zb)zcN4-{W!=X3&kikKX#n{di=)NeDz!dFoEo0h?A*tV8 z_;oG@S`9CJA)#X4RqY4Z+V?TbtWtkh)ebk;=qNHEW2i20qPcwRPPx_$btdDJ=8m+J ziFWVd_WZ8vB6dYV5qn0Na)3c{*Y#bCg3s&&S!{Vy^5X`>LU~T->v+GViFtP|k0;tH zh6Q?jENwSbJN~MCiOUL5U-y@k!heBDw;qI!_jzAnP|^os^Z1HiKpgtc0f4bELfNMevFxeQUr5AYS8JukyOw{xDv~NUuJp z&StKjJc|Fp&_>o>D3VO0#j&@hxS`g-CR5S>k0S1+?}bB#0-{|$g-27|Mi zLoz*Bg&l9d3Tx#N>a6i>nl$B1D3W8G26RX4R^baII-or{J@6;6D=;W19!3V^3|EB| z{Etp=RKI))f$wIocSOg?*p=UaQ3ow{@xtEiZkD1W+^>zCLw6ZX3x(|FD;3kuM%Z5Q ziLOP0K`q~xaaU@#{F9<%e>cZ_B;Y)?&HOCjukY6 zd^%xAspn>$MnZC-2TB4%gLNxhY3J^#bIKnR!Us*O8B?RI4QK=K4o&0dB#{WR)q%Gq z`x^s)c^3K^a1^nR`ZafaTj~%FDZTs)uNapG*rlo6_1OUyPLIt=;Xm<%7N*HQo23It zT*0T(BF^i~Nt^4c+l+_B@L3D9yRbBTJA==WELve$1Yqe}(xM4f7D?rBvh_ zy7b~vTw}3RGWvYLL$Ybz@4x#8MgYV-50Cwm{Ygdz0BeQ}{QjT05Fio`l8!0`dMX?? zYXt3Z{m02sb^0s7hy~*`5Kxm-l~Ma4b!C(bRFM%g{^DOf#$wfPaao{-Bld@qf6WlZ zsguinO$W&Ers#IAg}ub?&PRceN&`;5EY$KFQ)&vR>3k`N=XUF|rENEBUt~ESz*D)vWq+ zmBfYM7b5Q&Ne*7&hnnZ!?l*<<Be#rg!C%qQ*EthgGdyI@_!9aA|RL*Y; z8vu18U`FjVIQ(y?72>aH$YY#DGYWSc%4s299O;GS42b-i@*3GuqgI7!?S4jkz<4a6 z-F$#?w;gd-RR2ELu&P;EX-I1{Q@=4fx!SeW=~;O8MDLi2XoMCpR;wBILfvq3r&)EL z;RAk8Nw9RB=;lI;rn00QJmsq2WsAY0?CEfg@qOXK4_-^}NY9CP-r{qo(4Q~XBuDEb z)E4Tc``j!yTFwSBafFE*xlj}XHT6IHg?l0i`r%2jcGE7Ca@hPK4U=2_vSQ#)~u&6eLgSlnn=G4CdeiOSg`4l1-T| z=}(!;hvnrv8KXYA&xvOaGrpP?zlp~lQ?hP@iACH~ISA#^sR^M(X2J;rdCIBQtxG*O zd4t|%5XF}n5Y`>B%IVIyBn7VTS+w)B;A}oYeG(4^-jw<#e~>?HAahcw{ACNK)T7Bq zKFCFW=lHXKu%8bfq|4PVZUBg7rqro9;(I1jhG@Pc9}`^&`C5 zjoWXyPB^TlY%_cgmthOJ7zt&p4s`YHOi>^_Zfd`KXqU8_^abPgGxnC&f!=uT&jm#< zq0TwqlmAT-FM`v!q(gI6zp~PM8fjB=ZVi5T(fIiDR=RuVi1r>hhd;}RCb=SKykrq8TLsaC`U;`w5l=CeNKf_G*5hR^(a;d;re#fvHwt#?`kPaaq1zsMsE9a86F+QbEOn1Pb*({d-1^r;I?Dm@@I+ISow6? zbMNP&@&+`rL0D0S)$j*8MC<>hy(nZgP{o7MKMZfP(+kv zEMvJ-NU}3ZW~K;9c434m+_tf=S?3O8U$TtJVCFre)%`qwJn!|q@AbZaJoCp~zu$Gu zoO6EXch2{G&-Z*kpHBg4H%KZw1WB@Rh^@qU%1Nj9wv-T2KBr&1xK-`eH&@gMK5!FV z_+oxTc33R)N{nTgAl~3Kg*#D^T{zhs9%5TcZGDcKW*5EK8_&OzK0X=zh%*6Z%8R&K zzH{wCL_z_SX$FYK{74NtbHNk=r8oZAq7^`sB+|%TgSAn4DU{8Rs@%ac_9GxgU#q zF3~HzlL^N6eJ*};Rc0^jjx!L;OY?&iUZ=6$YIX+^)ex%b+%e&9en{)?mOJeURFAb( zbP+^6Z-qb3xumbeCSn%K|E9;*MJ`vpsymU_eXlJDcXO@r6pfZ{WILGv4hce{lsb&R z;OLMe zO7))m(RQtI(8*easLkZ-)CdRH+=KzE+mCF^cO@R52t6cV*&^zt{5D)#Nvymc1ooeJ zaD?f3v#mI-ifpLo2h6LOD|JR0xEzW19x#7;JiUJxlQjsh{d~Sz30Awf2p|l zGf?&9LZIc7PsBqZqf=Uh+k?MN{<$;$mz3SVSpT`TnO_XC5@4<9u!mEu7d;eesgJ5( zbtP-JEr}vzMDi~3lGnAnuNX)RKT*g-rd7*2)mG0*i59YqVDNaaVI(lJKde8)32De@ z7aic=7J71|5@fatZ>{d{Hk9#)O@6PxAGCIXK43Bu{yqx-mwbL>ZU)XMr8~M!-nWcx z#8ThqifXC{7p0$p>4!?fa#OG0q`7E=Jkp}Jy^0K=zD1>5VngmADr-P?Ou|n@$(7iW zwMI6CU$)*2)x6j=6uE-$)Pw{WNp=P4XH7d+5O}2@{5~x>>EfwkTo|*KIu}7 ze5rBF%BrNesB*pBTu*8*_I@N{&#f|-;l87J@EX4ig|!%uR8EP!MsN42cD^8XH!;&R z{h`DC4KN=Mx2p)MuyyaNYMrhGT#pht`?cF~S7DS2ered5kxTz`9#=>;w=TXdy3Olo zlfjAOdHX`+W6q@7m^I+F&F@x=SHp!(Pw0SjGXD%R=dsjcbNHbhp+H_pZ14B8mDGbE zg(-O&9qmw*(WrBBoe>G12C2G?gjTT`jgJaRqG@-#Cs^)bBmf8K6;`Dkxy~zHEy}Z@ zk9@B4@R?rB)Xh{%oFyl-A`2pqX6vQ-qSK09{MzMDDTRMNttgq_7RlW(Vu>*1tlH78sPL&|u$zJeXQn>_K*{cx>u0N=z3)zXwB8D`vp?VObWn0PH*wJ4 z?DCLoZ3%IAu#H`JKg_4?#K>=t74K(u)rl2Hc6+AFY#_Y&eX>%>`BQ^`X-j4mGa}oc zPG@0;43FzUrZCHi5sJp_G6v3ECV`@6yFNJnRWzSCJvvzH-P6=L)M~LEDuWa#d8+i= zcq0z!(XRa9-m~VWgHxRO`{M6h+62%-(yE6F6&zpJc5s>k&&{WnwgAc}C z*MhR{I!&XIWY6C{u(Z2EB`?8UEAj#UYwtPUS^8go4H(ODj?w->7|h!qfQZ+=i!ePuei zVsCYQlI%^~@Lu@zZBsbV8f&NSomZ1earnU81sN}$+;_P^=B@qBhHj_O^6;{ycG;Tg z32$5}+C+vwXs&6XvAo8>cEZtlWWP~{iMw}zqCk}eD5ga z)ASU1O0fcEMdTS!uPt-TASd=5AUO5>-jC}UE$Lwy3UTKN_!T}!9vFp2UGdDIw%c9k z)nC;#P<-mf``C@etT6_rGhETN=ru0S;6$iaN^BwfpPr!W2(Y*$y9s(Z0Ek~ zTU`f&OrD-iPPg_l%wC@Pg3x)MA+nE&;$Q`fmVt6m_{$-u5yGjy>93nP*79R%`;U;t z_T&Q=Cs!XRx6{;FA-S6~;i*K~a7e+`PNwD~{27aa&X0JOPhZOCMTbW2{p%-i$sB&l;(5wYk|cb83YxJ%e6%%BYvU&=_lUkQ;-JSX9OjE5*Up7;S9 zV#cg9Fd=O`U+TTceG}c-koHXZ?1&Pls2kz&6>0YPZ6^cfVo;Zk9qExT&FsK%2h6=HAC z?0{p&c#=@w_2LeWX?iu~vGBZ)^Avw;M^on8Ug{#);ab`h6`PdcZ~yuEB&Hglw(_Pe z9O2Yz)AZI;t;{i&f&rWqvEvyFl)Uh**3TRfYR7YNQqxdsFxEyq7QpuvNo4C*&GePR zR*bl|`^JUeFG@HDI^B|g8XS*Q`Cz6gM{qF;3Gd9!K&$cG<>Lycw&(9uU~TR`Q!_S@ zzmmyXUcH1lSLfKdi?wAYh1oXAP3PBY)&Z8g99fyQEIdRM%cMNI&g%$^)@8u#gc9y9 z^PzC}PCA0jA-%hS&(nR_?-PmvqowPy?5g$YG~=4rBLdx+P})edM47>YL+?^y2o|YI zJy@bJo@C>z`bxgvAk?l%jy!bY(6jQUcyufh zs^G!inEBS-Z_@kz8kXe+i88a8ZMM#B7z3+CiT354jeK(g(DtrjQpoc@v|0JBTTgJj z{iMc3lpi(R8f^4?k~Wf1I1=o5`l3cp1W&-nT=BJHwn>Nc3eJP6+^Apr9&}&?5Lve$ zn3`6}^xE%jcqRA_Y5;zqoznJjw7(=>y*Or@VCBjwIZ{4BPrX&Z;AQw3h4mWwM{mPF zDbM02XjOa$wX*pEEs*it^=#_;t~nr4?2m))wkBbTy3)cUl3QD5Zuc+s)&XFcPnJS*u})?f^k#M0{4%%g+y9CYsiBnKO&ru&Pnm)L^=Yzi(sP=79W9;WSlH!m(-kPh430x*++GSfkf_)KR1@IR{K>D> zx8I{wdCx=AocgMouO5M#Q7EUjZqw{QEbWwkzW*spBzH-0mcv0i{WD2U>*1->K5rWJ zPAm66laqK7Y<2p#qTU;fbX_K$eLBzV*~PgF6&|l}>KaOBvAPD(qzY~g@^C&8ae;gG zfA)w~FZQ`^?u${R=#AMn;>MjCGN(g4o;dy0jQs$0W=3-83J8lJB7*`W(Qg~${^ZO2 z1d@n%vT_eDgx=_RD|%$v-yYBoWXp*n*e_&^OjSo)X~yq(KRQj;Bn(JEpk-rvQ)uL% z-s~+0IK`Wi(&9rIODZ)iYhL!smRwQUi;)(|bH~@OskH>O%C0S%b>}}Wo&HeT=@t+%Ev>Qc(m-!Tpxjk z-BGx5xw4YW(?mUl{3a?!lga$MIrzFcytEBu)TRM763nFq8OuuP2Pe=BwPU(PZ9|MtUP10ZN$ zb9c^+7`eO_;?EB8UqAf?DYnVVX`uvDja+uy?Y+~8ZS&ynYfR`LL-YB-!UMco(f&I? z9QY^d(TVX$f40f-{a{0+yvc36nbQY2AScU&sQz&%7=sj5Fa`y4R*__a`EOQ2eb35d zbRQ5<6#$8AK%-02ii{kc-*7ggHRDUvX(4`ADEdcizzIF2XuP`VDLPQNJG9ydWhdA~ zLN$NQu&w}Hzzu*DSS(V7YCpEvbPi8Zp?w~aQK+MFuY_ zLlE}N1%xqtQs(TWXXMg&3n9ZKeKdgPNsOnj&HI_rdgvcw>15UQtaTYW9;sI$OegdW z)=#+E3NKM;cw!XYo8B`zu1bge_9Ac<2v5l{$ab^b8!lHod09pU1j5&Lc6S)6N-@xR z8+K|N18pq=8@!7FPxdjP09Wl7{o03&er!+GMbN2NN9Whaib?YV69oE7+S+Kq+CAj< zC*(Ea$<_Xg%aHt6t4j1_Aw!kbW1vDHFSLT3I$)?Ajq{cBp2|pnUDnPI6VF{uuqxo&!c|8_H_d zzc7&A-ySTMgFvonpXcw3`W#QJFr$4GU>y~xSiQE&>_UrPzeis_nqlovQkc(E^)vi6 z!*W^a)gH-12Id5X1L${GQ{1d4_o>}lQ@opsRb8&!_Jbhzpq(hdWrmZ^b?2-%`z=P& z2sYsBv*_K%hI&;&3AEK}7Uq^MhuW(Iz_)zmF3Gk7p(%RD%sUn9Q1Q;SJeOe|e)$GW zO`eIXHZFYsj85(keQo8fZbe%N*f5WxFM7oVEL-^})~V8RY~xd8P4Eez#KY*fI!Jvq zP~dS}y`Egzpwa(Uks0MLfY=sh2}<4mqtqAG#sdKx-I~=o>(k7(^Vs#uF#!SI>tm7h zmDkG1?sBX?sTUhT@~paLDsBalNN>i(v)f7a+xk;RTIvHU z&GAq}TO`%adn7NxCVemUNjF`t=z3YALy*|Pd1m!1r#L_vfDpsMo(G@f12&>&{0Il? z*Xuu?wt~pSW+sqCDd4=Cf~s1aS5b`?O*bRqLLwh~G%e27Z9hz!T3vFr0ZhzenPV2k zFyJWMG0(2Jt>~+aS~GlF>a&ciRxE%>8CsT$S+!UcJzgIS*mzbx|LbpEVFvHAt7wJ# ziEn%hE?gtk`pq59Wop>{jqg~aO@3m2ewD(a5VP-7$wND+3!)q41A~-eO$mIti|m!x|3vYfpR8 zg(0587G4Ya152bE!yBqDsGu-ubg6Z5+qh8W#)MlojcrIZKGr!Pt%8k65A>s9Edoq6 z=LT{D&dzz!ZeA2IGkou}y4qpL7yr>ML3Sy_1>HPQ6FCI%?E1?EnyPNg1vHqf#J*1|{9py+JPXNk&eFKPe?iK}T z`oQVH* zVZtSdqB7UA2#}H#5m21ePnLF_`vAecZ@!lrn~CR8b{IOKMWrmoT0f0Mzky4}D0;8m zuFZX-nunBpqUTCcaDh{9jG}4Pb7_sL6$+0Z_+hH4qI~gIy9%&8#?yVFAOc>XKqx+pfjTP%J^Tz{+`lN! z1Mq-?8e{PZ3OiFwk#5k4p_522So2 z!>!)--4276Grda&ai%Tp2lNG;JGTxbP$yHa*w&gi1HT$utJ(BxCHDZR-N7G=DR?|4 z>kEJHJix0J24ee68b4kDXdDyl;D4Idy~JGP3_&z6!pDup0o6@k_yiW%8reSXG`%6{m=eGJ)B)F+&_3mhP2CJ2aRKyA7{iM3`9l`WyG?(5^OgZN z0vb1rvBda1d-Sd7&08aoO7vy^ZQhCreVe75w{iQwtrnZN4gY&8pFdZ-PVdK6b)2gN z{2I`4mz%lSozXh^NA{t9mk#9WB`7gVk314EdAB`CPzWWD+7Bk(AOE@fPaphWj)UZc za99F?G(9^z`#k$bEh&}8J^_kg^xumH6l+?AnKdt31>gsG;34K zzqE=g??v91t5wMJZ&N5>MmpS%VM3lwbnc(-^QbGeoDaW5!4T(!H@+1qkmn3l1O>lv z`%<}Wbxe)yW;2!-_fNM)Yt_wW{TJurMzF!(;c?zygRsHgpAAkNgu3DGK aWahtKc3d5{FMP&q3q}Qj}u>lp;kDrAk)}T}r6Zj{?#RNC_B9VgW%AkkF(gNa$T@ zk?sMN-b*B*h(H1f0U;1-$hU*{-uJ%uyMO=2_>J)~bVS_Qd#yFsn&o-socooTiQdT* z=T5M(v7I!~2br_69mBA({ic8X58!{yz3*BAA4dYr^|aY4`Y$X2zZ`SFZG4-J?Lz|R z{{7#9-#H%Z+Xk?)akaDl9_jEca%E#H$}s@lwtV75Wh^C~?|GITM;88wh-hhA`x;lu zz5D&`mJ=n(P48aJ`$v(ARjxhA2Ve2np_T+)ipN=ME<|Bi-$f?1)@a;==HV(6Fsc_7 z6-ByG(sf74;MB3qi^rb>f7s6T+P7X6d(&C*+u+oqwjvEC0te-$mX(!hE3V(S-kj6T zO{@>ysyNBUc0nfa;sLep9bt=?i=$iv}*3v6sZ zbY_k$wjQ~4hF1@#I`P0$3v64O3O-!RaS>q77oARl+1`BlyW?$$n!Ti;n6!mk<%$0> zjpIW_`R#Aau1SYliRJ=dXVW_ce1q*)6EMOjcUkP5qt~>e09lRLyO0wHAFnBMYcC@! zX@D$m6$axRnu}jN#vO#cHH~3s`^H)o+tVkvK}VjNhIX+hWjCuUaA!BV#Aj2}qnbQ2 zh;HS4y4=^bB%_OtbzOc{7$v*%HtO1PfBF^C5#e}&Ydp2~P}(g9IAC|Tel2-ya4E32 z)*H9%EwpPSXm`1nO6Zcf_(_I94eGF9`~L2i1bzqP89(aYJFt*?!`-Xh@i#-ik&WGZ zkiYAa+^V~O1`Hli8;UI=FdB*T`Ne_A*T^U4ZA*4_cQ2$y$I$ESAeZAJ@Oy>RFr$C5+@(0+wRcxWGG85xL;SxJA+uBIppDLSDsoQxHOyx z-?bf4sJvU`WO%k7&S-$BHJ|B=^QpVK9DNyAAyEvd_^ebTE0n(-Qdtti*K(6!~1rmp{qgCp46Buxwt5qi)E%_uswd z;4_gcg7KMZaFcyp+VYcJZCz~nP)zU>TuK{MOMqNSHO;ztKR25cmwXJ^h6lGmDcQ4+ zJ+3*os3)qyhUDym1Q$c6A~^-*DES^vXIu6Rz7=OLk@K^AF0O^`2VLRSsFX6|k5mcw zye^uxp9r3nlmaHL`}T$U6=^S?e6XpTAhqVts7n~JRI#|xBT$S~EX?2F%(rZtn&@Gb za?Ym|^((wCeGdbQY5VU)44wb%M{9U*5!iWtFP(p{lYCIv&-`Xy12Ai#(R(%+7IRb1vEJUAcvBeWI@IP*Hi+cXBaKWa(rOC#Fo@ zf2IHRqYMEJS?SW(*YR}tEBd(lD~VvjRNTtY)tKCxvkSFj9wls&C;^UTj&dDk;Orq_|UVaOA z!;W2$Rd{XlJFsa57fg!KS%k4A)~PS#lux+dR$0o+cAQk0LZ`8WI*Ar2k8TLm5ImVr zx+NH$#|XOSsL) zc;Cjog;zyGajE4|r4~NnzfDR?245O3o%RmtRIktDDj|Ay=5^YQJHAt#(iy(uZ67Lb z1mZA|w2^=~3oiHd8J~x~pZYQ;0FKd(^wbE~ZQHCdJ#g0}jKimzU?YYS&ioM~hO1U} zs(bfs@n|AS3o(6A2HoJiMX0X z;t*$}9%yI1D@b$*kQ1@jmyBSb?q$C28rLl-rPg(fQU)!@}F`F;a0aGdhd= zbC;?(LT)zHiJr|T{2^XYQMY=HAAD|S{_{wGP~RkV<^$B6@sOPKEXgD%`f*!lmsC`e zQA3<5MG~-c{LZRwuOyq(?yU_eaY^Sy^m{rUb8xp+fs&I`^iA;k$9LLqLO+ZtjQ!Ik zW^hFU1sV@Ikh~K9QtV~cGLqk1Wp?)?I~DZ3XSNtoM?G8qS`Yp zffCPsW2VQ6QlkJ zbqe&MSonKRX|V%e@gp zUN{l;g4|r7Hu0mA7f_xfk#bT-AeDdep@APbb#S)_S%y&7GfZJdK)WrwVAE2047{d; z?1rKO1-hgqexH=QoWo-gvWgd-tf1S<83=~hq{?E#ij&1LHB*cj$=M!BvC*Nq>pIDe zil+Vwpb-UAk`f?=GIo$9Y%LP>m)^K~nn)+U;>Urgx{_kxv1Id6`9Fcx{;j;*{5o1%VmE%p zh*yhcL>ho4Ao5BRk`+xU{KnQARlM>&(-|axz{Bp(KA5?nB@Y-<8{^W;w5stgqufVW zqTufe_)Y^sgJK;(5I(SSH6HNvqNs3Oa+SG0b{Q&UtYaBWw^oSq!Bx|IvrV}?q%r-D zQ?1b%V#P0XebPTPb+*64JPu5XO|oneQ!R@2_pp4UTGNs|yv}}`RC7%qCSn*d5RLo{ zmaxx0T3!gtsEGY=>`j3u`g1awtf|avkU{#46cSp=4Ik>{Ny&v~Mf+=c!%}iR?J7KY ze%BK~DMyK8B6N?cE+wDV$n8ZX0P8lp3fN6di?O6(sxg>3MABVd7S~DG;IZB8H0-^) z_kR6)EhV@wvQ$lJSH(MBXZHTW-e<;wx(@d9LQd=7Bs5|ESfZfc#^BM1Pj8)txBle6gjpY4J?RR>$DekA_$sqGMsh3qjmQw<=F81aKJYBt zbCKhe_mY%{j?kr(RpQ{k;zEYYgMsLoUikx6!qrRs($XxxYFX>sKl%rK$E*SBJHcbl zT9zG%gF`6J-~YLUEb>lE9xpJ5B(3)9C2EMRoX7ene;tI>07sGEvh&dSIjv*|!Wa#+ z-ykW%4>s_9%(}ekXMT4m0HZxADTb)AICBn?yD<59=tZ>TY+dPM8wHf+6kA7S(@TWL zNIrZ08{naZfs=+5_b2KML=K|_D7WOKy{%FhqyfRS zkP4zh^R;@|E!bN=gPJnX7^W2+dKzD@ptlt z?&8TVgKyQ}h9NV#`}8HF$aA_6q`K337dAU2d38(&(DRJg_)>C` z_-D57ofd!ah;OJx$g<}1<$1KUYzV!q<$Sq!@zHWon0F1R zpUvN<4ft>er(`Rex!axsi;HT!TEUZUN3!D>IvRaPpMI2z1t1;U(;tVxsZjY!jF5_Q zikXSDTbBd^udY%%m62Kw5#$G1a`<77lgHJk;tP4eNDCi@_XP!fG?Jq#O5brSKleW%>%Er;-z$no+0&5*UFT2dLu*# z*zNjXgNUO~^M{HG&SQhh{#Lc15D3()u;GD>0+=1~y6&yWUn4d=q=^Hnd{J|o3xK_X zhogXS%K&I6ksa5K_P32xSw%p;(Sf5vTkUbXzH#YQh`_2R(H#KZ3z++QQd?gPKvXe9By_U8 zZO3cYRf_TW>LcKDuV;=06&t3mT@pijSdId-Ht52*Qb zZ>j-P?wnr#2q56U@@H20v_+y1Y<#c(^@dlcLq}jQ_7a}l=e!w$CLU! zqjXos(2XJJy>O5=mH1y!UYijrNrNPtgZ##Wo-f5 z!XLnKf3JE990585vaBDx0q7eWTk;_h3z_n#w zdAI`JQ>*7;ANO3Uqm>xaa^*{`Kp#piSS~G5Vc0{K#Y90iI1Sbfk&C;Vlq99e(rEK~ z23#xPY>E^(f8i8({+*OLXw%-F_;G$@DaNx#wadK_l2JPng#RFKJR&R`>~WzX`dkKa z>14HEL;8M=*1w-rE-_3Nzxf&Cfea1=IW>6!l zJ}VELdVF{nX@>MPdElAurZc)jBb9d|zjxc|J~zY|_FTer-nMufeNL%wDefdqzqUGb z!=ms(Jmi8ri4diJ?F7pYuw7xfgZHY2vY5ajtpMWPm3=GFy1r=6Mvo4b&&Su7pu~~Z z!v{93#8r!siG7*$=2Tm2kYm077sKn~-i^F2yx?=EPy0Cc%zX4~@3%R>WCi`1kncko zQO6=m3O}dS725Mo`S+xfQY~!HEfKrTcf9l<12To13XYroS4>xH(V#56lU5_lb#rJ< z^7#r~^r4GOPmP?T1@4hn)qSOYYzMN$#p`_6o*f~O;yz5+4hvPd+aFh+6eKqG^#k9- z>S2ZEwK6HukqM#7M!(6dNxTxuTG1XPBkB819aR>LS4bLwR{!w1qOMu(P*~tutul3i zQgq>n((-8EP9GofZK|;ER*?VQjr4K9U$%i|aXyhHo1^U%5T_Ft{hsS-OC?KPqk)o> zZ1(^kd=q&csX7}3eI!;Qma`wy06W*UFdy%8+7fn7Wr3V?lLxvqEI#6)u673#lWe<4ODh1gMB%B^);Y*!*?$x!C-C zU)%Gth^o~6`6SVr-ILYnSGDSED{Zhyk7^!|O8U;N<1#i*(wO*k`M!yD)fCq$7e&*j z3zHdGBM{U$JYeL}9|&FFQM}yNRPgYl;MmjP2B+|~SZ4)O_*%63@htZB%#hvO+#^%irdsXHz8o2Wq>G z?xFD#-Wn3<$)K7n*(`@qr*m!#ve>&ConGc%Jc{yxQup_>il+vU=VtKAPA#iG`JBpU zPUML9WKL!XB&Ydwq`CFP6kR|rtTe7_T6mt8z-;Vp;w%6*xl4A>{@%a}GElWVp;XwC4D z_3BWkH_jEph~}~#_E)+>21VP1pSkwK`$~!T{GJ=;zH+cM`4;45lTr@dU%DSwoGVvj zEb+BQkU3s&##X=U{W&==zTnF2ojyg=y}8c`vD16Mc}%Rgg?w}c;t;yOA4L=sV|+tI znsnx-aA@CIX45SYWK4~&j!$v2`{blEidhHvdT2>U-`5Yu7T!?fnUzpvQ0-%$%}Cj> zf5Lvg5U#=fB^>S~9QN~eX!8V+aF7iditTmR+OwtQNoaKKA8fT^N%3Oi^4U9gL)B(t zo%bJvI{GbUyaQXChW+59sy1wz{$}W=u~}?dOOZ4Ql93+J!^H^ie`hBynId*wCz2#g z<4OG(YV-brtg`bS9=E)1`lOAow{d#&+LaB#63Y4MpMR*WN}0l9cDhXA4-z_v!~)oo zk+T;;+XFvgw;UeRUq+zylSi9uO~2=qXKTDO`!4S5@+{DTez_GXW%=J#zY_AL%EA7R$G9aO-L61^_mY2MobIST5yFMbr#qCAhE0i7wYTb;@R|btkj+0}Xo8+;Otbs--Ts!K*PubBfdH z=Wn4+lW_I@pY1`mW6Xqu#e`*#8#z_Z>&Ucww){Up$#iGxWuAOW{ab7$uL+RuL3mYe z{lK*z)WZ6_om>!FN7!z`SSYG2-a{vuJ|-N_-*4l7n|Xf4C)PsylDw>)ZjTqLZ0Fkj z^bjivlaZ`9-S$dG-#wfGmfoM82W-3G*+Q;cyuUyWdx^MY3Qo8CYTSdrrqaYOj_KWo z-A%BRR~<#gsMPuOhFV+1N6Tqg3~Y14Fxi2l61nAHpDzXeeC((3XIPNyu>V526DS|T zGj94@d6|e|ZcG;cu)B3`Xx1AZpTIY|;3fP!$}=aygCK35+M=dYwQ-2)68J#)N&wYc z|6cGcPTXjtNGSVYqmVjq?nc2D(svcX-0M?rSvzSTEF*g(MKR;9$BgFwEO(|XVyA~V zwF=(?Y0Kbk7-hRfPIlJ0xi!WBR1i2cLpb-Xm!baSc)F4oKhgz;~%aKM0W!m?vF2BZe3Y6E$bNmWEg}A@eR!kC+0Xo%Xev7%z)6n zoeoXlQ-2m9z9*Q^4?d`Zb=mpK zf}^|>_XlOqGbQa#Cqi&=?b!_gA2 zF2`kuQvi71oVvBHLuCQ z;#EWpdy`qgS4nzmk|rNA0J8U5#jjVU8lpNCC^lU2Kp+__z~i#5jp-d1PqbTNj{9kE0yuUI#_6?B~XO!W_>GYoo^?dj$(DGtR* zR_*HF+7ZR*s{rol`Of0oMOBC7=wW>nU{k2X@YT@llzv`umah$enFvC5B2`*<$12Mn z4bze~8ns1?{B=c@#g{kJwrg56nIUgJqC@BB6W|>lpA&rSlU#>(Y2BPdkN~6#a;9Wt zhRK*AkZw`+K%UuF${Oy5P;d(kwfYuuKtj~ftZb%)3f=G2yXzF+)z}V01K8f5;GuAi ze%2ZZe=yWS{;LW2at&eh#mEu1cVR4|!_kdL7iO&+50B#aJ!GItz$*cl)210Zj@e?N@WE@C=cFaf%`=M<`LiH>gk zDQO_ppR>;X9~8hEX2=@3>-(hr{AKJqV1RcH4e-B#`L*?S;e)|xk?oYqurFvJ{bXkH z|9AlHj{kpCB6EHK-KBss>ChFh0eGt~I=Jcc%06#Hn&FEgUf$k4`%Bpe#r03temsf! zKscz@+LNadW)6bX^P7qe5IboI&yeQnC*5S&_H0xi;$VO|;m{E1sV=_2m%SYU+n*EG z>S9H2gootU4y{1?d_ASIW|MO$q?O57?O2T$!eg;5o8|N|CJeQx)weOFQyF@j)F;ro zt#cRxs?TzmUS}Q3yXDsB2OKrnJ!PpgM$WtDG{97a0mFpO>`nK=wv!9hzW`yM)_Xyh z9GY>@GCQgeK5@-7oNPg@Z!QU_pIOZeZrz(AayoCfJu!@_%YoEWS-?#}cy}=BZs}MR zt=75ZPUn3`0ZS*R^wI-|J;E@83jv^lT2k@47L&xR8M)6`46XqvzOBoQ%i70P?)}B0 zzlPX_yI;f`fJHGi<*f`tYc0x;aTN~4R_WMgD&)%QXTd+BWH1hU>Litc8?1QotA)ir zS4%3uC1$~9Ih{RB(CVH#cL0yEC;JaL;`_Q=_wCQ!avliF1I%3LY}@aI=`>kqAyeDe zEu=8OcE}6wed{QjA96P#wTP9erbPX78&AoJ5|SGT8L#eT*Zg_piqD0d*Wki?+EhS_ zk>RV^h3uC~v#d}(yt9Ylb*VFhoL+|`>2-|NruDz5gm0D-8LNm^$P0|l=wa*)sJGj` zPwI<0ohKE591e;gfpCg?a{wtG#YKr?(UJd+`b)xqk^z#7c)IdQWVlt-ew=SuE_Flb zcP@KSu|-*b&M_THwslovMnSy12>E*iie`o3@sR~$N_X9(ajEk3c zQLAAcECZcY9FY2YtdhPk#QxPW8zBStp5TJSf*Kp#WH7#K0C`;IqV`=3z(AoY^mM zG;w1&0VQ08V>Qikm37kS)~ZwF+=d0{&l;_g*71~gv@gi+H8mn>AX{1X$v>RSF~Y_R`XQDqw(4V8;#Ge_#~DgnbH=Jd>8Q=4GD|=?C_fKF)$^PnjQRT%-T0(B=eDi zh$&XMK79DV^L&comnM2`Wv!c+BQ>{f0p~KLLK^f7*(1#O_{_9upsUW0*+RjDqN^Ny z;j(r>QvJDD8d<8VbeHlrikcF95T%f5Oxwk^PIt>swGgv|f%DZ|Q`Q(cpk>-VP^~La zOijC_J`-865T3eEU-Pv;Ikdj|q(g0a%?!ml@+PUY{G`DhW^HA7ADp-u@Nt#P8Kijb zq*^z%WpAZ=;bHC0(nw(+uv7koer@QG3PqEX3o=mqjBeUfbV1NN?qwjZwJ97IhMGAD zQ7yE3_@tr{;wgwg>*{#UOxB76+`9L=Fp!R&%kp^f~w?!e3I&i3XAzS-&ElHAE~cB>wUv1_Qa9wgBny}h__lsAy>BQJD=?E zjZia`94;q~ZTqWo%YDQd=?>_r(+0v4qLwQnJe#J>4O99V(Xl%a6n4OF9D1hGq5gqd zNCTr=;t_(Ha4Z^cy-@7X+P*Znn3UGM>_*?FY!}7VB;bP~_9Kya!jw{ec!1m&=7gST zP@rc0Tpo!Kwvj7b3+*D9)~0;M0q_^Xox=d{R7|_~XMG^OA(q~`CY8Sh*Kn|RMFnWW zCwv5huL5NThTRPfB{E~y=g*%HAT2#HeC&~3yNZXWMt7?*t%9N>p3P?vBaxre{_0N3 z-gmts=%AuHGwE&(eax%(z?_-}U2&gHo9o=WS{!D~?DK`YY#Bo;RlS|>Y^1}dC{FHr zE?z1q_m%x|6&_7dL(+$&l9B}SsUNPd`gvYC2?`|Qh}0lLYAKz^ON&{(GDznSh76K) z_Q>LKxp z2V!63Qp8oem;E>={^jRqu8Dlo+Ne`d-O13X8Bbnvnd)sC#hDpWaI{<>R3yKdfopn* zYZ5;A8D)K939)14%o7xI0nZ*+lX$_O(#S=T+dPBRB;RW!yc>OG5vuRckus+mbLjy7 z(nACKKyfDSlUX`!@2YKXe?B=!DM0j0SR2EPWR3isvs=_&%=O;%W0q?9O2|c(y#7L6 zpQ39%c`q@LNUgny4ug(6dqn}#zFO7s`EMChC$uUp^tysk{S!@1Nvu7!-LR_W%q&Q%zjbjl779-K}eLUP2hn6x(E^x zpB|6GUx@`YI^-NIZvd#{iibfe=vEq|EqHE@s#6ftt_G!sy0_TXj8z=2vX$uBxZ)5@ z;5|_Pf|{Y#)%Jd{&h!S3TgyC`Rx7>$gz6p(Vhj{JV;?gg{9@_x;tuAz{XltL3w9Kfy0= z)ORk`pmlo|>(t|-2S1>(1KMqi2u3B-P4BeZnBruDn@+N7k*$cKsDmZ?yk`#MvG%Q@ zrl0P@(CuoV?hHLobszsQdQcQ*JOaZof^*;07~{UeHEJGBtB`WJu=vl2Y2-}&-f3{f zomPF&0*ZMFKQ516d+kWVoHyWu``l@xSwaeVWE-GX3x+qZ-5KAh@Lb8_B$z-d>fT26 zhcd)JJ)W7=7h*Q`i1^ObqT>_#`6Z&k6N^0e~5Q9I9=8D!gS~tiSJTtvG zYhN6=Hja-3oterY>B<^}>6a{~@?m{Lpqry16}07CllMX=sJc1F$H1HZxyqLD-mxs% zPtt2oj!{@~Ti$Y6_!%z&Xj!eP4}VGmfjgKJNuQa@C=5bw+Y!gr1$_lApf%9OWb${s z?Lg}=TncZ!U2XcrdpZHJ?{bAr>^e!1aFs_q@g3NxBzt^BCQjM{>qOok3IVp`0N|og zGw1G$d**E&IBSm5_X(?`x-cv;k|rhx%s4IhfZ{HUdZ8*{RdJ`oxWh&i);0i%Mxe<- z@>>@qbg0GDQnV^Dq)(I*7EG!#gW;8%Z5*xKYb)X7>IQ!{?{4qSnl*axCpbZS1D8jg zZ0D(sh-*vL?*P*9QIUZCcrmD8(SOt`f5jR3t3liQCpc?%;|9* zUISp~G{e(>FqdZ|U_!8H#5#Q>jh(AJm#eBV+|XQ4tF(fwUTVU7^4D$|E`|+u zDo|VdZ=+&Mu-+~Z=if{T_M7e9wQ)_f8NlB+S)sxLUyF%bJsc;EcN_*O-k}^uW3;wN z&Y=3MRsF$C2WyoBcLP%9jOI$t1~8jE*X^s9B_e8M1gn7(FNmJ`PXM;OKKth%0R#u? zeodi<49$TDkM=$)h(O^~ze?-<7BJM}-Qw)rdN5nR;%h`HhSX}!?x0w^gNlrQ<}*hV z$7(Wdxv${XhT54{1!%p?mnaqg06W9>fBTdnkrUmq{XhjW)0A)r<~M_i(EaEkmJ@L{ z`Fz)zIP<_NjWY_!fw+x`=3kskw4}BOr$~vz;@gXuPkN%(ft(lwCtosOxbHBeG^8c9 z#mF-`PPaZHm-5bG@#9ju=K=NOjf+bKJRbThjQ`~kIfQ_~o<7Fbj28MgH$ALTJ)tfz zG|4C6`8vj)8R(4(q=JRqZLN` z#m>VIXxRycd5g2t-6cZ@Qn7;{D1oZ~S3 z9rpdGykKQJFE|@;h7cgOr0tJmTcE=Rba1m1kdDCj`N2>kn=j0a`cw z)JZ=<$)<_Cq<6`;L7wOF<4(tP(r<%|IeMJ)qu0SZCYn21X({bKTW}MAPo+%aW+kE-=rKX=v>S)j=Ub6%Jp<6e&vbtx4*>d-3lrfaGy%F_RDd^BC==a??MfUW#gt5GGN%b;1M( zZ~hr6J1PE075)D72Ow!T;y1cxiK-E1L95I z1e)H0XLgM*UN6x`Ko}LQ1%Nnem`q`V$7nQJv64C!!h(|$gfab7<+Ra4O=y*t9S|Qa z3Z|@P<3uJ+r!arX`7(aecGeOQVdl;$`EpjRHcdZHr~BXSAqSLgI-Cz=OFJ;BIWNdw97BUW#~5&Xi3 zl|+XzSpG*YWZqW*_;V8c!0t-`heV$@qO*t|g34GEi*jPI#Yz2H-Gc+tdV)nWK#rCk z9Icu{W;0A)R5}NR*I}_#f27k40F0J*?QGnxzEJfczb*c=iz{VS^_6tTm;p+{fL%u7 z)jRtqHDR@Oin6dSqh0{fFv1HPN}TXa^)~-%)nJk3zuX}+9nMbMZUd!E`|0&FgaWTQ zfE2N*>l24)t|umZ3mQ|!3v;NY@cr<0ANm0GsFw|2GD-?)lL=m*H)s@Q<#+nl<~krK zIDnmu$rW<7GByb?YNh|iRjIxax&q#K`1@$FMV-Uc^wv-UeAGv)@|q^AnQGIYLP>wX z!p4tK#M)-OEm8+kwq7e3E~FrPfk*sC$wF;qOux%iL5Z8<15;9S9fOs7_n+RKFPGh@ zjxX=`h1g(pd&te2rC!`AG9TUmEgPn+yyl|`6Op9=*k6RP5HG!yv|z!XLshCRD-PE6 ztZXQC_rSeh%NnLtdi9mnn1P!?k-jD6LeH*41PPnaoid6%KCDS`7_ZOWoY`vGGVWI! zvnQ>5{rdGuAOD!%=J3uIfY3(50Go^L8SoaUU1g{PS{AMp%MXS}-9^b52M9{x{;`zM5j1lw6ePbb zqUCr;U(v%Q1FY3V5>vxwqjhChI2d|j%+IeVcdow`hPo{5s5b^4lRTCaVlb%ha6Dy> zu9tg>1z9o$niq9~0$&_^JE%!UtdEUr?@4!k*ZtjfHjNV8sl6ZXH%$-UUx;)Ln%)Ic zBbDxWo5ZHX?;Htl;l%5~e`%{Resec;OyY>ov7uljz7ER#V2Tx7pcMFGU}?n=H5s zDl-9XFE8D)C1DF1tEva-;_eC=#zIOq6ob3==+^GY(YHaz?B&im!2-O?AOGg6wWy1rp^=Ouuz8asB3 zcFgowi5T|m3=g>fHv#K60BtsmLMtc7u$mTx)6T*`Da{E$T#G9AFHXAulM@s`-2rL` z5NWS7uq}vvOIcie%X>dsjckQU{No1at@dvf_P*25PkKFGf>F*b%yf$#+m1e_%2gu@ zxw&6}T8MyqH(XKU4rjM!h&PMpi9NDx1+d<+!*PP;-YU zorT39F`3fr+OlIWoZ9VaHLra%c z8m8`Qm7;eUnDC)p@+sL+Z!{rFr(-;4VdKq{u{%8;p{jb&J!I>Q_Ch1WY(IXZiO$`_ z0d%8KA;`zO%_%kl*^k2wt}AQ1IT1=H{t&FP&|Cv>0;ph;) zPZL>nPsyjM)l^J3(v&FU>eLsStN6NveuF8wLhl&jl4|}!Z3_axM{YEqJ`0BBOZ;+g zx_kgZhZLoI%S&a(mS)vwTQtlE9Y zTUKtV9>!FDi$Diw?|MWMP^gmi&Y#AmhOd*w@KamSJvq)*E6wm{6r<9Xrw#q17@+B6 zDQzF*1wmosu^n_g&=I`PRW_(-B6waS%epJ{ zUVViH`AL1$PD9i;X#ju-kR6tC7I`l=I2Frpa5H~$2cho}%=Mg5AmNlt&kEv^&ZN$x z-0IgY5I8BTsnM?2tqe719-68Sl5j2EH?KC=%r{SqusxzQgu4yT@~G6 zub?5esbSlL(G-<3;2nx}+J5h!vpLGa6kz^v{>CsPgm1SCqic4Y_rEyb)m@C-OBd%R zmaoP}z8Bm~A6mCF?eMP@Az!bfRQ_^vrD6B#>sALFR>H?g+B63JCs;#K)qoU9t|Y0d zbQM?aGwe3r`(LWhvuB)()AeaA`ZHyrU&V1`qj|Kpb-FPie5k!U5@9^Hr7ql;bZaDN zpS@s!rNHEz-RP!)Y;qY*dq#fsm)n{%(@Fju-SS8pDZSEG?(FbOm3vN$=hjS_fuzW% z42X;F3=y1Mh!vs82QN{Z*79Dhn6KX=eK)eq**c@pMy3?v1$!kTQwgiM5Po)0X*1Rd zW3b+pQYw2x+Gb?3>VADjCH0E5#i}F2N*LSJ^3$`SbwI3QQT^%qI~UBr`*(u z)mGANtK5)61lZL)4X($lv$34f?BOK8Y|m!HcODxFx{*c^OQBA-L-pj?Taw(rj;)7C zcbZwt-@~%^UP*lElI-iTqhHTu^aCACS```&1P}DFc(KHBsJZ@+PMJ9;tAZqRAN!Tm zo8nE1rcAYRX8uS6z7F115A$)XwYn$VXAy2$P~e?u;vt0>V3?v?)v-jLUjd&xP4boG zm<@KM$R#*=2x@`gFw7PBK7EYmw8ZX}_>~~lse)pA`%MArN-GntCSrh_s$%tu{O2sC zO|Qv_V#F->tGGn*t2&~XQK67Zp1T!3b{&l0hC4-1HjXpsyxKkpx-`&;hq}8?nK!iv z7t63@w-KHSA_1i?jtFP|Rw18ruVnwjoD#u2;EJR?f_fn1sHA*!(aj+QFF9wjLC^%- zvQ%f}=$-J}%DLERY2jaUD8dqVo*Vq=a{RbyG;VMncu4`)frr;{DCiDPJ_8pm7XEA~ z)Ij*v`K{NNokcutTc1}4=z8roSMx-V z52?#g&^viMInl#`*o2CBbx$70zndU#e@O$GEPI4^iAg*=1M~sUGRM><@@vYR6p>PtN}?y)_3b#= z(ivg{c?-05HXTd*oYp`yQ{TDJ zo9W|c<6GzBUKYS_*j`JA|7iQsumyeF8Oo@28 z`X~?c+_O((C)#zqDrMxjut*U$N##SO0e_4(7XuoUBg!Nqqb1`WXKcMLx&@-v>=FOz zxg#$`n7^S1a`SQN)zld+lD{rda&*K9Z{T6ys5AO@D1HgbP9Og?7ql^c@b4`T_hO?( zBFbceC(1KQVMq5IWwuLU&!Ul*csx1t%G44hs6nScH9#C-Oete6Dp08U>PqM2iWp&J zAQqIoh1(0`5x*3qUR>Q;?kM7=&Rcrl_eztuE|&e_$V{3B=HFIu$dv#p0t(5@4E?#) zMgBBdHSpB%xK1*f^RznKzMb#Ye4<8~LzTz=`*n8U%zPPtVmYSH0}b}5a2O1#61JW$ zF~(Xos)yGlYl%pQ-P_5l*t_+A7l=rifc}yD_bs}J`Og&7e;4V$$QuqIkYsyz*v|If zX?Z~KKsnnlL-8+aieCz|%V<#v->sQC1N&STiFXyMnK;lU2$`gM;$q{}h)nnz2aUNq zH!~x@)9Uo3ZGZL$YE5W`=%kvKs`AxLUG-Pt^S`)b10doM%nEAMfU^T^ewVsOHRCox zh^wcjG_Q|II!)?r4I80r@KF=y?S!_5>uY*%yks@({aZH>KnwwGc2ZA_ods$eGg}|Q znoOM2JPB^yvrsw|+~{>|h`Abo*r9?n@ z5Zb#iK|rH372P8zLUsb$zyAD^dw3r1o&1+9f!gd$9jZwtRjYk4iZ!NkMQ2)alL z9qRrkufvjqm{VYGpUvD}_}~pGJ5as1#{ZaL<6V`e{+4TAHdipykC#~Ed8O0UPE`Ic zYi#fN^^iysXxVmj1=zPcz`mWS_3r)O=4iwNWFs&3QJIyVX z+qpIyKjW4bT*;~_0?5e;#byE(A7Ie|G)>G4!`J`D?NhKu2bNUeJsk~;)9I+y^%r}-=>aw`67LlY6gsAKjY<0lEMDk`NiPcirc$Ws7*B#&{4Ng#>;9-a~l)jx%rps zWy)VXDY%`T;j|W4O(3a>mz{X=&!_*x-g}2NnYHht&Nz-`Mi6WR2q;Aq1f)xo83|R2 zp-LC&C5cjkfWSB^MIlI#8UoTn2c;y^9dV45fDj-+2#f;3Bm{&2N@!<=neVq9zi(gX zkG-#b&biJn|9MIBzVCY1de-yY&wbx(17Ks%luZ|AtHQ3wYhMc;n6 zFTp%8;XPZOdB+%xCJYeLl*uUz=ahO8wNuuP#;a zJ@5T{L2O*5RHTn?_ieA~sgQY)3`TtOgOLiEPo>Gi7}CfxaQ(M+xg&opItME0eWkO2 zSVIR)soIsLSwEXWBRwuOl9~(GTjz;*5PH_c_0XC~><&r;D8$JQ(2qN{l4w#n_hX!1 z;MSt}cK=p250wqf1&B74x}~~gTKMf?ehla^cuevzj!eeLIyMT%;z+>Bit3?xvQV#M^RI|eVr>p?IiDjI|Xj8Lt$2tE`2C!of&LlkwU+Z>*%chyq z+gw^Bh9T>)-DD@Kpbisl=`D@?BS zhV@Ktu_wns)k{a!jB$8Ou5iGB(;Y>K29tteGpp|a-I@wHbRYJ9p=N1vdp(9Qo9Q&n zt}`5H`Cy<}JDY=ghH8#!lXV=1%`P*@blz--6;^WGh-P{G?7Vb}dT85+ku|SaFc}^~ z1{eCqpQZRV-HsxfO2ursZI^mghZ)kbZtdPiW(=f`{PsZKpieqy>S3wkrUw;O%UyS? zuX@2<>7?TH1{Y3xD5%HMQ}tTl3eKWq$_*{dQ;REgQ?xAQjuQ}w3m_YAjOJ~QR!_|s z6|%RcEw^4x;7fu{C_kA~l!n4_0STzq-aDMxK5BT={D_JEKg-M9DX3MW)g(iDK_GUercjn*I2th?1jWv& zTsP?i4v)A7`bXkVYaw1`Q>81?5~}Y{A!1gVN@;2_6WnCo)sY^Rg2y}>5#F`DovJZJ zP5Azk>x#Woz>(}RBdbfWlc!e1x2Iz2Yk=@Hd*Ri?u`5IacBPk1_3E~LJ2#D1jk>Qz zl64FEShLNofoaFBWSs9`Og;1XqxG!A>=X~AG)KkZi#;|!cJMp77lhVVqv~)KVh-#A z5dGBybhmA10^I7i$1F``WJU+YwpZG>?1Seq@VV7~Jb~m?%k}is7`3!BNh2z%EI?=z_ zczdn(D2&^3kNs!6fDOjL-+F3=EDV{Y2HJCSv>Df{VtG;ZoF1 zPqV^SkBcjX!#zt6x`1l-RTEOB(RE`%1j!{tN0I~GCY2D|rX4!#`Wd9VPGLRb3aji= zIhcOv=ZXba4H8C@lfR%Emd5fC0(%7e#ssaD^@FyfMP?frtPn7KH*{scY_tCv1`|yIBz>L za4UGC!z0UAPFX>~uKk9&?Acn*Ssv|+9&VWuU3f~Mw*sDgZi@T^LuP3zuD8j_Qdys6 zENJ|_uhhd;sKiNUH>?WGsMe%AZskg|@%V?epLsNR_+&uSE9Qr;&H1m6_#BQ;MGd?~#V@0%Kl^w2F-QcZo zC(Qz{p;6mLN5jHLs)A-qkeTvC$13k!(B34~#~J$aG+KFYaFyHuZM1WFd)IJC5}<$$ z3-6IQTZB}&w8R+N{|&o+;&Kb)_7$Srdd+I+?EO`1qVq!Ngvoc$gElyWozmu%@b~vp zsMTHl&mLt4v1J-dB7BderU#={br81Ip6Gk`Cg;Ov+lx}iYzX4a7Nqh(RR&lFE*VFm zF-wc=#rRSOftlp^rILWP7@dAKLPQv8a_ihta|Ky_<+9KKPw7<5*2gvNDM$0N$q^;D z&ua(e8ZL79B%vno9j;6=Me46PMTWrSjH)}X5dJGgTnJ{w@t<^2n&Xcr>B8Kq(0zctjp7?DAJy>-S zjga~FWw_uK=93tnT7ZyT)|!)eB~I7b2&*5uytS6MJ$m3ont;NT&tH4;%BlgX09C%K zJFd|_#Z;675Cs=xab89%K$<50tk$S6dw`A3o{x6B{K8nLEC~SGl>py*!l-sWKBP}P zlQU2EQ;i#2;gJzVTl1k_;lwfBCr-aXYn51;Ynr}PSuMm%zE;DBet8X14K>=Y$1K6N zk~=n>HkDTrjd||G7b=2nuRIKeJHRa2?@__G0yjgY(=CAEp3!d8_x=$RYYX&E9y?pG zYbe0=SVP58Xif7Y%%t9MU4NgTL5boDDRt5@t7rS2p^vg7BO^J46t=)Jqn`!7Tf<=~ z@#w4E*ENVS3jgg2zmh!Du3_~JFBjE?u#yP+rKoF!tcJuqUV0ER&y08ykf65-Hn!|m zn1$p-$ovN(D~q6}z6Ml+cG!_mYs0hV1N~9CD?(`_gIeKvr$_+rV;R`}oj63zhvuv_ z1CPs9%Tp4j9h5Y$$-|fU6uE+XW`5amQOJ0({GIgUmO<*2f06I%xqD+GNLAexvJS&dt-9&HK1QL z9W<6aFGW&y`)xqSlyOdp45Oc zlxpM*A`Y`_#>@-*>T_2e1iP@>a0e23Z5G}!@adT7r;jZ|wQy~8yv0XAUvspWt^Tg~ zUZ%)RHN}Txp^6ervY!9wtfq;&E}Le{Nf39o-1eV%=7em^T_}QDh_7#juDfy?Hu}WO zW}BZoamKZhhrXweidSYWY;erAe`9uU-|Fb9w%q*CwD!IaF*4J}?Z%6S7dx#@Z0c2$ z9%rNh3m*fbVc(n<=uGK;?;qx31XMcriVQ`V&XmQW*-!18gl%7JCATfWDsh#mbe1705<5?Zj*N$x zr|Nv>-+rezQmcmknV`+EyV&`ihQuF=Ml;$eg`b$O0*dY!!u*)FZO1KQZ5KZBA~t(qe}*bb>@3J1?|5Cj|{GSrk2Iuh+nHohEf}JI~%h zHK6KH1W3}VQFj^G5klKKmR|A-x(O~?10BH?owKAY+WNS%v;~S8W5;#1%@$TR#FBot z+8h$|7YWPdu2+4Mot$)QcxI^Y*ESi=tzH5QjJLV%f>priEWE;th8)}ybe_NJiQR^; z`$y8|i-UhxRAlW`f6Uu(oP=x?sQrfUOJ^HTWVvovr(Lm(u9)r%=hTO}scz4vR7YKF ze5+543FG3!SNAHK58LA;m@QaBgYNlHGSttO;-%S>8}8hvK_(^1+dmf;_hRg0wjTJM zUTCPKPPCkpETA`F3WAOJk5YVWXP;@~A52$4p7!oedj7Z`eLjRZm^KA@JaJje z^Q7{Zk5keeqM^+Sf>5u7=~Su5hUQ)*exL}G_a_uC{}a8C1(v6vy&8G;i{=ltIioPe zUbw#in1FJ4wZl(ifr|Yq?W&Ftv|>P;_!zR$*Cq+>F%mGnHdg?ffB2_Kgb1T{zWiw(dHpjVp-nMX0rD>KP>VB zC{N1b$C_qe0?$(!tvf;v+67lI~| zplvn|#6n|505elQ5o4oS49jXKH#FTL=|@fN=JkV#av7(SvW$NPEH)4gQM{7*9dR^0#;iz&1@2j_Q==`K~pBcVEG4wcksfwziWhtsOoqTjf+% zRJPa3EQmQ+e5Wxy(o?Ki=V@WGRLOE3T|--&KK;iX+TNrmO#|5n3b;x6;h!%x#b8W? z9Q(vOJ&oM3muD+lkQy|6^u=b~r!P%7^|?iv5VX@o)l|B@1J|LzpVjr^MBf>WBhZZ0 zrqbRmbyX~|K?C-8yia9<{!yNrkyu39E%e4svXm?Dj=B?%p$EgKFHI`QH5Pg`prjtb zCsRGqZ~K8YE53ZnXVckwGv;C4<>xx9IV&N#RMe|SuLiQFTMNP+Bnxf}6f3Kz zuE|>W*TQq#ll^00ZYx%s^#F>nC_b8ShBvc$pR0%CfDd=h5ffnz^GmPH`yRTzb~m_g zRG4uLIB|KD75Xlx!e@e)US~i!bcRo7L3UVo9^jYI*RG$I4DL~D#BcoL_b&oHE3!hci%nt!sZyk;7um|S0}_-MTEU4-zS zVzxL0GP)8#cH%q+9?YNoBa>bY)S|84!4jm@jt1mNocT;KuY=J1&Z z?OX1zlMXp9C!TRT=ANa+DLas}y`rZsqYr?g4k4=eQ-Wu3ac0c|WWPd}~2Ura*w{r|Y}6Xl?F znWL)QwYj3v`IAX@rPssWX~of`ZFEkqP;vXYS$f=W#*5qjxvM4|TNK?dByAc+2WtPd z!Y8Mx+4UVS(u>1^?bXEPs|=*pr(MA@;WB+TxT4f_Xk^mjR^NIXx_`mxr1c1p8KEJB{9rkwq1;+NTK=xmA0yL;Vtowh}R~MfHZ%8B(+2gBP z3(k{JI5jQyUsjI8d;aRe{rzyEe>XP&emIxE`g{L+IAC|elQ;b9;r{!p|2<6qADR-G zM#G_Z!G7pq3&<)vZkk7SdFHe3w(VVBj{@7|^xOB`oE;j=Uz5D{?aD8ryfY~}AngIm z+Ix4s-}6^%?wgY&gd>?h3r@(mOUO1`7#THKL?m8s% zuT^s?1jhTnp9OgF?Teq{h0`J>(+7%YLtX2QK!v7=PEHf`Hw;#r%M$&HO)q zlUM5FnaF0I1cVOEFQ?9)1qqc(i3K)$8su5HA^%aW2gqg^@aU{k1QyD=|9tFN34_OY zimz&=FE~9yTdDwP5R%rT3j&6Lg(N9SL}TtY7?&6QJnz&mp6rYjgwY)5i7rZYU75)D zv#)l37AhFg8nIGdMq#b`{7=3TswFCyIzQg%;TDR?l{^9kO=;kz(aE#TX!~UFIK3Yh z=>*&|0eKY}a`d+Yf3rcpc)_5yf?Y1ejLU~dgcf2UpA*j*5SW_3Pd_}P>&67qH#=WO zYu8P}M=&=udE|^QUfQzDlYIik0v2heUdjhd3k#QB$p+y2Q5uWDPj;AR|Ka({1}fPE zcKPkErWLqqLeY&^sRay)7BxlSk#?!u&(o%Ew4Ps$r`N&)1DY9LmHXxRT!JtnV-2+% zeKZ?CwBiD`0C~G86@W>ekL8>$fvM8Pi~e6sv?mMS0vC?DpdV z#adG8Hjh5|#hlX@;7z*!XXf1h+QN8F0Y+}&V}UvF?027|8h_fcK!vgr zCwK1}Z~l7p|2A=zAuT2ytb2B|CugKG(;K0h+Z+KP0va7(7PdN&4n`(^?>|?5zOjH> zAS`Q2gh*nr(;2I&3*wvAenaY{XGy8_r_Md@38l0dl-c@*Qt;eu?KMAOCA{kpk4O6D z5Z{z2_b4Z-_jr4J!fT~@cze{j^A#TZBcXH?jKHtAzKRS74nwgIMn^6n#vD5CH&MNV z>y&ddy0XYC>1BDE?kHG}y17rJp$qv!yJlO}!t+s`$@8?VB|}_Y)a#rJ>AiZ5wi;Ct zvFDitb5c6?T-e+_P3r(l>5->?7Bb`tc6C{^)4m3?R&CcO9{$L6GH8GIpiOnj<*=+& zB6$XtH?B+-ZGSn+QkBC@Mcp7MpnQN0vin!-9k`i@{!$NBc}Uz!oauROQfG_EvMA9` zHx{+l4(|!HbHZs1!lFdU7h(nibH>#z1VRa^pNQ(_RWy~3{MUiTccj=-gV*9SFhgdC=|0Y>i#ow^W$nOv^x;^)vC!M zwQ#l1-0_ZeuW{nzmndbTDk5o5j?rM8H?M`rwYxD^0-KjUK~d-L(nj!}8bm4ET|AIZ}j1-HGllh>g|* zW)WOEXD;|^FI-^eLzp&hs5DbW29=eR+PzQbZ$8|Yzk9mC5Ei^Oq8y{9=mc32!FW%l zFi)IH-Lh@FPoUeX&#jN^x~9c&u^DGeHN#<-@0sJ{YYP~kV>R&(n2Q@u{E~V~qF!p?bP7N- zt`)PJIA4%=8cu@%ET{uGwg-QpIQu*bhuZ z-3OIcI2ii9=>eV_UETF;6&A{j5bdqw=0!2D5JNeeerPa*v5GV=mUZA6X5(*zBuuXd zMyedW%sdOr*>a}M)Lou?v|6otWYDNcj2ZnhYg@g6P zvsd{dZHNU{WWWrc$Kv}Uod2(d$Nx@l{?01@XBk*d{D9hTAOqE`{8z;2KMr<6aTk#s zu;6xG;2FMu@s7R+bNm0Bsoj6iqaD`pnO*<0Odbf&3|*`z{WIr%Hzo!&*p5T0$-nKk z-ekF`SZ{U|Oe#B79o6VkKB^cbo_wS;+>xf7_*7Dw8;~_p2-=Gpr5J&bjJd6s49R+-+JK?IMl&4zF zV^hwP&VdJIW?5Boduegkujp0?#E9zuGxIzk0NuZd92y)WvlAl@T5HO_pE6D;O<@cZ zdWzzU=95gx%dZi^qnwN1Qyc9W1oH+vl?KDN>UNNZ#4tmdhr{N@{dL_{5Xek?Vbrth z0%}g}wh5)p^wpuZ(U!LwP8!}+xP9c@kLJ3g^!vyr=Nt)t-*P88!C&|AAm%SO3E&M| z>LZ*MYqB@}M{}QMe;q|zII1?@5uAo_TCg<9buz^N_xLs!3EAHDr_-g*=+j5zM|rb_?iQ|$?v=JwXbt<#BIoJ&pigRbgf z-2}}Vm(;0rTe~ZLt`@rNXw*#Ey}`t*W6}kN-kB$eRXqaGhhxDSYZ9_)7l$f#2Q!^( zd+a82TIq18NEVgCO=a-AoyeqC9}t8#+z~Yh(a8z}vWxn-vL7>#Lc>y{u<23ErEBMs zON?=5@RT~j54{zs+5Xq?y(MJZlHOa*&Bn}I8)(zZ_a7@>MK%y`K?c_<1)!UE8n2ps z;@q;zqg}e;sgdN94N7!%Jb=_z%tgQ z*UdO1tIWr08>mAX(SwWkFdCYVJnGGqEm`1%%V4If;6LLcul7^YC07mt??H^vL9acw z-3ev+jA6M{i&0>6%lJ$nVke;#Rs8G18dbrH;p`Bc^zZ%_$E2uLmaqPJ8^SbcT}F;5 zQ3Z{s92`rsfzU-1(dbTq%bL@^E8+TzpX7CER{XI9uqWR!Pv4)r{0Z^P|bn|q~83&J>oOQ$ZTOGF9@sEK|)xuzUF84yu> zE$6{^oo~TXUzS4ejffty8%V(Xd09BwrCVCct!x=_C2s>(ED3ADeu9%kkZAmYVH2uX z@75U4s{O3BBx-J7#m#W|FEQd(EftweWQVG@3*x)1zBwe4aG!3kjIxauMK&0`EV}4K z>b!V0P=A(CvD)0~qLk)X%g?T694yi9M<6h!#oodsJYy9n8FndxBu~y%t?eaeKXWy^ zDv%~UX5|eTv|?*s&Yiw7;G^aECPP4y9AIwrYUH`{w+Ywx^k2R0>tykM8U360y<{tz zyoxs~!>y#BVZt?u{RiQx*3KrI{->vxL=|1&tMDh_g$iXpS3wM?UdMke8H?Av4 ziG~)l%TPqclG!`ojd+;5tre{YxnL&l#%H7Orj9aY$xd+Df)GbDBRHuZ$ZQlJ)zi%K zRpkok!~ZtwykkbfR)_2A@4D%!3ZxxCR~m)xz5aVg^%O$N2;$J$@HoC}a=6;5O-GGoNr$;4}YBN6Mg+R=%yhcly zDtnMc5*`x+HA_*BHV$e6EGc%M9)Vr~Rq^vrf1kI*gS$Go1~vnlSwOe#nF#c=5jY1L zCLVp>HxP!wi^M83F%zGC(p+F>h$xX2VxIuobA(tGPNufJG;I3TjW(jFXhJ95;7Wyp>M0Shs*@j<^nPPWYOfJ7DHD|BsJyvB2{9vrpJjx zA3D{dR@186dbGb?tq;GxJZhfBE~he?WGBXe(`TEfaQ-UG8QWS?k#Vu=EMYIZ(}vjTest3m9i`MB_N*=>(zi*I>hecNSILUN8Z{df zU!AbPsU^1Q53BZ<&W%!R?%e|Cx1wR@VxMW~K%pN5Eg>XbF|j(T$s5?LLlEoH)4aGe zurjxwE|pa}I``S!W{VkXsA8v`>*IX*C1eS@RV_bk2~Ykc=ZgRBYT0=su2k^^+)VsN zltIBOT_xXpqzIE2g zTRgtPw@*SAkdnWwae2`2Gk3&_Hbui8?lpcq{O3c^wXZG%-pl`XNZFJ@z?%gmcwa>} zMy5x12c}hh19I4!Fp|Hxb}Phh@5KC@5LPJJWs_6;!%2o-VvOUSLO3lD1}iSJA?>8B z;Q`V*uch_uyxK3G`U(OseLT*W^Xef*K(|Yx3%UBqd9BS47G66ob`)9%Q&FZF{-GK< zMF^ksXl}*_Lkw)%U6dMDnKsZ7g-r{Z4PKj-0o_uvh=$u_d-wZ6<^d@BK54JXv6M z2pazCOhLNTb%6$dBw-t^{PC&7?~S3QVC?>k|5xJ+VEC~GkijasC~K^9EH8N`e=3}R z5r|#D>?LsNukQackP?J_EJ|(~*Wi~Si|bG{jyrYq@VU2>&r^@mhOL!`BB*AohS+*T zYCX%=dUQ-Vjg4cNANbH`h8PSB`!jHMgr-nGR6A2%Nbx0@w>mzfQY|97$Xe1~>i&LN zLrs34h{5#X4j6IGhRbMJ?Zt+}U(R}sh#*`NoKZGYL>mFO1IT%S= z&a^MbO$26UEB+8Pc6wpNt04(z-WwN9RK+)-0!kK_f3{ktn&`fs&F|v-6#WTlB`_2i zxvqRx=Tv}REY@>$*|}b-+a@gOgm4DcUkWx0p=$a(_-ikVvG7G0 zvf02!t4cX5-Fkb`r%-om+@|~>c~L#xC3%gV8v{4#LQ$hB$X1R-{$#Z!Ys`3+q-}Y7 zgG;)N%6RTwImfj*`OhfB3*uZ(8kLzju69=>DtKeyWL5-aylqUw2h$mLR2~^dR7KA) zn+=T<&Dtq>A^6y)Vq&Q4P*#P7_Ki)uAsb@rAFg%R{X2t@!@ijzpOFvGJnZ`Dr9aSL zVWAafLacWb4g1*$ml3k$2=^$=^&1vu;AaOrN+zo#LP3fTE5Z7QMo1rV-m87K85&^T zB_fR-b(E|k`;Mq=zVnRrJ1uIV@!lI>r&rRZ;+YuVHJSk`4Q8q-pLvO^O7r}L>1y#i zcK4OqQ+}5D_^Jk+=+hiVCIDH&U?CU>d6GE$o<17pgj1vbw^9w`V7FMD^$*>bwboOQS{t?&bxh>YjF;2~m8tl(8MbT(B2N>R8Z)=C zX`JPN98n{&7tg3*eiSI4B7h{XD0nh3%)GDj#jm66Qa)EI7pCi@C#7q3HeX%1yG!V0 z(5KP#;9jTAxrb*EN^-=Pu$iQNLHF2-s`6=F!M*Zw_g)h_l($Yu*DbM9Cg+2x9SRwt zbB9}4_wLmyezO^Vu{oW?RH|Y7?CYAKtdxO({Uy#5y8<$yLU2eUpIPge1~H&B>~Rq% z98|HY$8;qPC4bsTk&KR$C#Yz!E45zsF5mOgju8I6cBm)%(V`XBG!&nzC4Z`5pf?EF z;afzh57w4T@y2V{w5jx@E47;k2w6$}{F~QVfi$;VT1@+9%W4)yeGMCOR4LL7*L|Ak zMHM%BpOAdTFn%XnlMn4qieKvMxDr2oLR7TbpSm16A4et3DQJ8e`Ecvjx^A5%Zya)D z3g+Il-IsZJ&V8L4m8m1?Z?U;K<(?Id=dhkVp>f7K6bM%#CcmaxK;$>W^_;(YU;yUB z>!^W=+AiAq*1CGfpy1f}_jZ%2^QCg3ltef`IC1ulP$Gg9xjgWqC^=C$Ypd$rypzeC zO3-V>sfXHIwo6X-gd)?@?C}v-fA%l=A%7iVf zO14X4S`dLS%e+POIcl9AYgHt4g3Ks%r%qg))*44PAKtGD)@q_Qk^KD|1i5Hy=yiQn z$YsoW_;1YlN$wyl^FbIZXYyR*Oqp&Fg47*=d3t+$#80gqw&5kMj$Yb;d3DBnMigI+ zva^nm8-30v){OcEbtsD6_k&uJ`KN5G3x zp^lqPWX?xhT%NceBj%U&v4&34J&slnZaWLQcFkfOs_v)p+HUz{P`_sB?oo}s&(-<@ z21i#Hum17x6A6qfgP-)rVil6#{(JiSVn%%FNB0?ubKl%Ns&O9Jds3IG`A8?RDtEmKiQj-mhZ0vOU*nxvC=7iK(fy(~)Wgx%cQotDA2IZf-_0ERF~&y^Po z%fAf!ZOUNT`MI0##cak+qjN9rHJMRe-sNR)=Nh$J%2xI=%{y~gFUmNWyX!+GYMy5$ zqkcI$e2xEcF9NehgyUh}>9$cap}tv+;2iJd?m3VP23?EIV)qD0>~ADqHNG9*-7AksJn7y;5eWjH1PD86(;?8Yxdm9w3#V-f7R@loS z8~vjeLdl^BE>xQV6PPE9Ca)T zPT4pv0GOa(K<=^EfpfI?K{7Zl)+FT|sjG_70k3CzpayI(_c@nwE<7*JJqXLWpVd|KT^?ai z4=P@Zm&}~`=F6VD4MbWrKcqhC-eBNt*r)i?d_NiND=#C+O7>C2)|=&){@oo#!Aq*BMVi~jW}9qRu=$*rPikn_4dUys}L4`OzmC4S6Gr&{WT?? zOe!60&XJ4Mp&>IdINJCsUOSiYu+7hQ!0D89k@wi!REx8cDuFVvrx^m!j-o{W4zu}! zIYR2@{;@IC$t>irp+5|@q@3Ec=m<m^wmD z>?QJHv+&u6x?5w0*_HabURy{^m0@kN(Cp2iY65d8G3rDOMQp+6){mmXq>NLRFM}Os z%a2|GIa$w}+!ka%D`XPp5Xp5m-``ibzxh=%K1;q}2}MvW@GiFLZ7hMQk99Vvz&Kq< za`YUJ*DX=!!Y({kCjehOzYfzw6b3wxL3r{H1k0oRfaNC(y-_o+wh;0e= z0)a@BBJeqSf#a-PwUdl0ixyggUmw^XhWdbiT|{GJir`gapIflOb5Vu>(&i^pjS*8p zv(GN>Zt$EOC`eT=hlw~XkHdO%wW}OM&&eE%FCFLn;iQmZKwY8lNsR5()S0M;6?QgO zub}%vma>c|k>-+9qc>MCSfcumU@>IYor~66J_CB~^!o1Se5vFB#XLD9tM=^etff)g zFqpRfw=-ghqbbq_^qj~sZ?!bbg2^SgNRMB)#8+Kx0N|MToMrf0Xx+ne)Yva(Op}#< z0H94P85V;S=*+ljsVb`ZF6?kCs#ME+LVY%&l;PRVDUVt*u#gQ_MU0f~A*Yre&I}P2 zaWbz_5k@}NjddZLX^kLN6OzCgWqdO^eBL#UGfBf&M24(JPX!XS3q5qatKD9qWf|vUb;~;Zq?(jjttAU0-&E zj!*zIe?=ya%6Y~<6>>}8$dXU2G4>k!AFdG#=?c4yJ_PsIgr)QzmjwsWTn zR_kfIOfG4lyI#v{m$Y4Mvhd8I`iUf!n4XE?KTC;ku1ZMACWw+ay$QOvtIr7^JoAle zWGQaW(TzH>8Q!f&w0Tt@P0pJIV@dantG_(qbE|*r2+zLyi(c-P$MLn;4i{_*BiJ>l zn3(y8gsj8sE^;zA-lbXwYE1InMP z>WJ?MBpk)B4Ts#j=jQ!=Bhj;^HJ=@CNy$69>l?uXNuHu6FDsQrJ5ZymMym1`6b(Dt z7^Bo|f5Y9q^dWabyw%!4ZEg|8Y&dW3O?{N~ky(@c@JpnEOCepco~!~g z*0tU|=J?=6uVYY#d|hfQztk0rD4%`b;SE^5(XTs#ZwDwh`A;BKf%#kdrn3V&2r1hB zt8|_~T4c-NjbP*wrzIFMp$41ZI>KYKeK`V&@uph055{;}JkWY%@!*^wADQp=rKMKs z!=W3(NuxfmmS=%eJ;3g33X2KmUPJD7*FIw@A?^6oDC38p;BwZZTXm_1n~QJuSGD(4 zg$pay!Db%3mG>UfeNehQTyU+aigIfi)OR)U!j>7I``KO$5t^&orkp!6PewmY$`$QF z{%Cm6OVnrx5xJ-&gv7T}rO8v*j$^FjMyDIe`t-VM-!lzi>@u4#XRW6e7AaT3g$HjYHOZYcv>Q&y7b$n|QrifOjWN)$eIe}q84;`M; zioxH6jLYx`!LvG5LeiP%E9$aW&Yf=PzxsVy&h7_i`VkgJA&F?M68;00;*aOl;?j)f z)is^kbEZZRGNQ;xGbWCPHtUYC=$nsAYxY`VJ~~?{kwc19&i(5f&a>2ue&F{%0jZS4%7J8&8$yS{Cs`vrsW2Qor14mZ*h|8FFANHL& z7`1K5>eE9#6&s+wx^U*kg|D(mBMZpEW?YKqb;(}{jYCUDqA#@iKd3BdnsHE)l?nL_ z^m;a@%W;z1Pd;I3C+G5BuO>|li&|HN4S*Lb1% zX9T>&PhVV<^NS*b!(*MMZ2S+B=M@)arq*`{BP$SMA(|8or=;oio?ENV=uk!Hw-LMR z<}2RuKsOf?=~#N#TASu1-akcF zy(+zlq}iZ@TPIxJ>$m|}a^0*d-ehH2Xh!kF@BUwHF2gbfOz#01@fEW=J0;S@=O{6| zr?({he0-V5*XfteTt}uj@2*)Ujnb{UWb>SMbN-BeW%hIe5SzlTiM77fzzqFfnfL>h z0c_0R%cMm|S@!!wP}vi8d3 zrY0hnN=_AgyBg`7Veqna0?ViFc(mdeROMvBwUw_XOtAnoi~Q}S-vv?e!qN*BQNhv zxW~~_g86dD)9o}>+(O!ze$g}KLAsr?(VqIc8%nq!oG8>P21 z2wny%_$>4i=k<((~6pw?0M-jnJ^2k3Kgbr&XZvh(Q< zyg8m;X2Zhio_(2NSqEw)cxE;}pnINl{Pix)uZGgd60-LG2}0q**^~`x)1bys@AF@= z`DMA521$n{QlZ9#y{kyPYwfmOf$BQlQ{ROZqDgz1;gFP-qQZzTO0`EXSj*DkwQ#jV zmr#iU&}37`k(F3n`XHwZM#>`a*ClH04!(UZyL<52$O;(;3HpLAc6{wp#<0%^ry^s-50h%axFY$fmTX z)mk{Vj^=3-Z4IR^@DE)$htcF zyO2V<$E3{{#^z_lDor8x-b-CGyjsM6AkV>$1JnFQNWwoNAlIJIxc;Y#GP^sfF4W`t z;XoJRc_Akic0EQ%pn=SXtH`<8D(xwT34d)T8&NIua3Q-SE-HDj|3|9IA*d_n9@tr_ zO>-ko{2l7glzrhscj8UE7{;k~djEdZTDT`Wh!&YwrwJ>p=xuCl1hT+T1=PL(}K?Nh@ zWD36Rq}S~gC=Q;11O*O2Z!nZDWJ`3dzXe?}jz5-0wCRanjm6cusK{#+m=t1+K(hTbAvbTAVn`_Ok;{qGYFoWS?8o?At!hZNk_61k&)F!VL7P^`c4Erc=i< z9ze zeH1la&qk4};h062$WEi0ta|dd0>w_>vaC(U5fq(M>Z5YM-v4UhvJOMZPVutTgXCPD zdT-B&i0?@~H_DWRe)BTyGCprZ-fQ2dGZ>K}^*n&9;Vs@m6Ds$3tdIfL9UtjvBqp<> z<9%G3({C&E1Bv5NH;QVR1(B%1dp2FR291NA)`Ub|?_0rKcQF()~P6%LO5csJpK<{jrA7FUL;gmBkBk#O>M?1=7whxX&~K z4(NPGSM#Ws|Dd%#>$w)#4&dFT*%8fN!cIxgj&ut^BQ!WqgFc-r*UYp1^~bL^`2w(? z?0UsB6a8Z9{WtsW|Au|Xn=1dCp*E-lv-g^(xqPEKWqgyq z1Q1uBbp7Wf0S)D|%JFA@z4g^q4nd3FfSUuVrhjTcQscFPJv_Oo?ej5|x|S{w8yR)Uwv$xkW3=Wwwl~X^3<#cfGCOOYSw>UVWR>ztp*$?xNtO`csy_ z*E#rU~{4cfgH1m;W&Gr_54Ht_!sqPQW z8IZ?anq;voQG#P_9;GH?X0qS-*<$7I7PS^yQ7@mLFb`&zEa8Tp2Q;zoVCNr}dibp4 zZu&UNP%IchYc)QEy*SL^S-FfF{xEs*Hi`f6n(QDmCI=F5&w%VGW_IIE|moyFK-JLZ7o6}K~ z&gi$obD2c+8d|S#3)OhV<;q0EbaT4B;Y_+ce_Gy&IMzzY#Qk0u6;o7a&vu;`mBR3NlYDM~Tp@b&xT`*#{IiWN^kI#J64 z7R#DmW_YT~Y*Xi@-88WaxyXD39>2c2X|r{P*X8pF3UKYyNpBdqdW@8=M>Vt-NNf9) zfsOjm{8P7#8)PUJSK);YeiGy3S?wln#v(v^Ps5%%U6KcS*sqsOY*2jZ#Iz7}OLaZ5 zbPJ{FCEZgQ&phol(R9&ec;=bK!0#q)6z8&H$s1C>r-RNOg5nd0=eX{bXO^U`fUsgF z&Bx%eOww(E8L1%;cy7kijTwlI?5hauozX!ZnA~N^=(v&(XvQ>D8+u6(Jy(-^cg#T9 zUs2HXKP{$X0yFnIt3()Yau{wTvb=YGe3OT882VD2WUvXL%H;!wNfNbg*Ey;^tFYW7 zX+Hqf8V@jQ7FF{pHS{B>PyB?hlT6sDnvVKB_Fi9cm^`+-2 zNpv0dY>P)9x{P=yf{@dPkoGkfRhLIz5S}{^!cY9yG7D7+*@V{OzyZC+04~j4tK26e z-qZ>kb^fzO4ADkGimdn}nlY8oxwW#)!7i3!9c2lpub-~@k#G=G8JAYV@iu^>$CsAG z?7)#6vwD>}WgLiB@l|C#Jd6LfAOo>dIXTBB#nFi!$m-ozyPQTzn-(e z#Q2C1&s*QJ?c^ z+3xQx6Rv^^IWTzr=z>eg?z`KBPI)d(WfcZ)cs~s4#Dc-KqYHtf1RCm7=7gLQ@_A@f zd0NmZ4AcMtgEhd5PZTGDZyW*fUpGa6h7^im*$8o)HFH2$BQt@y4W)%El)NVPT*{tT zaBB9ud%{j((r|;ioy7z7PIIXN&1*-9q8Y!aKyWMYkT8W785>YF0|F7^knl|7TD~UZ z<{BdoMRw4UR$y?=HBqTcAgB)!j<7NtEFD3;<1(5J|JU2vC_C=DwK*JQwx_F~%Q~lo FCIE0#9x?y` diff --git a/docs/images/13_key_name.png b/docs/images/13_key_name.png deleted file mode 100755 index f139a83995f0a7f56da2a0f4d0ee6cdf8c12cc6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37464 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 diff --git a/docs/images/14_here_is_your_key.png b/docs/images/14_here_is_your_key.png deleted file mode 100755 index 721fe21a3eccfe83ff7f6ed49e3ff4967653a74c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34652 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�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 diff --git a/docs/images/15_find_your_key.png b/docs/images/15_find_your_key.png deleted file mode 100755 index 6053ecbc3a873f80d5bebd5f054d22cf1effe448..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37938 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 Rw5se*pgv6XO5? diff --git a/docs/images/fb-example.png b/docs/images/fb-example.png deleted file mode 100755 index 7f794b809e13c6a970267f59e4ed3570d235eda6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23182 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 QU`OMr!nBl-3RYqN1HD?982|tP diff --git a/docs/images/geofence_central_park_640x640.png b/docs/images/geofence_central_park_640x640.png deleted file mode 100755 index 03eb68745be82a728c879c233ad6b454500c2aa9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94235 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 diff --git a/docs/images/PokeAlarm.png b/docs/images/logo.png old mode 100755 new mode 100644 similarity index 100% rename from docs/images/PokeAlarm.png rename to docs/images/logo.png diff --git a/docs/images/minimap.png b/docs/images/minimap.png deleted file mode 100755 index 4a026d40d60486a4924d8124107bff676a1ec081..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4694 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 Y0~JOL;ZI|lGXMYp07*qoM6N<$f+9?#(f|Me diff --git a/docs/images/slack_demo.png b/docs/images/slack_demo.png deleted file mode 100755 index dac4059142c6193f8aa43052485e9c7a2c28a542..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68076 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