Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- Generates a random hero for each player passed as an argument
- """
- import os
- import sys
- import random
- import requests
- from bs4 import BeautifulSoup
- def main(names):
- """
- main function
- """
- run_dir = 'DotaHeroInterator'
- heros = initial_setup(run_dir)
- selected_heros = []
- output_string = ""
- if names.__len__() < 1:
- print("Please supply player names")
- for name in names:
- while True:
- picked_hero = generate_hero(heros)
- if picked_hero not in selected_heros:
- break
- selected_heros.append(picked_hero)
- output_string += name + ' : ' + picked_hero
- print(output_string)
- def generate_hero(heros):
- """
- Generates Hero
- """
- hero = ""
- random_number = random.randint(0, len(heros)-1)
- hero = heros[random_number]
- return hero
- def initial_setup(run_dir):
- """
- Initial setup of run directory and other odds and ends.
- """
- heros = []
- url = 'https://dota2.gamepedia.com/Heroes_by_release'
- response = requests.get(url)
- soup = BeautifulSoup(response.text, "html.parser")
- if not os.path.exists(run_dir):
- os.makedirs(run_dir)
- file_name = run_dir + '/Dotaheros.txt'
- if not os.path.isfile(file_name):
- file = open(file_name, 'w+')
- for row in soup.find_all('td'):
- line = row.find('span', class_="image-link")
- if line is not None:
- line_text = line.get_text()
- file.write(line_text + '\n')
- heros.append(line_text)
- file.close()
- else:
- file = open(file_name, 'r')
- for line in file:
- heros.append(line)
- file.close()
- return heros
- if __name__ == '__main__':
- main(sys.argv[1:])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement