Skip to content

Commit

Permalink
Allow encounter white/blacklist to be specified by name in a file (#1768
Browse files Browse the repository at this point in the history
)

* Allow encounter white/blacklist to be specified by name in a file

* black != white
  • Loading branch information
trew authored and sebastienvercammen committed Jan 28, 2017
1 parent f24516a commit 0d57009
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 3 deletions.
10 changes: 9 additions & 1 deletion docs/extras/commandline.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
[-st STEP_LIMIT] [-sd SCAN_DELAY]
[--spawn-delay SPAWN_DELAY] [-enc] [-cs] [-ck CAPTCHA_KEY]
[-cds CAPTCHA_DSK] [-ed ENCOUNTER_DELAY]
[-ewht ENCOUNTER_WHITELIST | -eblk ENCOUNTER_BLACKLIST]
[-ewht ENCOUNTER_WHITELIST | -eblk ENCOUNTER_BLACKLIST | -ewhtf ENCOUNTER_WHITELIST_FILE | -eblkf ENCOUNTER_BLACKLIST_FILE]
[-ld LOGIN_DELAY] [-lr LOGIN_RETRIES] [-mf MAX_FAILURES]
[-me MAX_EMPTY] [-bsr BAD_SCAN_RETRY]
[-msl MIN_SECONDS_LEFT] [-dc] [-H HOST] [-P PORT]
Expand Down Expand Up @@ -114,6 +114,14 @@
-eblk ENCOUNTER_BLACKLIST, --encounter-blacklist ENCOUNTER_BLACKLIST
List of Pokemon to NOT encounter for more stats. [env
var: POGOMAP_ENCOUNTER_BLACKLIST]
-ewhtf ENCOUNTER_WHITELIST_FILE, --encounter-whitelist-file ENCOUNTER_WHITELIST_FILE
File containing a list of Pokemon to NOT encounter for
more stats. [env var:
POGOMAP_ENCOUNTER_WHITELIST_FILE]
-eblkf ENCOUNTER_BLACKLIST_FILE, --encounter-blacklist-file ENCOUNTER_BLACKLIST_FILE
File containing a list of Pokemon to NOT encounter for
more stats. [env var:
POGOMAP_ENCOUNTER_BLACKLIST_FILE]
-ld LOGIN_DELAY, --login-delay LOGIN_DELAY
Time delay between each login attempt. [env var:
POGOMAP_LOGIN_DELAY]
Expand Down
36 changes: 34 additions & 2 deletions pogom/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,14 @@ def get_args():
action='append', default=[],
help=('List of Pokemon to NOT encounter for ' +
'more stats.'))
encounter_list.add_argument('-ewhtf', '--encounter-whitelist-file',
default='', help='File containing a list of '
'Pokemon to NOT encounter for'
' more stats.')
encounter_list.add_argument('-eblkf', '--encounter-blacklist-file',
default='', help='File containing a list of '
'Pokemon to NOT encounter for'
' more stats.')
parser.add_argument('-ld', '--login-delay',
help='Time delay between each login attempt.',
type=float, default=6)
Expand Down Expand Up @@ -579,8 +587,19 @@ def get_args():
"--accountcsv to add accounts.")
sys.exit(1)

args.encounter_blacklist = [int(i) for i in args.encounter_blacklist]
args.encounter_whitelist = [int(i) for i in args.encounter_whitelist]
if args.encounter_whitelist_file:
with open(args.encounter_whitelist_file) as f:
args.encounter_whitelist = [get_pokemon_id(name) for name in
f.read().splitlines()]
elif args.encounter_blacklist_file:
with open(args.encounter_blacklist_file) as f:
args.encounter_blacklist = [get_pokemon_id(name) for name in
f.read().splitlines()]
else:
args.encounter_blacklist = [int(i) for i in
args.encounter_blacklist]
args.encounter_whitelist = [int(i) for i in
args.encounter_whitelist]

# Decide which scanning mode to use.
if args.spawnpoint_scanning:
Expand Down Expand Up @@ -683,6 +702,19 @@ def get_pokemon_data(pokemon_id):
return get_pokemon_data.pokemon[str(pokemon_id)]


def get_pokemon_id(pokemon_name):
if not hasattr(get_pokemon_id, 'ids'):
if not hasattr(get_pokemon_data, 'pokemon'):
# initialize from file
get_pokemon_data(1)

get_pokemon_id.ids = {}
for pokemon_id, data in get_pokemon_data.pokemon.iteritems():
get_pokemon_id.ids[data['name']] = int(pokemon_id)

return get_pokemon_id.ids.get(pokemon_name, -1)


def get_pokemon_name(pokemon_id):
return i8ln(get_pokemon_data(pokemon_id)['name'])

Expand Down
18 changes: 18 additions & 0 deletions tests/test_utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import unittest
from pogom import utils


class UtilsTest(unittest.TestCase):
def test_get_pokemon_id(self):
self.assertEqual(1, utils.get_pokemon_id("Bulbasaur"))
self.assertEqual(149, utils.get_pokemon_id("Dragonite"))

# Unknown name returns -1
self.assertEqual(-1, utils.get_pokemon_id("Unknown"))

def test_get_pokemon_name(self):
self.assertEqual("Bulbasaur", utils.get_pokemon_name(1))
self.assertEqual("Dragonite", utils.get_pokemon_name(149))

# Unknown ID raises KeyError
self.assertRaises(KeyError, utils.get_pokemon_name, 12367)

0 comments on commit 0d57009

Please sign in to comment.