Talk:The Sun Is Silent for This One

From Guild Wars 2 Wiki
Jump to navigationJump to search

Script for creating a first version of the achievements from the API[edit]

This is a simple script for creating a first version of a collection page from the API. The script takes the achievement ID and the collection rarity as parameters. --Andreasg.gw2 (talk) 21:57, 1 December 2017 (UTC)

   #!/usr/bin/python
   
   from collections import defaultdict
   import json
   import sys
   import urllib2
   
   reload(sys)
   sys.setdefaultencoding('utf-8')
   
   base_url = 'https://api.guildwars2.com/v2/'
   type_urls = {'Item': 'items', 'Skin': 'skins', 'Minipet': 'minis'}
   ach_id = int(sys.argv[1])
   rarity = sys.argv[2] if len(sys.argv) > 2 else 'Basic'
   
   def makeRequest(rel_url, query_string=None):
       url = base_url + rel_url
       if query_string is not None:
           url = url + '?' + query_string
       req = urllib2.Request(url, None)
       f = urllib2.urlopen(req, None, 60)
       x = json.load(f)
       f.close()
       return x
   
   achievement = makeRequest('achievements/' + str(ach_id))
   id_sets = defaultdict(set)
   bits = achievement.get('bits', [])
   for b in bits:
       try:
           id_sets[b['type']].add(b['id'])
       except KeyError:
           pass
   name_dict = {}
   for (key, value) in id_sets.iteritems():
       name_dict.update({x['id']: x['name'] for x in makeRequest(type_urls[key], 'ids=' + ','.join(str(y) for y in value))})
   
   print '[[' + achievement['name'] + ']] is a ' + ('hidden ' if 'Hidden' in achievement['flags'] else "") + '[' + '[' + rarity + ' Collections]] [' + '[achievement]].'
   print ""
   print '== Achievement =='
   print '{' + '{achievement}}'
   print ""
   print '=== Collection items ==='
   for b in bits:
       try:
           name = name_dict[b['id']]
           print '* {' + '{item icon|' + name + '}}'
       except KeyError:
           pass
   print ""
   print '[' + '[Category:' + rarity + ' Collections]]'