From ca0be76fdc18b308ee755ba0bd4aa4120cb09613 Mon Sep 17 00:00:00 2001 From: Keunes <11229646+keunes@users.noreply.github.com> Date: Sat, 15 Apr 2023 21:17:17 +0200 Subject: Add changelog script (#6399) --- scripts/createContributors.py | 90 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 scripts/createContributors.py (limited to 'scripts/createContributors.py') diff --git a/scripts/createContributors.py b/scripts/createContributors.py new file mode 100644 index 000000000..fba19c793 --- /dev/null +++ b/scripts/createContributors.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python3 +import pycountry +import requests +import configparser +import os + +contributorsFile = open("CONTRIBUTORS.md", "w") + +###### Developers ##### +MAINTAINERS = ['ByteHamster', 'keunes'] +FORMER_MAINTAINERS = ['mfietz', 'TomHennen'] + +csvFile = open("app/src/main/assets/developers.csv", "w") +contributorsFile.write('# Developers\n\n') +page = 1 +hasMore = True +first = True +while hasMore: + nextPage = ('https://api.github.com/repos/AntennaPod/AntennaPod/contributors' + + '?q=contributions&order=desc&per_page=100&page=' + str(page)) + print("Loading " + nextPage) + json = requests.get(nextPage).json() + for contributor in json: + role = 'Contributor' + if contributor['login'] == 'danieloeh': + role = 'Original creator of AntennaPod (retired)' + elif contributor['login'] in MAINTAINERS: + role = 'Maintainer' + elif contributor['login'] in FORMER_MAINTAINERS: + role = 'Maintainer (retired)' + csvFile.write(contributor['login'].replace(";", "") + ';' + str(contributor['id']) + ';' + role + '\n') + if not first: + contributorsFile.write(', ') + first = False + contributorsFile.write('[' + contributor['login'] + '](https://github.com/' + contributor['login'] + ')') + page = page + 1 + hasMore = len(json) > 0 +csvFile.close() + +###### Translators ##### +config = configparser.ConfigParser() +config.read(os.path.expanduser("~") + '/.transifexrc') +if 'https://www.transifex.com' in config and config['https://www.transifex.com']['username'] == 'api': + TRANSIFEX_TOKEN = config['https://www.transifex.com']['token'] +else: + TRANSIFEX_TOKEN = "" + +languages = dict() + +nextPage = 'https://rest.api.transifex.com/team_memberships?filter[organization]=o:antennapod' +while nextPage is not None: + print("Loading " + nextPage) + r = requests.get(nextPage, + headers={'Authorization': 'Bearer ' + TRANSIFEX_TOKEN, + 'Accept': 'application/vnd.api+json'}) + for item in r.json()['data']: + language = item['relationships']['language']['data']['id'] + user = item['relationships']['user']['data']['id'] + if not language in languages: + langCode = language.replace('l:', '') + try: + langName = pycountry.languages.lookup(langCode).name + except: + try: + langName = pycountry.languages.lookup( + langCode.split('_')[0]).name + ' (' + langCode + ')' + except: + langName = code + print('\033[91mLanguage code not found:' + langCode + '\033[0m') + languages[language] = {'name': langName, 'translators': []} + languages[language]['translators'].append(user.replace('u:', '')) + nextPage = r.json()['links']['next'] + +languages = list(languages.values()) +languages.sort(key=lambda x : x['name'].lower()) + +csvFile = open("app/src/main/assets/translators.csv", "w") +contributorsFile.write('\n\n# Translators\n\n') +contributorsFile.write('| Language | Translators |\n| :-- | :-- |\n') +for language in languages: + translators = sorted(language['translators'], key=str.lower) + langName = language['name'] + joinedTranslators = ', '.join(translators).replace(';', '') + contributorsFile.write('| ' + langName + ' | ' + joinedTranslators + ' |\n') + csvFile.write(langName + ';' + joinedTranslators + '\n') +csvFile.close() +contributorsFile.close() + +print('Done') + -- cgit v1.2.3