1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #!/usr/bin/env python3
- import urllib.request
- import json
- import base64
- import sys
- def fetch(x):
- with urllib.request.urlopen(x) as response:
- return response.read()
- def find_addon(addons, addon_id):
- results = addons['results']
- for x in results:
- addon = x['addon']
- if addon['guid'] == addon_id:
- return addon
- sys.exit("Error: cannot find addon " + addon_id)
- def fetch_and_embed_icons(addons):
- results = addons['results']
- for x in results:
- addon = x['addon']
- icon_data = fetch(addon['icon_url'])
- addon['icon_url'] = 'data:image/png;base64,' + str(base64.b64encode(icon_data), 'utf8')
- def patch_https_everywhere(addons):
- addon = find_addon(addons, 'https-everywhere@eff.org')
- addon['guid'] = 'https-everywhere-eff@eff.org'
- addon['url'] = 'https://www.eff.org/https-everywhere'
- def main(argv):
- amo_collection = argv[0] if argv else '83a9cccfe6e24a34bd7b155ff9ee32'
- url = 'https://services.addons.mozilla.org/api/v4/accounts/account/mozilla/collections/' + amo_collection + '/addons/'
- data = json.loads(fetch(url))
- fetch_and_embed_icons(data)
- patch_https_everywhere(data)
- data['results'].sort(key=lambda x: x['addon']['guid'])
- find_addon(data, '{73a6fe31-595d-460b-a920-fcc0f8843232}') # Check that NoScript is present
- print(json.dumps(data, indent=2, ensure_ascii=False))
- if __name__ == "__main__":
- main(sys.argv[1:])
|