{"action":"created","issue":{"url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map/issues/1367","repository_url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map","labels_url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map/issues/1367/labels{/name}","comments_url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map/issues/1367/comments","events_url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map/issues/1367/events","html_url":"https://github.com/PokemonGoMap/PokemonGo-Map/pull/1367","id":178785027,"number":1367,"title":"Beehive Multiple Account Support","user":{"login":"Janglinator","id":8138981,"avatar_url":"https://avatars.githubusercontent.com/u/8138981?v=3","gravatar_id":"","url":"https://api.github.com/users/Janglinator","html_url":"https://github.com/Janglinator","followers_url":"https://api.github.com/users/Janglinator/followers","following_url":"https://api.github.com/users/Janglinator/following{/other_user}","gists_url":"https://api.github.com/users/Janglinator/gists{/gist_id}","starred_url":"https://api.github.com/users/Janglinator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Janglinator/subscriptions","organizations_url":"https://api.github.com/users/Janglinator/orgs","repos_url":"https://api.github.com/users/Janglinator/repos","events_url":"https://api.github.com/users/Janglinator/events{/privacy}","received_events_url":"https://api.github.com/users/Janglinator/received_events","type":"User","site_admin":false},"labels":[{"id":424753678,"url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map/labels/awaiting%20review","name":"awaiting review","color":"006b75","default":false},{"id":420723287,"url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map/labels/backend","name":"backend","color":"fbca04","default":false},{"id":419692465,"url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map/labels/enhancement","name":"enhancement","color":"84b6eb","default":true}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":87,"created_at":"2016-09-23T04:57:59Z","updated_at":"2016-11-17T22:27:01Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map/pulls/1367","html_url":"https://github.com/PokemonGoMap/PokemonGo-Map/pull/1367","diff_url":"https://github.com/PokemonGoMap/PokemonGo-Map/pull/1367.diff","patch_url":"https://github.com/PokemonGoMap/PokemonGo-Map/pull/1367.patch"},"body":"<!--- Provide a general summary of your changes in the Title above -->\r\n\r\nThis fork adds an option for a new pattern in multiple account searching.\r\n## Description\r\n\r\n<!--- Describe your changes in detail -->\r\n\r\nThese changes allow users to specify that they wish to use a beehive pattern, rather than a single hexagon path with multiple accounts playing leap-frog and getting banned.  Coupled with PR #1301, multiple accounts should be able to run indefinitely without a ban.\r\n\r\nThe example below is using 19 individual accounts, each with a step of 5.  `-bh -st 5 -w 19`\r\nEach hexagon uses a _single_ worker, eliminating all jumps from every worker.\r\n\r\nHow it works:  I use multiple schedulers, on per worker, to perform searches.  Any scheduler modes (`-ss`, `--spawnpoints-only`) still work the same, but each scheduler is given its own point of origin, calculated in a circular pattern around the origin ('-l').  Rather than putting all workers on ONE path, it calculates an individual path for EACH individual worker, using the same algorithm as before.  Check out the images below.\r\n\r\nWhat it DOES do:\r\n- Allows for multiple workers to be used, while specifying the exact step-size of each individual worker, to maximize total search area.\r\n- Calculates multiple separate paths, one per worker, and allows workers to scan their paths individually.\r\n- Guarantees no workers will ever jump more than the diameter of a single search query (unless account is placed on hold).\r\n- When one worker fails, another worker replaces it (assuming there are extra available).\r\n- Causes the `-st` property to be interpreted as the step limit for _individual_ workers, rather than the step size for _all_ workers.  Some consider this a negative; I consider it a positive because I now know _exactly_ the area each individual worker is responsible for covering, allowing me to maximize the total search area.\r\n- Significantly decreases the unnecessary ram and cpu overhead of running multiple terminal threads to ensure accounts don't play hopscotch. 🎉 \r\n- Eliminates the need to calculate individual paths for multiple accounts; that's basically all this PR does  😆\r\n\r\nWhat it does NOT do:\r\n- Change the closed circuit search path, or any path calculations implemented. (See screenshots below)\r\n- Implement [schristmann's suggestion](https://github.com/PokemonGoMap/PokemonGo-Map/issues/809#issuecomment-241069686) of using multiple workers around a single scanner path.\r\n- Conflict with [schristmann's suggestion](https://github.com/PokemonGoMap/PokemonGo-Map/issues/809#issuecomment-241069686).  We could simply implement a way to specify workers per behive path when it IS implemented, utilizing both techniques at once.\r\n- Cause ANY properties to be ignored.  The `-st` property is re-interpreted as being the steps for each individual worker, rather than step size for ALL workers.\r\n\r\nPlease feel free to leave _constructive_ comments about changes!  I've never worked in Python before, and I'm not particularly proud of this changeset...  I DO however want to see this happen, which is why I'm doing this, so go easy 😄\r\n## Motivation and Context\r\n\r\n<!--- Why is this change required? What problem does it solve? -->\r\n\r\n<!--- If it fixes an open issue, please link to the issue here. -->\r\n\r\nThese changes are a complement to issue #809; while not satisfying multiple workers on a single path (which some users are apparently adamant on possessing, but too lazy to produce), it satisfies using multiple workers without any jumping.\r\n\r\nWhen using this library to cover large areas with multiple accounts, the goal is maximization; using available workers to work at their maximum efficiency, contributing to the maximum amount of coverage.  While this isn't the goal of every user, there is a lot of interest in it.  Just because this PR doesn't cover the goal you have in mind when I say \"multiple account support\" doesn't mean it's not a valid and viable technique to add to the project; you simply want to use your workers to achieve a different goal.\r\n\r\nThe goal of this PR is to cover as much area with multiple workers as possible without any of them jumping more than a single search diameter.\r\n## How Has This Been Tested?\r\n\r\n<!--- Please describe in detail how you tested your changes. -->\r\n\r\n<!--- Include details of your testing environment, and the tests you ran to -->\r\n\r\n<!--- see how your change affects other areas of the code, etc. -->\r\n\r\nI ran a few tests to ensure stability and accuracy.  It's been running for about 10 hours straight with no stability issues; however accounts are sometimes still soft-banned from the accounts moving too fast (see PR #1301).\r\n## Screenshots:\r\n\r\n![0b8e90c8-80ef-11e6-8c9e-7e590069fdfe](https://cloud.githubusercontent.com/assets/8138981/18774552/07cee542-8120-11e6-8db7-905f124e263b.png)\r\n![0b8e90c8-80ef-11e6-8c9e-7e590069fdfe](https://cloud.githubusercontent.com/assets/8138981/18805456/3367908c-81d4-11e6-8e72-81f2c25d0910.png)\r\n![0b7f48b6-80ef-11e6-9af4-ad4d66edafd6](https://cloud.githubusercontent.com/assets/8138981/18774555/0cbabd38-8120-11e6-8996-44b6ee0c1d1a.png)\r\n## Types of changes\r\n\r\n<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->\r\n- [ ] Bug fix (non-breaking change which fixes an issue)\r\n- [x] New feature (non-breaking change which adds functionality)\r\n- [ ] Breaking change (fix or feature that would cause existing functionality to change)\r\n## Checklist:\r\n\r\n<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->\r\n\r\n<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->\r\n\r\n<!--  NOTE: In order to check code style locally and avoid having your build rejected by Travis, -->\r\n\r\n<!--  run the following commands before you commit: `flake8 .` and `npm run lint`. Fix any -->\r\n\r\n<!--  issues they point out. Note also that flake's NOQA is disabled on Travis. -->\r\n- [x] My code follows the code style of this project.\r\n- [x] My change requires a change to the documentation.\r\n- [ ] I have updated the documentation accordingly.\r\n"},"comment":{"url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map/issues/comments/261389805","html_url":"https://github.com/PokemonGoMap/PokemonGo-Map/pull/1367#issuecomment-261389805","issue_url":"https://api.github.com/repos/PokemonGoMap/PokemonGo-Map/issues/1367","id":261389805,"user":{"login":"Janglinator","id":8138981,"avatar_url":"https://avatars.githubusercontent.com/u/8138981?v=3","gravatar_id":"","url":"https://api.github.com/users/Janglinator","html_url":"https://github.com/Janglinator","followers_url":"https://api.github.com/users/Janglinator/followers","following_url":"https://api.github.com/users/Janglinator/following{/other_user}","gists_url":"https://api.github.com/users/Janglinator/gists{/gist_id}","starred_url":"https://api.github.com/users/Janglinator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Janglinator/subscriptions","organizations_url":"https://api.github.com/users/Janglinator/orgs","repos_url":"https://api.github.com/users/Janglinator/repos","events_url":"https://api.github.com/users/Janglinator/events{/privacy}","received_events_url":"https://api.github.com/users/Janglinator/received_events","type":"User","site_admin":false},"created_at":"2016-11-17T22:27:01Z","updated_at":"2016-11-17T22:27:01Z","body":"I might have time this weekend to work on this, sorry guys I'm behind  😞  I'll willing give anybody write access to this fork if you're willing to help me out!"}}
{"actor":{"display_login":"Janglinator"}}