parent
d86b314347
commit
1025ada7e8
@ -0,0 +1,3 @@
|
|||||||
|
__pycache__
|
||||||
|
Pipfile
|
||||||
|
Pipfile.lock
|
@ -0,0 +1,77 @@
|
|||||||
|
from math import pi, sin, cos, atan2, sqrt
|
||||||
|
|
||||||
|
class Location():
|
||||||
|
def __init__(self, latitude, longitude):
|
||||||
|
self.latitude = latitude
|
||||||
|
self.longitude = longitude
|
||||||
|
|
||||||
|
def distance(self, other):
|
||||||
|
R = 6371e3
|
||||||
|
d_lat = (self.latitude - other.latitude) * pi/180
|
||||||
|
d_lon = (self.longitude - other.longitude) * pi/180
|
||||||
|
|
||||||
|
a = sin(d_lat/2) * sin(d_lat/2) +\
|
||||||
|
sin(d_lon/2) * sin(d_lon/2) * cos(self.latitude) * cos(other.latitude)
|
||||||
|
|
||||||
|
c = 2 * atan2(sqrt(a), sqrt(1-a))
|
||||||
|
d = R * c / 1000
|
||||||
|
|
||||||
|
return d
|
||||||
|
|
||||||
|
def get_cooldown(self, other):
|
||||||
|
distance = self.distance(other)
|
||||||
|
|
||||||
|
if distance <= 2:
|
||||||
|
return 1
|
||||||
|
elif distance <= 5:
|
||||||
|
return 2
|
||||||
|
elif distance <= 7:
|
||||||
|
return 5
|
||||||
|
elif distance <= 10:
|
||||||
|
return 7
|
||||||
|
elif distance <= 12:
|
||||||
|
return 8
|
||||||
|
elif distance <= 18:
|
||||||
|
return 10
|
||||||
|
elif distance <= 26:
|
||||||
|
return 15
|
||||||
|
elif distance <= 42:
|
||||||
|
return 19
|
||||||
|
elif distance <= 65:
|
||||||
|
return 22
|
||||||
|
elif distance <= 81:
|
||||||
|
return 25
|
||||||
|
elif distance <= 100:
|
||||||
|
return 35
|
||||||
|
elif distance <= 220:
|
||||||
|
return 40
|
||||||
|
elif distance <= 250:
|
||||||
|
return 45
|
||||||
|
elif distance <= 350:
|
||||||
|
return 51
|
||||||
|
elif distance <= 375:
|
||||||
|
return 54
|
||||||
|
elif distance <= 460:
|
||||||
|
return 62
|
||||||
|
elif distance <= 500:
|
||||||
|
return 65
|
||||||
|
elif distance <= 565:
|
||||||
|
return 69
|
||||||
|
elif distance <= 700:
|
||||||
|
return 78
|
||||||
|
elif distance <= 800:
|
||||||
|
return 84
|
||||||
|
elif distance <= 900:
|
||||||
|
return 92
|
||||||
|
elif distance <= 1000:
|
||||||
|
return 99
|
||||||
|
elif distance <= 1100:
|
||||||
|
return 107
|
||||||
|
elif distance <= 1200:
|
||||||
|
return 114
|
||||||
|
elif distance <= 1300:
|
||||||
|
return 117
|
||||||
|
else:
|
||||||
|
return 120
|
||||||
|
|
||||||
|
|
@ -0,0 +1,28 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
class Pokemon():
|
||||||
|
def __init__(self, name, number, location,
|
||||||
|
cp, level, attack, defense, hp,
|
||||||
|
iv, shiny, start_time, end_time,
|
||||||
|
country):
|
||||||
|
self.name = name
|
||||||
|
self.number = number
|
||||||
|
self.location = location
|
||||||
|
self.cp = cp
|
||||||
|
self.level = level
|
||||||
|
self.attack = attack
|
||||||
|
self.defense = defense
|
||||||
|
self.hp = hp
|
||||||
|
self.iv = iv
|
||||||
|
self.shiny = shiny
|
||||||
|
self.start_time = start_time
|
||||||
|
self.end_time = end_time
|
||||||
|
self.country = country
|
||||||
|
|
||||||
|
def is_dispawned(self):
|
||||||
|
if datetime().now() > end_time:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
class Raid():
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
@ -0,0 +1,35 @@
|
|||||||
|
from bs4 import BeautifulSoup
|
||||||
|
import requests
|
||||||
|
|
||||||
|
def get_pokemons(url):
|
||||||
|
pokemon_lst = []
|
||||||
|
response = requests.get(url)
|
||||||
|
soup = BeautifulSoup(response.text, "lxml")
|
||||||
|
|
||||||
|
for row in scraper.find_all("tr")[1:]:
|
||||||
|
data = row.find_all("td")[1:]
|
||||||
|
|
||||||
|
name = data[0].text
|
||||||
|
number = int(data[1].text)
|
||||||
|
|
||||||
|
coordinates = map(float, data[2].text.split(","))
|
||||||
|
location = Location(*coordinates)
|
||||||
|
|
||||||
|
cp = int(data[3].text)
|
||||||
|
level = int(data[4].text)
|
||||||
|
attack = int(data[5].text)
|
||||||
|
defense = int(data[6].text)
|
||||||
|
hp = int(data[7].text)
|
||||||
|
iv = int(data[8].text.rstrip("%"))
|
||||||
|
shiny = data[9].text == "Yes"
|
||||||
|
start_time = datetime.fromisoformat(data[10].text)
|
||||||
|
end_time = datetime.fromisoformat(data[11].text)
|
||||||
|
country = data[12].text
|
||||||
|
|
||||||
|
pokemon = Pokemon(name, number, location, cp, level, attack, defense, hp, iv, shiny, start_time, end_time, country)
|
||||||
|
pokemon_lst.append(pokemon)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,30 @@
|
|||||||
|
from bs4 import BeautifulSoup
|
||||||
|
from ispoof.core.location import Location
|
||||||
|
from ispoof.core.pokemon import Pokemon
|
||||||
|
from datetime import datetime
|
||||||
|
import requests
|
||||||
|
|
||||||
|
pokemon_html = requests.get("https://moonani.com/PokeList/index.php")
|
||||||
|
scraper = BeautifulSoup(pokemon_html.text, "lxml")
|
||||||
|
for row in scraper.find_all("tr")[1:]:
|
||||||
|
data = row.find_all("td")[1:]
|
||||||
|
|
||||||
|
name = data[0].text
|
||||||
|
number = int(data[1].text)
|
||||||
|
|
||||||
|
coordinates = map(float, data[2].text.split(","))
|
||||||
|
location = Location(*coordinates)
|
||||||
|
|
||||||
|
cp = int(data[3].text)
|
||||||
|
level = int(data[4].text)
|
||||||
|
attack = int(data[5].text)
|
||||||
|
defense = int(data[6].text)
|
||||||
|
hp = int(data[7].text)
|
||||||
|
iv = int(data[8].text.rstrip("%"))
|
||||||
|
shiny = data[9].text == "Yes"
|
||||||
|
start_time = datetime.fromisoformat(data[10].text)
|
||||||
|
end_time = datetime.fromisoformat(data[11].text)
|
||||||
|
country = data[12].text
|
||||||
|
|
||||||
|
pokemon = Pokemon(name, number, location, cp, level, attack, defense, hp, iv, shiny, start_time, end_time, country)
|
||||||
|
print(pokemon)
|
@ -0,0 +1,4 @@
|
|||||||
|
pymobiledevice3
|
||||||
|
beautifulsoup4
|
||||||
|
lxml
|
||||||
|
requests
|
Loading…
Reference in new issue