Advertisement
Luticus

Dota herogen

Jun 23rd, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.81 KB | None | 0 0
  1. """
  2. Generates a random hero for each player passed as an argument
  3. """
  4. import os
  5. import sys
  6. import random
  7. import requests
  8. from bs4 import BeautifulSoup
  9.  
  10.  
  11. def main(names):
  12.     """
  13.    main function
  14.    """
  15.     run_dir = 'DotaHeroInterator'
  16.     heros = initial_setup(run_dir)
  17.     selected_heros = []
  18.     output_string = ""
  19.     if names.__len__() < 1:
  20.         print("Please supply player names")
  21.     for name in names:
  22.         while True:
  23.             picked_hero = generate_hero(heros)
  24.             if picked_hero not in selected_heros:
  25.                 break
  26.         selected_heros.append(picked_hero)
  27.         output_string += name + ' : ' + picked_hero
  28.     print(output_string)
  29.  
  30.  
  31. def generate_hero(heros):
  32.     """
  33.    Generates Hero
  34.    """
  35.     hero = ""
  36.     random_number = random.randint(0, len(heros)-1)
  37.     hero = heros[random_number]
  38.     return hero
  39.  
  40.  
  41. def initial_setup(run_dir):
  42.     """
  43.    Initial setup of run directory and other odds and ends.
  44.    """
  45.     heros = []
  46.  
  47.     url = 'https://dota2.gamepedia.com/Heroes_by_release'
  48.     response = requests.get(url)
  49.     soup = BeautifulSoup(response.text, "html.parser")
  50.  
  51.     if not os.path.exists(run_dir):
  52.         os.makedirs(run_dir)
  53.  
  54.     file_name = run_dir + '/Dotaheros.txt'
  55.     if not os.path.isfile(file_name):
  56.         file = open(file_name, 'w+')
  57.  
  58.         for row in soup.find_all('td'):
  59.             line = row.find('span', class_="image-link")
  60.             if line is not None:
  61.                 line_text = line.get_text()
  62.                 file.write(line_text + '\n')
  63.                 heros.append(line_text)
  64.         file.close()
  65.     else:
  66.         file = open(file_name, 'r')
  67.         for line in file:
  68.             heros.append(line)
  69.         file.close()
  70.     return heros
  71.  
  72.  
  73. if __name__ == '__main__':
  74.     main(sys.argv[1:])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement