Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import xml.etree.ElementTree
- import urllib
- import string
- def get_steam_ids(steam_user):
- allowed_characters = string.ascii_lowercase + string.digits + '_'
- game_list = {}
- url = 'http://steamcommunity.com/id/{}/games?tab=all&xml=1'.format(steam_id)
- tm = chr(226) + chr(132) + chr(162)
- reg = chr(226) + chr(174)
- dash = chr(226) + chr(128) + chr(147)
- cut_replace = [("'n'", ' and '), (tm, ''), ('(tm)', ''), (reg, ''), ('(r)', ''), (dash, '-'), ('&', ' and '), ("'", ''), (' ', '_')]
- 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']
- cut_end = ['_-_', 'goty', 'game_of_the_year', '(', ',', 'gold', 'steam_edition']
- cut_alternate = [('.', ('_dot_', '_point_', '_', '')), ('+', ('_plus_', '_add_', '_', '')), ('-', ('_', ''))]
- cut_either = [('_ep_', '_episode_'), ('_vs_', '_versus_')]
- cut_split = ['/', ':']
- roman_conversion = [('x', 10), ('ix', 9), ('viii', 8), ('vii', 7), ('vi', 6), ('v', 5), ('iv', 4), ('iii', 3), ('ii', 2), ('i', 1)]
- for game in urllib.urlopen(url).read().split('<game>')[1:]:
- game = game.split('<appID>')[1]
- app_id, game = game.split('</appID>')
- game = game.split('<name><![CDATA[')[1]
- name, game = game.split(']]></name>')
- name = name.lower()
- original_name = name
- name_len = len(original_name)
- for i, j in cut_replace:
- name = name.replace(i, j)
- names = [name]
- for i in cut_end:
- for n in list(names):
- if i in n:
- n_split = n.split(i)
- for j in xrange(1, len(n_split)):
- n_new = ''
- for k in xrange(j):
- k + 1
- n_new += n_split[k]
- names.append(n_new)
- for i in cut_start:
- for n in list(names):
- if n.startswith(i):
- names.append(n.split(i)[1])
- for i, j in cut_either:
- for n in list(names):
- has_i = i in n
- has_j = j in n
- if has_i:
- names.append(n.replace(i, j))
- if has_j:
- names.append(n.replace(j, i))
- for i, j in cut_alternate:
- for n in list(names):
- if i in n:
- for k in j:
- names.append(n.replace(i, k))
- for i in cut_split:
- for n in list(names):
- if i in n:
- names += n.split(i)
- for name in set(names):
- #Remove all extra characters
- name = ''.join(i for i in name if i in allowed_characters).strip('_')
- #Remove double spacing
- while '__' in name:
- name = name.replace('__', '_')
- #Convert roman numberals to numbers
- name2 = None
- for r, n in roman_conversion:
- if '_{}_'.format(r) in name:
- name2 = name.replace('_{}_'.format(r), '_{}_'.format(n))
- break
- elif name.endswith('_{}'.format(r)):
- name2 = name[:-len(r)] + str(n)
- break
- if name:
- if name not in game_list or name_len < game_list[name][1]:
- game_list[name] = (app_id, name_len)
- if name2 is not None and (name2 not in game_list or name_len < game_list[name2][1]):
- if name2 not in game_list or game_list[name2][1]:
- game_list[name2] = (app_id, name_len)
- return game_list
- def generate_remote_functions(game_list):
- for game in sorted(game_list.keys()):
- id = game_list[game][0]
- print 'actions.launch_{} = function ()'.format(game)
- print ' os.open("steam://rungameid/{}");'.format(id)
- print 'end'
- steam_id = 'Obliterator2'
- generate_remote_functions(get_steam_ids(steam_id))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement