{"id":19004514,"url":"https://github.com/moevm/github_repo_commitment_calc","last_synced_at":"2025-08-12T15:06:37.716Z","repository":{"id":37892726,"uuid":"283971401","full_name":"moevm/github_repo_commitment_calc","owner":"moevm","description":"Script for calculating commitment of each contributor in a set of Github repos.","archived":false,"fork":false,"pushed_at":"2025-04-16T20:01:41.000Z","size":2329,"stargazers_count":11,"open_issues_count":26,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-17T10:24:03.254Z","etag":null,"topics":["contributors","github-api","repo-commitment"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moevm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-07-31T07:26:50.000Z","updated_at":"2025-04-05T12:11:23.000Z","dependencies_parsed_at":"2024-02-04T03:19:49.261Z","dependency_job_id":"c0bd5f4b-21b2-4e94-a31b-e98bcc2a8497","html_url":"https://github.com/moevm/github_repo_commitment_calc","commit_stats":null,"previous_names":["moevm/github_repo_commitment_calc"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moevm%2Fgithub_repo_commitment_calc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moevm%2Fgithub_repo_commitment_calc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moevm%2Fgithub_repo_commitment_calc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moevm%2Fgithub_repo_commitment_calc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moevm","download_url":"https://codeload.github.com/moevm/github_repo_commitment_calc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250297174,"owners_count":21407160,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["contributors","github-api","repo-commitment"],"created_at":"2024-11-08T18:23:27.194Z","updated_at":"2025-04-22T18:33:48.109Z","avatar_url":"https://github.com/moevm.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"  # GITLogger\n\n## Установка зависимостей\n\nДля корректной работы приложения необходимо установить зависимости, указанные в `requirements.txt`, чтобы это сделать\nиспользуйте команду:\n\n```commandline\npip install -r requirements.txt\n```\n\n## Docker run\n1. Build via:\n``` bash\ndocker build -t checking_repo .\n```\n\n2. Run via:\n``` bash\ndocker run -v $(pwd)/output:/app/output checking_repo [--invites] [--commites] [--etc...] -t \u003cinsert_token\u003e -l \u003cinsert_list\u003e -o ./output/res.csv\n```\n\n\n## Запуск приложения:\n1. Логирование commits\n```commandline\npython3 main.py [-c, --commits] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list]  list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) [-b, --branch] branch (branch - название конкретной ветки, откуда брать коммиты или all - логгировать все коммиты изо всех веток)\n```\n2. Логирование issues\n```commandline\npython3 main.py [-i, --issues] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list]  list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи)\n```\n3. Логирование pull requests\n```commandline\npython3 main.py [-p, --pull_requests] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list]  list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) [--pr_comments] (если установлен - также выгружаются комментарии к PR)\n```\n4. Логирование непринятых приглашений в репо\n```commandline\npython3 main.py --invites (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list]  list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи)\n```\n5. Логирование вики-репозиториев\n```commandline\npython3 main.py [-w, --wikis] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list]  list (list - строка пути к txt файлу со списком репозиториев)  --dowland_repos path_drepo (path_drepo - строка пути к директории, где сохраняются вики-репозитории) [-o, --out] out (out - название csv файла, в который будут помещены все логи)\n```\n6. Логирование контрибьюторов\n```commandline\npython3 main.py --contributors (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l, --list]  list (list - строка пути к txt файлу со списком репозиториев)  --dowland_repos path_drepo (path_drepo - строка пути к директории, где сохраняются вики-репозитории) [-o, --out] out (out - название csv файла, в который будут помещены все логи)\n```\n\n\n##  Получение токена для работы с Google таблицей:\nСначала нужно создать проект на сайте  [Google Cloud](https://console.cloud.google.com/). Выбираем название проекта, жмем на кнопку \"Create\".\n\nЗатем в меню слева нажимаем на API'S \u0026 Services, выбираем Enabled APIs \u0026 services. Затем на новой страничке сверху находим \"+\" с надписью ENABLE APIS AND SERVICES. В поиске находим sheet, нажимаем на кнопку enable, такое же можно сделать и для drive. Теперь приложение может общаться с помощью API Google sheets.\n\nВ меню слева в API'S \u0026 Services переходим на вкладку Credentials, сверху должен быть восклицательный знак в оранжевом треугольнике, в этом сообщении нажимаем на CONFIGURE CONSENT SCREEN. Выбираем external и жмем Create. Заполняем поля со звездочками, жмем SAVE AND CONTINUE.\n\nЗаходим опять в Credentials. Нажимаем сверху на \"+\" CREATE CREDENTIALS и выбираем Service account. На первом этапе создаем имя,;жмем continue, на втором даем себе права owner, жмем DONE.\n\nВ таблице Service Accounts будет запись, нажимаем на нее. Сверху будет вкладка keys. Add key -\u003e Create new key -\u003e json -\u003e create. Получаем нужный json файл.\n##  Получение table_id и sheet_id для работы с Google таблицей:\nПосле создания таблицы в google sheets, получаем ссылку на эту таблицу и вводим ее в любом поисковике.В получившемся запросе после строчки \"d/\" будет находиться table_id, после строчки \"gid=\" будет находиться sheet_id\n## Экспорт таблицы в Google Sheets:\n\n``` commandline\npython3 main.py [-p, --pull_requests] (-t token (github токен вместо token) | --tokens tokens (путь до файла с токенами вместо tokens)) [-l,--list] list (list - строка пути к txt файлу со списком репозиториев) [-o, --out] out (out - название csv файла, в который будут помещены все логи) [--google_token] token.json (файл с google токеном) [--table_id] table_id (id таблицы, указанной в url пути до таблицы) [--sheet_id] sheet_id (id конкретного листа в таблице google)\n```\n\n## Файл со списком репозиториев:\n\nРепозитории хранятся в txt файле. Каждый репозиторий записывается в отдельную строку.\nДолжно быть указано полное имя репозитория. (Название организации/название репозитория)\n\n## Файл со списком токенов:\n\nКаждый токен записывается в отдельную строку.\nТокены должны быть привзязаны к разным github аккаунтам. Токены, привязанные к одному аккаунту имеют общий rate_limit.\n\n\nДля проверки того, что квота расходуется нескольких токенов предлагаю такой валидационный скрипт `check.py`\n```python\nfrom github import Auth, Github\n\n\ndef show_quota():\n    tokens = [...]\n    clients = [Github(auth=Auth.Token(token)) for token in tokens]\n    print([\n      (client.get_user().login, client.rate_limiting)\n      for client in clients\n    ])\n```\n```console\n$ python3 -i check.py\n\u003e\u003e\u003e show_quota()\n\u003e\u003e\u003e show_quota()\n\u003e\u003e\u003e show_quota()\n```\n\nРезультаты:\n```\n\u003e\u003e\u003e show_quota()\n[('thehighestmath', (4541, 5000)), ('qweqweqwe322', (4997, 5000))] # before launch collect data\n\u003e\u003e\u003e show_quota()\n[('thehighestmath', (2869, 5000)), ('qweqweqwe322', (2479, 5000))] # after launch collect data (collected 12 repos)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoevm%2Fgithub_repo_commitment_calc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoevm%2Fgithub_repo_commitment_calc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoevm%2Fgithub_repo_commitment_calc/lists"}