e60d63aa |
#!/usr/bin/env python3
import os
import sys
import configparser
import urllib.request
import json
FIREFOX_PATH = os.path.expanduser('~/.mozilla/firefox')
PROFILES_PATH = os.path.join(FIREFOX_PATH, 'profiles.ini')
API_BASE_URL = 'https://services.addons.mozilla.org/api/v4/addons/addon'
extension = sys.argv[1]
profiles = configparser.ConfigParser()
profiles.optionxform = str
profiles.read(PROFILES_PATH)
for section in profiles.sections():
if section.startswith('Profile'):
profile = dict(profiles.items(section))
if int(profile['Default']):
profile_path = profile['Path']
if int(profile.get('IsRelative', '0')):
profile_path = os.path.join(FIREFOX_PATH, profile_path)
with urllib.request.urlopen(f'{API_BASE_URL}/{extension}') as response:
info = json.loads(response.read())
guid = info['guid']
url = info['current_version']['files'][0]['url']
path = os.path.join(profile_path, 'extensions', f'{guid}.xpi')
os.makedirs(os.path.dirname(path), exist_ok=True)
if not os.path.exists(path):
urllib.request.urlretrieve(url, path)
print(extension)
|