Advertisement
Guest User

Untitled

a guest
Apr 26th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.23 KB | None | 0 0
  1. import xml.etree.ElementTree
  2. import urllib
  3. import string
  4.  
  5. def get_steam_ids(steam_user):
  6.  
  7.     allowed_characters = string.ascii_lowercase + string.digits + '_'
  8.     game_list = {}
  9.     url = 'http://steamcommunity.com/id/{}/games?tab=all&xml=1'.format(steam_id)
  10.     tm = chr(226) + chr(132) + chr(162)
  11.     reg = chr(226) + chr(174)
  12.     dash = chr(226) + chr(128) + chr(147)
  13.     cut_replace = [("'n'", ' and '), (tm, ''), ('(tm)', ''), (reg, ''), ('(r)', ''), (dash, '-'), ('&', ' and '), ("'", ''), (' ', '_')]
  14.     cut_start = ['batman', 'warhammer_40000', "tom_clancys", 'the_elder_scrolls_iii', 'the_elder_scrolls_iv', 'the_elder_scrolls_v', 'star_wars', 'lara_croft_and_the', 'call_of_duty', 'might_and_magic', 'the_lord_of_the_rings', 'middle-earth']
  15.     cut_end = ['_-_', 'goty', 'game_of_the_year', '(', ',', 'gold', 'steam_edition']
  16.     cut_alternate = [('.', ('_dot_', '_point_', '_', '')), ('+', ('_plus_', '_add_', '_', '')), ('-', ('_', ''))]
  17.     cut_either = [('_ep_', '_episode_'), ('_vs_', '_versus_')]
  18.     cut_split = ['/', ':']
  19.     roman_conversion = [('x', 10), ('ix', 9), ('viii', 8), ('vii', 7), ('vi', 6), ('v', 5), ('iv', 4), ('iii', 3), ('ii', 2), ('i', 1)]
  20.     for game in urllib.urlopen(url).read().split('<game>')[1:]:
  21.         game = game.split('<appID>')[1]
  22.         app_id, game = game.split('</appID>')
  23.         game = game.split('<name><![CDATA[')[1]
  24.         name, game = game.split(']]></name>')
  25.         name = name.lower()
  26.         original_name = name
  27.         name_len = len(original_name)
  28.        
  29.         for i, j in cut_replace:
  30.             name = name.replace(i, j)
  31.         names = [name]
  32.         for i in cut_end:
  33.             for n in list(names):
  34.                 if i in n:
  35.                     n_split = n.split(i)
  36.                     for j in xrange(1, len(n_split)):
  37.                         n_new = ''
  38.                         for k in xrange(j):
  39.                             k + 1
  40.                             n_new += n_split[k]
  41.                         names.append(n_new)
  42.         for i in cut_start:
  43.             for n in list(names):
  44.                 if n.startswith(i):
  45.                     names.append(n.split(i)[1])
  46.         for i, j in cut_either:
  47.             for n in list(names):
  48.                 has_i = i in n
  49.                 has_j = j in n
  50.                 if has_i:
  51.                     names.append(n.replace(i, j))
  52.                 if has_j:
  53.                     names.append(n.replace(j, i))
  54.         for i, j in cut_alternate:
  55.             for n in list(names):
  56.                 if i in n:
  57.                     for k in j:
  58.                         names.append(n.replace(i, k))
  59.         for i in cut_split:
  60.             for n in list(names):
  61.                 if i in n:
  62.                     names += n.split(i)
  63.        
  64.         for name in set(names):
  65.            
  66.             #Remove all extra characters
  67.             name = ''.join(i for i in name if i in allowed_characters).strip('_')
  68.            
  69.             #Remove double spacing
  70.             while '__' in name:
  71.                 name = name.replace('__', '_')
  72.            
  73.             #Convert roman numberals to numbers
  74.             name2 = None
  75.             for r, n in roman_conversion:
  76.                 if '_{}_'.format(r) in name:
  77.                     name2 = name.replace('_{}_'.format(r), '_{}_'.format(n))
  78.                     break
  79.                 elif name.endswith('_{}'.format(r)):
  80.                     name2 = name[:-len(r)] + str(n)
  81.                     break
  82.            
  83.             if name:
  84.                 if name not in game_list or name_len < game_list[name][1]:
  85.                     game_list[name] = (app_id, name_len)
  86.                 if name2 is not None and (name2 not in game_list or name_len < game_list[name2][1]):
  87.                     if name2 not in game_list or game_list[name2][1]:
  88.                         game_list[name2] = (app_id, name_len)
  89.            
  90.     return game_list
  91.  
  92. def generate_remote_functions(game_list):
  93.     for game in sorted(game_list.keys()):
  94.         id = game_list[game][0]
  95.         print 'actions.launch_{} = function ()'.format(game)
  96.         print '    os.open("steam://rungameid/{}");'.format(id)
  97.         print 'end'
  98.  
  99.  
  100. steam_id = 'Obliterator2'
  101. generate_remote_functions(get_steam_ids(steam_id))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement