ci, tools: Automatically generate contributor attribution files

Also includes a tool to convert Patreon Membership .csv files into a support patch set.
This commit is contained in:
Michael Fabian 'Xaymar' Dirks 2021-04-19 19:29:55 +02:00
parent 3c1fecfd1e
commit e3302fa163
12 changed files with 1160 additions and 48 deletions

30
.github/workflows/authors.yml vendored Normal file
View File

@ -0,0 +1,30 @@
name: Refresh
on:
schedule:
- cron: '0 0 * * 0'
push:
branches:
- 'master'
jobs:
update-authors:
runs-on: ubuntu-latest
name: "Update Authors"
steps:
- name: "Checkout"
uses: actions/checkout@v2
- name: "Generate Authors file"
shell: bash
env:
CROWDIN_PROJECTID: "343435"
CROWDIN_TOKEN: ${{ secrets.AUTH_TOKEN_CROWDIN }}
GITHUB_TOKEN: ${{ secrets.AUTH_TOKEN_GITHUB }}
run: |
git checkout -b authors
pushd ./tools > /dev/null
npm install
node ./generate-contributors.js "${{ github.workspace }}/AUTHORS.md" "${{ github.workspace }}/data/thanks.json"
popd /dev/null
git add .
git commit -a -m="project: Generate contributor attribution files"
git push -f

View File

@ -1,54 +1,305 @@
# Authors
This project is made possible by [all supporters on Patreon](https://www.patreon.com/Xaymar), [all translators on Crowdin](https://crowdin.com/project/obs-stream-effects) and the programmers that have spent time on this.
# StreamFX Contributors & Supporters
## Programmers
* Cat Stevens
* Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
* wwj402
## Contributors
### Code, Media
Thanks go to the following people, who have either wrangled with code or wrangled with image editors while saving often in the hopes of not losing any changes:
* [Brandon Edens](https://github.com/undefined/graphs/contributors)
* [Carlos Baraza](https://github.com/undefined/graphs/contributors)
* [Cat Stevens](https://github.com/undefined/graphs/contributors)
* [Charles Fettinger](https://github.com/undefined/graphs/contributors)
* [Christopher P Yarger](https://github.com/undefined/graphs/contributors)
* [Daniel Hodgson](https://github.com/undefined/graphs/contributors)
* [Daniel Molkentin](https://github.com/undefined/graphs/contributors)
* [Michael Fabian 'Xaymar' Dirks](https://github.com/undefined/graphs/contributors)
* [Radegast-FFXIV](https://github.com/undefined/graphs/contributors)
* [Robert Moggach](https://github.com/undefined/graphs/contributors)
* [Vainock](https://github.com/undefined/graphs/contributors)
* [William Pettersson](https://github.com/undefined/graphs/contributors)
* [coolsoft.rf](https://github.com/undefined/graphs/contributors)
* [kilin](https://github.com/undefined/graphs/contributors)
* [tytan652](https://github.com/undefined/graphs/contributors)
* [wwj402](https://github.com/undefined/graphs/contributors)
### Translators
[StreamFX relies on crowd-sourced translations to be available in your language.](https://github.com/Xaymar/obs-StreamFX/issues/36) Much thanks go out to all volunteer translators who have taken some time to submit translations on Crowdin.
* [A Ismaili](https://crowdin.com/profile/achimismaili)
* [Adolfo Jayme](https://crowdin.com/profile/fitoschido)
* [Alex E. D. B.](https://crowdin.com/profile/alexedb)
* [Alexander Haffer](https://crowdin.com/profile/AlexanderHaffer)
* [AmirGhorbani_ir](https://crowdin.com/profile/AmirGhorbani_ir)
* [Arcan Yiğit Taşkan](https://crowdin.com/profile/karamizahim)
* [Artem](https://crowdin.com/profile/Artem4ik)
* [Arthur](https://crowdin.com/profile/Skor_X)
* [Aurora Robb Kristiansen](https://crowdin.com/profile/Ridge)
* [Billy_la_menace](https://crowdin.com/profile/Symor)
* [Boris Grigorov](https://crowdin.com/profile/boris.grigorov26)
* [Bruno Pinho](https://crowdin.com/profile/BPinho)
* [Byunghun An](https://crowdin.com/profile/kloydhere)
* [Cerbion](https://crowdin.com/profile/Cerbion)
* [Chris BDS](https://crowdin.com/profile/HakuKaze)
* [Claudio Alvez](https://crowdin.com/profile/claudiogodofwar37)
* [Claudio Nunes](https://crowdin.com/profile/_claudionunes_)
* [ColdusT](https://crowdin.com/profile/ColdusT)
* [CyberspeedCz](https://crowdin.com/profile/CyberspeedCz)
* [Damian Soler](https://crowdin.com/profile/Under_RL)
* [Dan Vasiliu](https://crowdin.com/profile/dvasiliu)
* [Danil Sarvensky](https://crowdin.com/profile/sarvensky)
* [David Zheng](https://crowdin.com/profile/msdz)
* [Daya Adianto](https://crowdin.com/profile/addianto)
* [Deadbringer](https://crowdin.com/profile/Deadbringer)
* [DmJacky](https://crowdin.com/profile/DmJacky)
* [Dmytro](https://crowdin.com/profile/LinkinWires)
* [Droidman](https://crowdin.com/profile/Droidman)
* [Dániel P.](https://crowdin.com/profile/Daniii_)
* [EDNVKjldr8vyu9](https://crowdin.com/profile/EDNVKjldr8vyu9)
* [EMRE ÇELİK](https://crowdin.com/profile/emre0447)
* [Ege Esin](https://crowdin.com/profile/ege_e)
* [Emanuel Messias, R.d.S.](https://crowdin.com/profile/MessiasOF)
* [Enrique Castillo](https://crowdin.com/profile/ecastillo)
* [Eryk Pazoła](https://crowdin.com/profile/erykpaz2004)
* [Fire KM127PL](https://crowdin.com/profile/KM127PL)
* [Francesco Maria Poerio](https://crowdin.com/profile/fracchiomon)
* [Frederico Maia](https://crowdin.com/profile/omaster)
* [Gabriele Arena](https://crowdin.com/profile/teamexpert2013)
* [Gol D. Ace](https://crowdin.com/profile/goldace)
* [Guillaume Turchini](https://crowdin.com/profile/orion78fr)
* [Hackebein](https://crowdin.com/profile/Hackebein)
* [Henry Agudelo](https://crowdin.com/profile/hdagudelo)
* [HiroOnGitHub](https://crowdin.com/profile/HiroOnGithub)
* [Holger Sinn](https://crowdin.com/profile/Holger-Sinn)
* [IT_Translator](https://crowdin.com/profile/IT_Translator)
* [Itukii](https://crowdin.com/profile/Itukii)
* [Ivo Sestren Junior](https://crowdin.com/profile/IvoSestren)
* [Janis Majors](https://crowdin.com/profile/bobola)
* [Jeffrey Chapuis](https://crowdin.com/profile/ashyni1987)
* [Jelmer](https://crowdin.com/profile/Luxizzle)
* [Jens Fischer](https://crowdin.com/profile/JensFZ)
* [Jessy HACHET](https://crowdin.com/profile/jessy.hachet)
* [Job Diógenes Ribeiro Borges](https://crowdin.com/profile/jobdiogenes)
* [Jonas Van den Abbeele](https://crowdin.com/profile/jonasvda2006)
* [Kevin Kandlbinder](https://crowdin.com/profile/kevink)
* [Kim Bech](https://crowdin.com/profile/kimbech)
* [Kokosnuss.exe](https://crowdin.com/profile/KokosnussDEV)
* [Krit789](https://crowdin.com/profile/Krit789)
* [Kurozumi](https://crowdin.com/profile/Kurozumi)
* [LANCERRR](https://crowdin.com/profile/dongxujiayou88)
* [LeNinjaHD](https://crowdin.com/profile/LeNinjaHD)
* [Leonardo Fries](https://crowdin.com/profile/LeoNerdinho)
* [Lifeely](https://crowdin.com/profile/Lifeely)
* [Loïc](https://crowdin.com/profile/Ozachi)
* [LucN31](https://crowdin.com/profile/LucN31)
* [Lucas Fernandez](https://crowdin.com/profile/kasey-fr)
* [Léo Roubaud](https://crowdin.com/profile/hydargos)
* [MIBAND](https://crowdin.com/profile/LEMIBANDDEXARI)
* [Maciej4535](https://crowdin.com/profile/Maciej4535)
* [Marcel Kuhla](https://crowdin.com/profile/CandyPanda)
* [Marco Túlio Pires](https://crowdin.com/profile/mtrpires)
* [Martin Hybner](https://crowdin.com/profile/hybner)
* [Mateusz Zych](https://crowdin.com/profile/soruse)
* [Michael Fabian Dirks](https://crowdin.com/profile/Xaymar)
* [Mikhail](https://crowdin.com/profile/Migelius74)
* [MkHere-YT](https://crowdin.com/profile/MkHere)
* [Mnr. Volkstaat](https://crowdin.com/profile/malapradex)
* [Monsteer](https://crowdin.com/profile/Monsteer)
* [Mr Gohst](https://crowdin.com/profile/Gohst)
* [NOYB](https://crowdin.com/profile/NOYB)
* [Nanito Morillas](https://crowdin.com/profile/hellnano)
* [Nawin Somprasong](https://crowdin.com/profile/thaipirch98)
* [Nikola Perović](https://crowdin.com/profile/Fooftilly)
* [Nobre HD](https://crowdin.com/profile/NobreHD)
* [Nooody FR](https://crowdin.com/profile/nooodyfr)
* [Orhan Elçi](https://crowdin.com/profile/orhan.elci2003)
* [Origami](https://crowdin.com/profile/Origami)
* [Peter Grindem](https://crowdin.com/profile/1pete1)
* [Proryanator](https://crowdin.com/profile/Proryanator)
* [Renaud G.](https://crowdin.com/profile/obiwankennedy)
* [RezQ](https://crowdin.com/profile/RezQ)
* [Richie Bendall](https://crowdin.com/profile/richiebendall)
* [Robin Tetour](https://crowdin.com/profile/RobTheRealLifeAnimoo)
* [Romeo Bunić](https://crowdin.com/profile/Romz)
* [SDUX1s44c](https://crowdin.com/profile/SDUX1s44c)
* [SKYQWER](https://crowdin.com/profile/mine17288)
* [SMG music display](https://crowdin.com/profile/SMGMusicDisplay)
* [Sade](https://crowdin.com/profile/Sade)
* [Sandschi](https://crowdin.com/profile/sandschi)
* [ScottInTokyo](https://crowdin.com/profile/ScottInTokyo)
* [Serhiy Dmytryshyn](https://crowdin.com/profile/dies)
* [Sjoer van der Ploeg](https://crowdin.com/profile/sfjuocekr)
* [StanislavPro](https://crowdin.com/profile/StanislavPro)
* [StarFang208](https://crowdin.com/profile/StarFang208)
* [Store](https://crowdin.com/profile/HelaBasa)
* [Syskoh](https://crowdin.com/profile/Syskoh)
* [Szymon Szewc](https://crowdin.com/profile/szymonszewcjr)
* [TOWUK](https://crowdin.com/profile/towuk)
* [ThePooN](https://crowdin.com/profile/ThePooN)
* [Thom Knepper](https://crowdin.com/profile/MrKnepp)
* [Tim Cordes](https://crowdin.com/profile/t1mc0rd35)
* [Toine Enzo](https://crowdin.com/profile/toineenzo)
* [TonyWin Somprasong](https://crowdin.com/profile/mga1627)
* [TorniX0](https://crowdin.com/profile/TorniX0)
* [Tuna](https://crowdin.com/profile/zentoryny)
* [Vane Brain](https://crowdin.com/profile/vanebrain3)
* [Viginox](https://crowdin.com/profile/Viginox)
* [WDK1337](https://crowdin.com/profile/WDK1337)
* [Wesley Pyburn (TechNobo)](https://crowdin.com/profile/TcNobo)
* [WhiteyChannel](https://crowdin.com/profile/zvd.pro)
* [WoWnik](https://crowdin.com/profile/wownik98)
* [Yoinks DBD](https://crowdin.com/profile/izzyfazt)
* [Yumis](https://crowdin.com/profile/yumis84)
* [Yurlyn](https://crowdin.com/profile/Yurlyn)
* [ZHANGEN](https://crowdin.com/profile/ZHANGEN)
* [Zero Team](https://crowdin.com/profile/ZERO_TEAM)
* [Zoop](https://crowdin.com/profile/Zoop)
* [bruh](https://crowdin.com/profile/noobumpls)
* [code.sport](https://crowdin.com/profile/code.sport)
* [erichardouin](https://crowdin.com/profile/erichardouin)
* [eskori](https://crowdin.com/profile/eskori)
* [exeldro](https://crowdin.com/profile/exeldro)
* [itsolutek](https://crowdin.com/profile/itsolutek)
* [jh KIm](https://crowdin.com/profile/kkhmn1)
* [kkk12955](https://crowdin.com/profile/kkk12955)
* [lukazivanovic](https://crowdin.com/profile/lukazivanovic)
* [mochaaP](https://crowdin.com/profile/mochaaP)
* [mudse](https://crowdin.com/profile/mudse)
* [multi.flexi](https://crowdin.com/profile/multi.flexi)
* [mwessen](https://crowdin.com/profile/sh3ph3r6)
* [ozaki](https://crowdin.com/profile/OzakIOne)
* [petro770](https://crowdin.com/profile/petro770)
* [rufus20145](https://crowdin.com/profile/rufus20145)
* [sasagar](https://crowdin.com/profile/sasagar)
* [sasha2002](https://crowdin.com/profile/sasha2002)
* [saygo1125](https://crowdin.com/profile/saygo1125)
* [shugen002](https://crowdin.com/profile/shugen002)
* [spring jungle](https://crowdin.com/profile/springjungle)
* [tpo0508](https://crowdin.com/profile/tpo0508)
* [tytan652](https://crowdin.com/profile/tytan652)
* [wwj402_github](https://crowdin.com/profile/wwj402_github)
* [xaymarsdaddy](https://crowdin.com/profile/xaymarsdaddy)
* [yuvuwj](https://crowdin.com/profile/yuvuwj)
* [Вадим Казанцев](https://crowdin.com/profile/Rutboy)
* [Вадим Якшин](https://crowdin.com/profile/tayler2013)
* [Денис Полозихин](https://crowdin.com/profile/denispolozihin)
* [Евгений Шестяков](https://crowdin.com/profile/anfogor)
* [十六夜楓](https://crowdin.com/profile/fy1208557958)
* [시공의 폭풍](https://crowdin.com/profile/parkjh030746)
## Supporters
* Anton Safronov
* Benjamin Hoffmeister
* Brett Dowling
* Creator's Alliance
* Jasper Concepcion
* Jeremy "razorlikes" Nieth
* Keridos
* MaD
* Nico Thate
* nwgat.ninja
* olemars
* QappZ
* tehMorag: [Twitch](https://twitch.tv/tehMorag)
* Steel Brain
* tryptech
* Vangardt
The StreamFX project relies on generous donations from you through [Patreon](https://patreon.com/xaymar), [GitHub](https://github.com/sponsors/xaymar) or [PayPal](https://paypal.me/xaymar). Huge thanks go out to the following people for supporting StreamFX:
## Translators
* Alex E. D. B.
* Chris BDS
* Dileytro
* Eryk Pazola
* Gol D. Ace
* Jessy Hachet
* Loïc
* Noi
* Nooody FR
* SMG music display
* StanislavPro
* TOWUK
* Vainock: [Crowdin](https://crowdin.com/profile/ivo.lemmert)
* Vane Brain
* WhiteyChannel
* WoWnik: [Website](https://wownik.ru), [Twitch](https://www.twitch.tv/wownik), [VK](https://vk.com/wownik)
* wwj402
* Yoinks DBD
* Yurlyn
* Лука Живановић
### GitHub Sponsors
* [DJNOCTUS](https://github.com/DJNOCTUS)
* [FateOfNines](https://github.com/FateOfNines)
* [GranDroidTonight](https://github.com/GranDroidTonight)
* [Harmansingh1397](https://github.com/Harmansingh1397)
* [Hugo Denizart](https://github.com/ThePooN)
* [Joe Kluch](https://github.com/jkluch)
* [Joefis-x20s](https://github.com/Joefis-x20s)
* [LagaV](https://github.com/LagaV)
* [M*C*O](https://github.com/MCOfficer)
* [MEKKER](https://github.com/MEKKERMB)
* [Maxwell Bloch](https://github.com/maxwellb)
* [Noora](https://github.com/noorus)
* [Pabloss1987](https://github.com/Pabloss1987)
* [Raidenex](https://github.com/Raidenex)
* [Stealthlips](https://github.com/Stealthlips)
* [TheB1gG](https://github.com/TheB1gG)
* [Tim](https://github.com/elricco)
* [Travis Crawford](https://github.com/traviscrawford85)
* [VensireStudios](https://github.com/VensireStudios)
* [blackmoon1910](https://github.com/blackmoon1910)
* [jTRN2x0](https://github.com/jTRN2x0)
* [kevinfrogernl](https://github.com/kevinfrogernl)
* [mbWebsolution](https://github.com/mbWebsolution)
* [oshiteku](https://github.com/oshiteku)
* [pirahtays](https://github.com/pirahtays)
* [wild-wild-fibsh](https://github.com/wild-wild-fibsh)
# Generating this file
1. git log --pretty=format:'%aN <%aE>' | sort -u
2. Merge entries by e-Mail
### Patreon Patrons
* [Aaron ](https://www.patreon.com/user/creators?u=22565926)
* [Abs](https://www.patreon.com/user/creators?u=63196404)
* [Adam Dangerbeard](https://www.patreon.com/user/creators?u=5048919)
* [Adel Toay](https://www.patreon.com/user/creators?u=58184164)
* [Alexandre Cyr](https://www.patreon.com/user/creators?u=8576328)
* [And We're Live! PreZZure](https://www.patreon.com/user/creators?u=49966803)
* [Bastian Koyro](https://www.patreon.com/user/creators?u=5086308)
* [Ben Vosburgh](https://www.patreon.com/user/creators?u=4062691)
* [Benjamin Hoffmeister](https://www.patreon.com/user/creators?u=5087057)
* [Bjarke Kongstad](https://www.patreon.com/user/creators?u=10147732)
* [Brownie ](https://www.patreon.com/user/creators?u=29687375)
* [Brutus Shearer](https://www.patreon.com/user/creators?u=53110694)
* [Chris Lynch](https://www.patreon.com/user/creators?u=3921522)
* [Cory Goodwin](https://www.patreon.com/user/creators?u=58410833)
* [Craft Computing](https://www.patreon.com/user/creators?u=7422105)
* [Ct84FUASk5bFstq](https://www.patreon.com/user/creators?u=41874925)
* [D_Girl ](https://www.patreon.com/user/creators?u=3625413)
* [David Bixler](https://www.patreon.com/user/creators?u=5429239)
* [David Do](https://www.patreon.com/user/creators?u=32255073)
* [Dean Barclay](https://www.patreon.com/user/creators?u=9449350)
* [DrunKev ](https://www.patreon.com/user/creators?u=26063390)
* [Dustin Deatherage](https://www.patreon.com/user/creators?u=63380532)
* [Ebony Zinnack](https://www.patreon.com/user/creators?u=31612990)
* [EmeraIdCola ](https://www.patreon.com/user/creators?u=27503685)
* [Eric Dieter Hesselbach](https://www.patreon.com/user/creators?u=35660482)
* [Formica](https://www.patreon.com/user/creators?u=2442057)
* [Gary Griffith](https://www.patreon.com/user/creators?u=49564527)
* [Gimli Son Of Gloin](https://www.patreon.com/user/creators?u=34065035)
* [Gronkh ](https://www.patreon.com/user/creators?u=2617905)
* [Hana Pestle](https://www.patreon.com/user/creators?u=33587406)
* [How to Drink](https://www.patreon.com/user/creators?u=6391455)
* [Héctor Rivera](https://www.patreon.com/user/creators?u=20884936)
* [JeffCraig ](https://www.patreon.com/user/creators?u=3214093)
* [Jerod Bennett](https://www.patreon.com/user/creators?u=471437)
* [Joe Dougherty](https://www.patreon.com/user/creators?u=929557)
* [Jon Petermann](https://www.patreon.com/user/creators?u=63931570)
* [Jonathan Gilligan](https://www.patreon.com/user/creators?u=16212519)
* [Jonathan Perkins](https://www.patreon.com/user/creators?u=35345012)
* [Joseph Estes](https://www.patreon.com/user/creators?u=31240177)
* [Juncker ](https://www.patreon.com/user/creators?u=25351345)
* [Justin Ruiz](https://www.patreon.com/user/creators?u=61134357)
* [Kei Foster](https://www.patreon.com/user/creators?u=3252261)
* [Kim Bech](https://www.patreon.com/user/creators?u=4473266)
* [KrisCheetah ](https://www.patreon.com/user/creators?u=5208869)
* [Lash LaRue](https://www.patreon.com/user/creators?u=27497287)
* [Manus O'Donnell](https://www.patreon.com/user/creators?u=10969884)
* [Martin Wimpress](https://www.patreon.com/user/creators?u=2780761)
* [Matt Calabrese](https://www.patreon.com/user/creators?u=2410405)
* [Michael Haßfurther](https://www.patreon.com/user/creators?u=54198386)
* [Mikaykaybooboo](https://www.patreon.com/user/creators?u=55606570)
* [Mike King](https://www.patreon.com/user/creators?u=2824850)
* [MrLiveProducer](https://www.patreon.com/user/creators?u=283535)
* [MyNameIsJeff ](https://www.patreon.com/user/creators?u=26176738)
* [Neil Gaddie](https://www.patreon.com/user/creators?u=53600538)
* [Nik Wright](https://www.patreon.com/user/creators?u=64748110)
* [Noah](https://www.patreon.com/user/creators?u=28561459)
* [Nordern ](https://www.patreon.com/user/creators?u=6970809)
* [Owen Quinlan](https://www.patreon.com/user/creators?u=25383903)
* [Pascal Jean](https://www.patreon.com/user/creators?u=59781622)
* [Peter Donaghy](https://www.patreon.com/user/creators?u=50612254)
* [Peter van Kalleveen](https://www.patreon.com/user/creators?u=59122352)
* [Raiden](https://www.patreon.com/user/creators?u=9645671)
* [Roman Jacob Concordia](https://www.patreon.com/user/creators?u=58076170)
* [Ryan Hopkins](https://www.patreon.com/user/creators?u=3819264)
* [SadeN.moe ](https://www.patreon.com/user/creators?u=8930949)
* [Sean ](https://www.patreon.com/user/creators?u=2382106)
* [Sean Willeboordse](https://www.patreon.com/user/creators?u=9419328)
* [Shadowy](https://www.patreon.com/user/creators?u=23349012)
* [SigmaH20 .](https://www.patreon.com/user/creators?u=34295895)
* [Simon Vacker](https://www.patreon.com/user/creators?u=516915)
* [StealthCT ](https://www.patreon.com/user/creators?u=5055600)
* [UpDownLeftDie ](https://www.patreon.com/user/creators?u=13992640)
* [Zep Brattesani](https://www.patreon.com/user/creators?u=915823)
* [asdkola](https://www.patreon.com/user/creators?u=49505113)
* [blyt](https://www.patreon.com/user/creators?u=47035760)
* [hikaruXwiiwalker](https://www.patreon.com/user/creators?u=152960)
* [iamresist ](https://www.patreon.com/user/creators?u=19164596)
* [norlife ](https://www.patreon.com/user/creators?u=11953551)
* [ragesaq](https://www.patreon.com/user/creators?u=34519727)
* [reelmccoy ](https://www.patreon.com/user/creators?u=2454633)
* [sid sawyer](https://www.patreon.com/user/creators?u=34103367)
* [trus0und](https://www.patreon.com/user/creators?u=43845831)
* [tsukasa](https://www.patreon.com/user/creators?u=23383875)
* [zachary harrisson](https://www.patreon.com/user/creators?u=61387322)
## Note
Manually generated on 2019-04-15 by Michael Fabian 'Xaymar' Dirks.

298
data/thanks.json Normal file
View File

@ -0,0 +1,298 @@
{
"contributor": {
"Brandon Edens": "https://github.com/undefined/graphs/contributors",
"Carlos Baraza": "https://github.com/undefined/graphs/contributors",
"Cat Stevens": "https://github.com/undefined/graphs/contributors",
"Charles Fettinger": "https://github.com/undefined/graphs/contributors",
"Christopher P Yarger": "https://github.com/undefined/graphs/contributors",
"Daniel Hodgson": "https://github.com/undefined/graphs/contributors",
"Daniel Molkentin": "https://github.com/undefined/graphs/contributors",
"Michael Fabian 'Xaymar' Dirks": "https://github.com/undefined/graphs/contributors",
"Radegast-FFXIV": "https://github.com/undefined/graphs/contributors",
"Robert Moggach": "https://github.com/undefined/graphs/contributors",
"Vainock": "https://github.com/undefined/graphs/contributors",
"William Pettersson": "https://github.com/undefined/graphs/contributors",
"coolsoft.rf": "https://github.com/undefined/graphs/contributors",
"kilin": "https://github.com/undefined/graphs/contributors",
"tytan652": "https://github.com/undefined/graphs/contributors",
"wwj402": "https://github.com/undefined/graphs/contributors"
},
"translator": {
"A Ismaili": "https://crowdin.com/profile/achimismaili",
"Adolfo Jayme": "https://crowdin.com/profile/fitoschido",
"Alex E. D. B.": "https://crowdin.com/profile/alexedb",
"Alexander Haffer": "https://crowdin.com/profile/AlexanderHaffer",
"AmirGhorbani_ir": "https://crowdin.com/profile/AmirGhorbani_ir",
"Arcan Yiğit Taşkan": "https://crowdin.com/profile/karamizahim",
"Artem": "https://crowdin.com/profile/Artem4ik",
"Arthur": "https://crowdin.com/profile/Skor_X",
"Aurora Robb Kristiansen": "https://crowdin.com/profile/Ridge",
"Billy_la_menace": "https://crowdin.com/profile/Symor",
"Boris Grigorov": "https://crowdin.com/profile/boris.grigorov26",
"Bruno Pinho": "https://crowdin.com/profile/BPinho",
"Byunghun An": "https://crowdin.com/profile/kloydhere",
"Cerbion": "https://crowdin.com/profile/Cerbion",
"Chris BDS": "https://crowdin.com/profile/HakuKaze",
"Claudio Alvez": "https://crowdin.com/profile/claudiogodofwar37",
"Claudio Nunes": "https://crowdin.com/profile/_claudionunes_",
"ColdusT": "https://crowdin.com/profile/ColdusT",
"CyberspeedCz": "https://crowdin.com/profile/CyberspeedCz",
"Damian Soler": "https://crowdin.com/profile/Under_RL",
"Dan Vasiliu": "https://crowdin.com/profile/dvasiliu",
"Danil Sarvensky": "https://crowdin.com/profile/sarvensky",
"David Zheng": "https://crowdin.com/profile/msdz",
"Daya Adianto": "https://crowdin.com/profile/addianto",
"Deadbringer": "https://crowdin.com/profile/Deadbringer",
"DmJacky": "https://crowdin.com/profile/DmJacky",
"Dmytro": "https://crowdin.com/profile/LinkinWires",
"Droidman": "https://crowdin.com/profile/Droidman",
"Dániel P.": "https://crowdin.com/profile/Daniii_",
"EDNVKjldr8vyu9": "https://crowdin.com/profile/EDNVKjldr8vyu9",
"EMRE ÇELİK": "https://crowdin.com/profile/emre0447",
"Ege Esin": "https://crowdin.com/profile/ege_e",
"Emanuel Messias, R.d.S.": "https://crowdin.com/profile/MessiasOF",
"Enrique Castillo": "https://crowdin.com/profile/ecastillo",
"Eryk Pazoła": "https://crowdin.com/profile/erykpaz2004",
"Fire KM127PL": "https://crowdin.com/profile/KM127PL",
"Francesco Maria Poerio": "https://crowdin.com/profile/fracchiomon",
"Frederico Maia": "https://crowdin.com/profile/omaster",
"Gabriele Arena": "https://crowdin.com/profile/teamexpert2013",
"Gol D. Ace": "https://crowdin.com/profile/goldace",
"Guillaume Turchini": "https://crowdin.com/profile/orion78fr",
"Hackebein": "https://crowdin.com/profile/Hackebein",
"Henry Agudelo": "https://crowdin.com/profile/hdagudelo",
"HiroOnGitHub": "https://crowdin.com/profile/HiroOnGithub",
"Holger Sinn": "https://crowdin.com/profile/Holger-Sinn",
"IT_Translator": "https://crowdin.com/profile/IT_Translator",
"Itukii": "https://crowdin.com/profile/Itukii",
"Ivo Sestren Junior": "https://crowdin.com/profile/IvoSestren",
"Janis Majors": "https://crowdin.com/profile/bobola",
"Jeffrey Chapuis": "https://crowdin.com/profile/ashyni1987",
"Jelmer": "https://crowdin.com/profile/Luxizzle",
"Jens Fischer": "https://crowdin.com/profile/JensFZ",
"Jessy HACHET": "https://crowdin.com/profile/jessy.hachet",
"Job Diógenes Ribeiro Borges": "https://crowdin.com/profile/jobdiogenes",
"Jonas Van den Abbeele": "https://crowdin.com/profile/jonasvda2006",
"Kevin Kandlbinder": "https://crowdin.com/profile/kevink",
"Kim Bech": "https://crowdin.com/profile/kimbech",
"Kokosnuss.exe": "https://crowdin.com/profile/KokosnussDEV",
"Krit789": "https://crowdin.com/profile/Krit789",
"Kurozumi": "https://crowdin.com/profile/Kurozumi",
"LANCERRR": "https://crowdin.com/profile/dongxujiayou88",
"LeNinjaHD": "https://crowdin.com/profile/LeNinjaHD",
"Leonardo Fries": "https://crowdin.com/profile/LeoNerdinho",
"Lifeely": "https://crowdin.com/profile/Lifeely",
"Loïc": "https://crowdin.com/profile/Ozachi",
"LucN31": "https://crowdin.com/profile/LucN31",
"Lucas Fernandez": "https://crowdin.com/profile/kasey-fr",
"Léo Roubaud": "https://crowdin.com/profile/hydargos",
"MIBAND": "https://crowdin.com/profile/LEMIBANDDEXARI",
"Maciej4535": "https://crowdin.com/profile/Maciej4535",
"Marcel Kuhla": "https://crowdin.com/profile/CandyPanda",
"Marco Túlio Pires": "https://crowdin.com/profile/mtrpires",
"Martin Hybner": "https://crowdin.com/profile/hybner",
"Mateusz Zych": "https://crowdin.com/profile/soruse",
"Michael Fabian Dirks": "https://crowdin.com/profile/Xaymar",
"Mikhail": "https://crowdin.com/profile/Migelius74",
"MkHere-YT": "https://crowdin.com/profile/MkHere",
"Mnr. Volkstaat": "https://crowdin.com/profile/malapradex",
"Monsteer": "https://crowdin.com/profile/Monsteer",
"Mr Gohst": "https://crowdin.com/profile/Gohst",
"NOYB": "https://crowdin.com/profile/NOYB",
"Nanito Morillas": "https://crowdin.com/profile/hellnano",
"Nawin Somprasong": "https://crowdin.com/profile/thaipirch98",
"Nikola Perović": "https://crowdin.com/profile/Fooftilly",
"Nobre HD": "https://crowdin.com/profile/NobreHD",
"Nooody FR": "https://crowdin.com/profile/nooodyfr",
"Orhan Elçi": "https://crowdin.com/profile/orhan.elci2003",
"Origami": "https://crowdin.com/profile/Origami",
"Peter Grindem": "https://crowdin.com/profile/1pete1",
"Proryanator": "https://crowdin.com/profile/Proryanator",
"Renaud G.": "https://crowdin.com/profile/obiwankennedy",
"RezQ": "https://crowdin.com/profile/RezQ",
"Richie Bendall": "https://crowdin.com/profile/richiebendall",
"Robin Tetour": "https://crowdin.com/profile/RobTheRealLifeAnimoo",
"Romeo Bunić": "https://crowdin.com/profile/Romz",
"SDUX1s44c": "https://crowdin.com/profile/SDUX1s44c",
"SKYQWER": "https://crowdin.com/profile/mine17288",
"SMG music display": "https://crowdin.com/profile/SMGMusicDisplay",
"Sade": "https://crowdin.com/profile/Sade",
"Sandschi": "https://crowdin.com/profile/sandschi",
"ScottInTokyo": "https://crowdin.com/profile/ScottInTokyo",
"Serhiy Dmytryshyn": "https://crowdin.com/profile/dies",
"Sjoer van der Ploeg": "https://crowdin.com/profile/sfjuocekr",
"StanislavPro": "https://crowdin.com/profile/StanislavPro",
"StarFang208": "https://crowdin.com/profile/StarFang208",
"Store": "https://crowdin.com/profile/HelaBasa",
"Syskoh": "https://crowdin.com/profile/Syskoh",
"Szymon Szewc": "https://crowdin.com/profile/szymonszewcjr",
"TOWUK": "https://crowdin.com/profile/towuk",
"ThePooN": "https://crowdin.com/profile/ThePooN",
"Thom Knepper": "https://crowdin.com/profile/MrKnepp",
"Tim Cordes": "https://crowdin.com/profile/t1mc0rd35",
"Toine Enzo": "https://crowdin.com/profile/toineenzo",
"TonyWin Somprasong": "https://crowdin.com/profile/mga1627",
"TorniX0": "https://crowdin.com/profile/TorniX0",
"Tuna": "https://crowdin.com/profile/zentoryny",
"Vane Brain": "https://crowdin.com/profile/vanebrain3",
"Viginox": "https://crowdin.com/profile/Viginox",
"WDK1337": "https://crowdin.com/profile/WDK1337",
"Wesley Pyburn (TechNobo)": "https://crowdin.com/profile/TcNobo",
"WhiteyChannel": "https://crowdin.com/profile/zvd.pro",
"WoWnik": "https://crowdin.com/profile/wownik98",
"Yoinks DBD": "https://crowdin.com/profile/izzyfazt",
"Yumis": "https://crowdin.com/profile/yumis84",
"Yurlyn": "https://crowdin.com/profile/Yurlyn",
"ZHANGEN": "https://crowdin.com/profile/ZHANGEN",
"Zero Team": "https://crowdin.com/profile/ZERO_TEAM",
"Zoop": "https://crowdin.com/profile/Zoop",
"bruh": "https://crowdin.com/profile/noobumpls",
"code.sport": "https://crowdin.com/profile/code.sport",
"erichardouin": "https://crowdin.com/profile/erichardouin",
"eskori": "https://crowdin.com/profile/eskori",
"exeldro": "https://crowdin.com/profile/exeldro",
"itsolutek": "https://crowdin.com/profile/itsolutek",
"jh KIm": "https://crowdin.com/profile/kkhmn1",
"kkk12955": "https://crowdin.com/profile/kkk12955",
"lukazivanovic": "https://crowdin.com/profile/lukazivanovic",
"mochaaP": "https://crowdin.com/profile/mochaaP",
"mudse": "https://crowdin.com/profile/mudse",
"multi.flexi": "https://crowdin.com/profile/multi.flexi",
"mwessen": "https://crowdin.com/profile/sh3ph3r6",
"ozaki": "https://crowdin.com/profile/OzakIOne",
"petro770": "https://crowdin.com/profile/petro770",
"rufus20145": "https://crowdin.com/profile/rufus20145",
"sasagar": "https://crowdin.com/profile/sasagar",
"sasha2002": "https://crowdin.com/profile/sasha2002",
"saygo1125": "https://crowdin.com/profile/saygo1125",
"shugen002": "https://crowdin.com/profile/shugen002",
"spring jungle": "https://crowdin.com/profile/springjungle",
"tpo0508": "https://crowdin.com/profile/tpo0508",
"tytan652": "https://crowdin.com/profile/tytan652",
"wwj402_github": "https://crowdin.com/profile/wwj402_github",
"xaymarsdaddy": "https://crowdin.com/profile/xaymarsdaddy",
"yuvuwj": "https://crowdin.com/profile/yuvuwj",
"Вадим Казанцев": "https://crowdin.com/profile/Rutboy",
"Вадим Якшин": "https://crowdin.com/profile/tayler2013",
"Денис Полозихин": "https://crowdin.com/profile/denispolozihin",
"Евгений Шестяков": "https://crowdin.com/profile/anfogor",
"十六夜楓": "https://crowdin.com/profile/fy1208557958",
"시공의 폭풍": "https://crowdin.com/profile/parkjh030746"
},
"supporter": {
"github": {
"DJNOCTUS": "https://github.com/DJNOCTUS",
"FateOfNines": "https://github.com/FateOfNines",
"GranDroidTonight": "https://github.com/GranDroidTonight",
"Harmansingh1397": "https://github.com/Harmansingh1397",
"Hugo Denizart": "https://github.com/ThePooN",
"Joe Kluch": "https://github.com/jkluch",
"Joefis-x20s": "https://github.com/Joefis-x20s",
"LagaV": "https://github.com/LagaV",
"M*C*O": "https://github.com/MCOfficer",
"MEKKER": "https://github.com/MEKKERMB",
"Maxwell Bloch": "https://github.com/maxwellb",
"Noora": "https://github.com/noorus",
"Pabloss1987": "https://github.com/Pabloss1987",
"Raidenex": "https://github.com/Raidenex",
"Stealthlips": "https://github.com/Stealthlips",
"TheB1gG": "https://github.com/TheB1gG",
"Tim": "https://github.com/elricco",
"Travis Crawford": "https://github.com/traviscrawford85",
"VensireStudios": "https://github.com/VensireStudios",
"blackmoon1910": "https://github.com/blackmoon1910",
"jTRN2x0": "https://github.com/jTRN2x0",
"kevinfrogernl": "https://github.com/kevinfrogernl",
"mbWebsolution": "https://github.com/mbWebsolution",
"oshiteku": "https://github.com/oshiteku",
"pirahtays": "https://github.com/pirahtays",
"wild-wild-fibsh": "https://github.com/wild-wild-fibsh"
},
"patreon": {
"Aaron ": "https://www.patreon.com/user/creators?u=22565926",
"Abs": "https://www.patreon.com/user/creators?u=63196404",
"Adam Dangerbeard": "https://www.patreon.com/user/creators?u=5048919",
"Adel Toay": "https://www.patreon.com/user/creators?u=58184164",
"Alexandre Cyr": "https://www.patreon.com/user/creators?u=8576328",
"And We're Live! PreZZure": "https://www.patreon.com/user/creators?u=49966803",
"Bastian Koyro": "https://www.patreon.com/user/creators?u=5086308",
"Ben Vosburgh": "https://www.patreon.com/user/creators?u=4062691",
"Benjamin Hoffmeister": "https://www.patreon.com/user/creators?u=5087057",
"Bjarke Kongstad": "https://www.patreon.com/user/creators?u=10147732",
"Brownie ": "https://www.patreon.com/user/creators?u=29687375",
"Brutus Shearer": "https://www.patreon.com/user/creators?u=53110694",
"Chris Lynch": "https://www.patreon.com/user/creators?u=3921522",
"Cory Goodwin": "https://www.patreon.com/user/creators?u=58410833",
"Craft Computing": "https://www.patreon.com/user/creators?u=7422105",
"Ct84FUASk5bFstq": "https://www.patreon.com/user/creators?u=41874925",
"D_Girl ": "https://www.patreon.com/user/creators?u=3625413",
"David Bixler": "https://www.patreon.com/user/creators?u=5429239",
"David Do": "https://www.patreon.com/user/creators?u=32255073",
"Dean Barclay": "https://www.patreon.com/user/creators?u=9449350",
"DrunKev ": "https://www.patreon.com/user/creators?u=26063390",
"Dustin Deatherage": "https://www.patreon.com/user/creators?u=63380532",
"Ebony Zinnack": "https://www.patreon.com/user/creators?u=31612990",
"EmeraIdCola ": "https://www.patreon.com/user/creators?u=27503685",
"Eric Dieter Hesselbach": "https://www.patreon.com/user/creators?u=35660482",
"Formica": "https://www.patreon.com/user/creators?u=2442057",
"Gary Griffith": "https://www.patreon.com/user/creators?u=49564527",
"Gimli Son Of Gloin": "https://www.patreon.com/user/creators?u=34065035",
"Gronkh ": "https://www.patreon.com/user/creators?u=2617905",
"Hana Pestle": "https://www.patreon.com/user/creators?u=33587406",
"How to Drink": "https://www.patreon.com/user/creators?u=6391455",
"Héctor Rivera": "https://www.patreon.com/user/creators?u=20884936",
"JeffCraig ": "https://www.patreon.com/user/creators?u=3214093",
"Jerod Bennett": "https://www.patreon.com/user/creators?u=471437",
"Joe Dougherty": "https://www.patreon.com/user/creators?u=929557",
"Jon Petermann": "https://www.patreon.com/user/creators?u=63931570",
"Jonathan Gilligan": "https://www.patreon.com/user/creators?u=16212519",
"Jonathan Perkins": "https://www.patreon.com/user/creators?u=35345012",
"Joseph Estes": "https://www.patreon.com/user/creators?u=31240177",
"Juncker ": "https://www.patreon.com/user/creators?u=25351345",
"Justin Ruiz": "https://www.patreon.com/user/creators?u=61134357",
"Kei Foster": "https://www.patreon.com/user/creators?u=3252261",
"Kim Bech": "https://www.patreon.com/user/creators?u=4473266",
"KrisCheetah ": "https://www.patreon.com/user/creators?u=5208869",
"Lash LaRue": "https://www.patreon.com/user/creators?u=27497287",
"Manus O'Donnell": "https://www.patreon.com/user/creators?u=10969884",
"Martin Wimpress": "https://www.patreon.com/user/creators?u=2780761",
"Matt Calabrese": "https://www.patreon.com/user/creators?u=2410405",
"Michael Haßfurther": "https://www.patreon.com/user/creators?u=54198386",
"Mikaykaybooboo": "https://www.patreon.com/user/creators?u=55606570",
"Mike King": "https://www.patreon.com/user/creators?u=2824850",
"MrLiveProducer": "https://www.patreon.com/user/creators?u=283535",
"MyNameIsJeff ": "https://www.patreon.com/user/creators?u=26176738",
"Neil Gaddie": "https://www.patreon.com/user/creators?u=53600538",
"Nik Wright": "https://www.patreon.com/user/creators?u=64748110",
"Noah": "https://www.patreon.com/user/creators?u=28561459",
"Nordern ": "https://www.patreon.com/user/creators?u=6970809",
"Owen Quinlan": "https://www.patreon.com/user/creators?u=25383903",
"Pascal Jean": "https://www.patreon.com/user/creators?u=59781622",
"Peter Donaghy": "https://www.patreon.com/user/creators?u=50612254",
"Peter van Kalleveen": "https://www.patreon.com/user/creators?u=59122352",
"Raiden": "https://www.patreon.com/user/creators?u=9645671",
"Roman Jacob Concordia": "https://www.patreon.com/user/creators?u=58076170",
"Ryan Hopkins": "https://www.patreon.com/user/creators?u=3819264",
"SadeN.moe ": "https://www.patreon.com/user/creators?u=8930949",
"Sean ": "https://www.patreon.com/user/creators?u=2382106",
"Sean Willeboordse": "https://www.patreon.com/user/creators?u=9419328",
"Shadowy": "https://www.patreon.com/user/creators?u=23349012",
"SigmaH20 .": "https://www.patreon.com/user/creators?u=34295895",
"Simon Vacker": "https://www.patreon.com/user/creators?u=516915",
"StealthCT ": "https://www.patreon.com/user/creators?u=5055600",
"UpDownLeftDie ": "https://www.patreon.com/user/creators?u=13992640",
"Zep Brattesani": "https://www.patreon.com/user/creators?u=915823",
"asdkola": "https://www.patreon.com/user/creators?u=49505113",
"blyt": "https://www.patreon.com/user/creators?u=47035760",
"hikaruXwiiwalker": "https://www.patreon.com/user/creators?u=152960",
"iamresist ": "https://www.patreon.com/user/creators?u=19164596",
"norlife ": "https://www.patreon.com/user/creators?u=11953551",
"ragesaq": "https://www.patreon.com/user/creators?u=34519727",
"reelmccoy ": "https://www.patreon.com/user/creators?u=2454633",
"sid sawyer": "https://www.patreon.com/user/creators?u=34103367",
"trus0und": "https://www.patreon.com/user/creators?u=43845831",
"tsukasa": "https://www.patreon.com/user/creators?u=23383875",
"zachary harrisson": "https://www.patreon.com/user/creators?u=61387322"
}
}
}

1
tools/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/node_modules

View File

@ -0,0 +1,30 @@
const PATH = require("path");
const FS = require("fs/promises");
const CSV = require("csv");
(async () => {
const parser = CSV.parse(
await FS.readFile(process.argv[2]),
{
columns: true
}
);
let unsorted_users = {};
for await(const record of parser) {
unsorted_users[record['Name']] = `https://www.patreon.com/user/creators?u=${record['User ID']}`;
}
let users = {};
let keys = Object.keys(unsorted_users);
for (let key of keys.sort()) {
users[key] = unsorted_users[key];
}
FS.writeFile(
PATH.join(__dirname, "patch-supporters-patreon.json"),
JSON.stringify(users, undefined, '\t'),
{
encoding: 'utf8'
}
);
})();

View File

@ -0,0 +1,329 @@
const HTTPS = require("https");
const PATH = require("path");
const FS = require("fs/promises");
const CHILD_PROCESS = require("child_process");
function query_git() {
// git shortlog -sn --all | sed -E "s/^\W+[0-9]+\W+//"
return (async () => {
let users = new Map();
let git = new Promise((resolve, reject) => {
try {
const child = CHILD_PROCESS.spawn('git', ['shortlog', '-sn', '--all']);
let sout = "";
child.stdout.setEncoding('utf8');
child.stdout.on('data', (data) => {
sout += data;
});
let serr = "";
child.stderr.setEncoding('utf8');
child.stderr.on('data', (data) => {
serr += data;
});
child.on('close', (code) => {
if (code != 0) {
reject([code, serr]);
} else {
resolve(sout);
}
});
} catch (e) {
reject(e);
}
});
let result = await git;
let lines = result.matchAll(/^[\s]+([0-9]+)[\s]+(.+)$/gim);
for (let line of lines) {
let name = line[2];
if (!users.has(name)) {
users.set(name, `https://github.com/${process.env.GITHUB_REPOSITORY}/graphs/contributors`)
}
}
return users;
})();
}
function query_crowdin(project_id, project_auth_key) {
const limit = 100;
function _query_page(page) {
return new Promise((resolve, reject) => {
try {
let query = {
protocol: "https:",
host: "crowdin.com",
path: `/api/v2/projects/${project_id}/members?limit=${limit}&offset=${page * limit}`,
method: "GET",
headers: {
"accept": "application/json",
"authorization": `Bearer ${project_auth_key}`
}
};
let req = HTTPS.request(query, (res) => {
let data = "";
res.setEncoding('utf8');
res.on('data', (chunk) => {
data += chunk;
});
res.on('end', () => {
res.data = data;
resolve(res);
});
});
req.end();
} catch (e) {
reject(e);
}
});
}
return (async () => {
let page_is_last = false;
let page = 0;
let users = new Map();
while (!page_is_last) {
let res = await _query_page(page++);
if (res.statusCode == 200) {
let json = JSON.parse(res.data);
let count = json.data.length;
for (let user of json.data) {
// Don't credit blocked users for work not done.
if (user.data.role == 'blocked') {
continue;
}
let key = (user.data.fullName !== null) && (user.data.fullName !== undefined) && (user.data.fullName.length > 0) ? user.data.fullName : user.data.username;
users.set(key, `https://crowdin.com/profile/${user.data.username}`);
}
page_is_last = (count < limit);
} else {
throw new Error(JSON.parse(res.data));
}
}
return users;
})();
}
function query_github_sponsors(auth_token) {
const HTTPS = require("https");
let build_query = function (cursor) {
if (cursor === undefined) {
return `query {
viewer {
sponsors(after: null, first: 0) {
totalCount
}
}
}`;
} else {
return `query {
viewer {
sponsors(after: ${typeof (cursor) == "string" ? `"${cursor}"` : "null"}, first: 100) {
nodes {
__typename
... on User {
resourcePath
login
name
}
... on Organization {
resourcePath
login
name
}
}
pageInfo {
endCursor
startCursor
}
}
}
}`;
}
}
let do_query = function (schema) {
return new Promise((resolve, reject) => {
let text_query = JSON.stringify({ query: schema });
let request = HTTPS.request(
"https://api.github.com/graphql",
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': `bearer ${auth_token}`,
'User-Agent': 'Node.JS'
},
}, (res) => {
let data = "";
res.setEncoding('utf8');
res.on('data', (chunk) => {
data += chunk;
});
res.on('error', () => {
reject();
});
res.on('end', () => {
res.data = JSON.parse(data);
resolve(res);
});
});
request.write(text_query);
request.end();
})
}
return (async () => {
let users = new Map();
let total = 0;
// Find the total amount.
{
let query = build_query();
let response = await do_query(query);
let data = response.data.data;
total = data.viewer.sponsors.totalCount;
}
// Index by page, in 100 user increments.
let cursor = null;
for (let idx = 0, edx = total; idx < edx; idx += 100) {
let query = build_query(cursor);
let response = await do_query(query);
let data = response.data.data;
// Insert data info Map.
for (let entry of data.viewer.sponsors.nodes) {
let name = entry.login;
if (typeof (entry.name) === "string") {
name = entry.name;
}
users.set(name, `https://github.com${entry.resourcePath}`);
}
// Update cursor for further queries.
cursor = data.viewer.sponsors.pageInfo.endCursor;
}
return users;
})();
}
(async () => {
let json = {};
let markdown = `# StreamFX Contributors & Supporters
## Contributors
`;
// Contributors
{// - Git
markdown += `### Code, Media
Thanks go to the following people, who have either wrangled with code or wrangled with image editors while saving often in the hopes of not losing any changes:
`;
json.contributor = {};
let info = await query_git();
let extra = JSON.parse(await FS.readFile(PATH.join(__dirname, "patch-contributors-git.json")));
for (let key in extra) {
info.set(key, extra[key]);
}
for (let key of Array.from(info.keys()).sort()) {
let value = info.get(key);
json.contributor[key] = value;
markdown += `* [${key}](${value})\n`;
}
markdown += "\n";
}
{// - Crowdin
markdown += `### Translators
[StreamFX relies on crowd-sourced translations to be available in your language.](https://github.com/Xaymar/obs-StreamFX/issues/36) Much thanks go out to all volunteer translators who have taken some time to submit translations on Crowdin.
`;
json.translator = {};
let info = await query_crowdin(process.env.CROWDIN_PROJECTID, process.env.CROWDIN_TOKEN);
let extra = JSON.parse(await FS.readFile(PATH.join(__dirname, "patch-contributors-git.json")));
for (let key in extra) {
info.set(key, extra[key]);
}
for (let key of Array.from(info.keys()).sort()) {
let value = info.get(key);
json.translator[key] = value;
markdown += `* [${key}](${value})\n`;
}
markdown += "\n";
}
// Supporters
markdown += `## Supporters
The StreamFX project relies on generous donations from you through [Patreon](https://patreon.com/xaymar), [GitHub](https://github.com/sponsors/xaymar) or [PayPal](https://paypal.me/xaymar). Huge thanks go out to the following people for supporting StreamFX:
`;
json.supporter = {}
{// - GitHub
markdown += `### GitHub Sponsors
`;
json.supporter.github = {};
let info = await query_github_sponsors(process.env.GITHUB_TOKEN);
let extra = JSON.parse(await FS.readFile(PATH.join(__dirname, "patch-supporters-github.json")));
for (let key in extra) {
info.set(key, extra[key]);
}
for (let key of Array.from(info.keys()).sort()) {
let value = info.get(key);
json.supporter.github[key] = value;
markdown += `* [${key}](${value})\n`;
}
markdown += "\n";
}
{// - Patreon
// TODO: How do we OAuth without OAuth?!
markdown += `### Patreon Patrons
`;
json.supporter.patreon = {};
let info = new Map();
let extra = JSON.parse(await FS.readFile(PATH.join(__dirname, "patch-supporters-patreon.json")));
for (let key in extra) {
info.set(key, extra[key]);
}
for (let key of Array.from(info.keys()).sort()) {
let value = info.get(key);
json.supporter.patreon[key] = value;
markdown += `* [${key}](${value})\n`;
}
markdown += "\n";
}
// Write Markdown file
FS.writeFile(process.argv[2],
markdown,
{
encoding: 'utf8'
}
)
// Write JSON file
FS.writeFile(process.argv[3],
JSON.stringify(json, undefined, '\t'),
{
encoding: 'utf8'
}
)
})();

79
tools/package-lock.json generated Normal file
View File

@ -0,0 +1,79 @@
{
"name": "tools",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"dependencies": {
"csv": "^6.0.4"
}
},
"node_modules/csv": {
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/csv/-/csv-6.0.4.tgz",
"integrity": "sha512-v/7cLK2clZ0QpAc+/1Bl+IF3U7Cxn0oszck+tJmnM2dC7yYPUz5A/i3r2ARkaVpd3RcAzOgTh94ISGzyfF/7XQ==",
"dependencies": {
"csv-generate": "^4.0.3",
"csv-parse": "^5.0.3",
"csv-stringify": "^6.0.4",
"stream-transform": "^3.0.3"
},
"engines": {
"node": ">= 0.1.90"
}
},
"node_modules/csv-generate": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-4.0.3.tgz",
"integrity": "sha512-BLkPf0MkFfPGNNkqjnT16aNMMHUrbbguDE0pMPDcqrBeMoPOKw04dPl1VNQd6+j/JjmrXjQfFKgz6p3FT+bJFA=="
},
"node_modules/csv-parse": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.0.3.tgz",
"integrity": "sha512-86R0WU4aEEF/1fPZKxP3NmDAYC4Ce1t9iFgKPZogG5Lvk4m9WZQkCEsDANktG29jppejwclTtEOzubN2ieCJqw=="
},
"node_modules/csv-stringify": {
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.0.4.tgz",
"integrity": "sha512-Z3EbRQWwkOV3Qc2fQnJmfjrxRgAwH9AncnNK2jmtTvBvFjj/hESZUGm42YvTh9kMw2OOGPHQn5Yt0EbqoRtUVQ=="
},
"node_modules/stream-transform": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-3.0.3.tgz",
"integrity": "sha512-LU+lJFT1/slgy9Yvgdr21D6PAxm1O7KoEWmXWwiqAHsocbF7woPF0xBXDGuqRycTV3tcrLq0zk+5LhjgCgI3KQ=="
}
},
"dependencies": {
"csv": {
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/csv/-/csv-6.0.4.tgz",
"integrity": "sha512-v/7cLK2clZ0QpAc+/1Bl+IF3U7Cxn0oszck+tJmnM2dC7yYPUz5A/i3r2ARkaVpd3RcAzOgTh94ISGzyfF/7XQ==",
"requires": {
"csv-generate": "^4.0.3",
"csv-parse": "^5.0.3",
"csv-stringify": "^6.0.4",
"stream-transform": "^3.0.3"
}
},
"csv-generate": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-4.0.3.tgz",
"integrity": "sha512-BLkPf0MkFfPGNNkqjnT16aNMMHUrbbguDE0pMPDcqrBeMoPOKw04dPl1VNQd6+j/JjmrXjQfFKgz6p3FT+bJFA=="
},
"csv-parse": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.0.3.tgz",
"integrity": "sha512-86R0WU4aEEF/1fPZKxP3NmDAYC4Ce1t9iFgKPZogG5Lvk4m9WZQkCEsDANktG29jppejwclTtEOzubN2ieCJqw=="
},
"csv-stringify": {
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.0.4.tgz",
"integrity": "sha512-Z3EbRQWwkOV3Qc2fQnJmfjrxRgAwH9AncnNK2jmtTvBvFjj/hESZUGm42YvTh9kMw2OOGPHQn5Yt0EbqoRtUVQ=="
},
"stream-transform": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-3.0.3.tgz",
"integrity": "sha512-LU+lJFT1/slgy9Yvgdr21D6PAxm1O7KoEWmXWwiqAHsocbF7woPF0xBXDGuqRycTV3tcrLq0zk+5LhjgCgI3KQ=="
}
}
}

5
tools/package.json Normal file
View File

@ -0,0 +1,5 @@
{
"dependencies": {
"csv": "^6.0.4"
}
}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1 @@
{}

View File

@ -0,0 +1,86 @@
{
"Aaron ": "https://www.patreon.com/user/creators?u=22565926",
"Abs": "https://www.patreon.com/user/creators?u=63196404",
"Adam Dangerbeard": "https://www.patreon.com/user/creators?u=5048919",
"Adel Toay": "https://www.patreon.com/user/creators?u=58184164",
"Alexandre Cyr": "https://www.patreon.com/user/creators?u=8576328",
"And We're Live! PreZZure": "https://www.patreon.com/user/creators?u=49966803",
"Bastian Koyro": "https://www.patreon.com/user/creators?u=5086308",
"Ben Vosburgh": "https://www.patreon.com/user/creators?u=4062691",
"Benjamin Hoffmeister": "https://www.patreon.com/user/creators?u=5087057",
"Bjarke Kongstad": "https://www.patreon.com/user/creators?u=10147732",
"Brownie ": "https://www.patreon.com/user/creators?u=29687375",
"Brutus Shearer": "https://www.patreon.com/user/creators?u=53110694",
"Chris Lynch": "https://www.patreon.com/user/creators?u=3921522",
"Cory Goodwin": "https://www.patreon.com/user/creators?u=58410833",
"Craft Computing": "https://www.patreon.com/user/creators?u=7422105",
"Ct84FUASk5bFstq": "https://www.patreon.com/user/creators?u=41874925",
"D_Girl ": "https://www.patreon.com/user/creators?u=3625413",
"David Bixler": "https://www.patreon.com/user/creators?u=5429239",
"David Do": "https://www.patreon.com/user/creators?u=32255073",
"Dean Barclay": "https://www.patreon.com/user/creators?u=9449350",
"DrunKev ": "https://www.patreon.com/user/creators?u=26063390",
"Dustin Deatherage": "https://www.patreon.com/user/creators?u=63380532",
"Ebony Zinnack": "https://www.patreon.com/user/creators?u=31612990",
"EmeraIdCola ": "https://www.patreon.com/user/creators?u=27503685",
"Eric Dieter Hesselbach": "https://www.patreon.com/user/creators?u=35660482",
"Formica": "https://www.patreon.com/user/creators?u=2442057",
"Gary Griffith": "https://www.patreon.com/user/creators?u=49564527",
"Gimli Son Of Gloin": "https://www.patreon.com/user/creators?u=34065035",
"Gronkh ": "https://www.patreon.com/user/creators?u=2617905",
"Hana Pestle": "https://www.patreon.com/user/creators?u=33587406",
"How to Drink": "https://www.patreon.com/user/creators?u=6391455",
"Héctor Rivera": "https://www.patreon.com/user/creators?u=20884936",
"JeffCraig ": "https://www.patreon.com/user/creators?u=3214093",
"Jerod Bennett": "https://www.patreon.com/user/creators?u=471437",
"Joe Dougherty": "https://www.patreon.com/user/creators?u=929557",
"Jon Petermann": "https://www.patreon.com/user/creators?u=63931570",
"Jonathan Gilligan": "https://www.patreon.com/user/creators?u=16212519",
"Jonathan Perkins": "https://www.patreon.com/user/creators?u=35345012",
"Joseph Estes": "https://www.patreon.com/user/creators?u=31240177",
"Juncker ": "https://www.patreon.com/user/creators?u=25351345",
"Justin Ruiz": "https://www.patreon.com/user/creators?u=61134357",
"Kei Foster": "https://www.patreon.com/user/creators?u=3252261",
"Kim Bech": "https://www.patreon.com/user/creators?u=4473266",
"KrisCheetah ": "https://www.patreon.com/user/creators?u=5208869",
"Lash LaRue": "https://www.patreon.com/user/creators?u=27497287",
"Manus O'Donnell": "https://www.patreon.com/user/creators?u=10969884",
"Martin Wimpress": "https://www.patreon.com/user/creators?u=2780761",
"Matt Calabrese": "https://www.patreon.com/user/creators?u=2410405",
"Michael Haßfurther": "https://www.patreon.com/user/creators?u=54198386",
"Mikaykaybooboo": "https://www.patreon.com/user/creators?u=55606570",
"Mike King": "https://www.patreon.com/user/creators?u=2824850",
"MrLiveProducer": "https://www.patreon.com/user/creators?u=283535",
"MyNameIsJeff ": "https://www.patreon.com/user/creators?u=26176738",
"Neil Gaddie": "https://www.patreon.com/user/creators?u=53600538",
"Nik Wright": "https://www.patreon.com/user/creators?u=64748110",
"Noah": "https://www.patreon.com/user/creators?u=28561459",
"Nordern ": "https://www.patreon.com/user/creators?u=6970809",
"Owen Quinlan": "https://www.patreon.com/user/creators?u=25383903",
"Pascal Jean": "https://www.patreon.com/user/creators?u=59781622",
"Peter Donaghy": "https://www.patreon.com/user/creators?u=50612254",
"Peter van Kalleveen": "https://www.patreon.com/user/creators?u=59122352",
"Raiden": "https://www.patreon.com/user/creators?u=9645671",
"Roman Jacob Concordia": "https://www.patreon.com/user/creators?u=58076170",
"Ryan Hopkins": "https://www.patreon.com/user/creators?u=3819264",
"SadeN.moe ": "https://www.patreon.com/user/creators?u=8930949",
"Sean ": "https://www.patreon.com/user/creators?u=2382106",
"Sean Willeboordse": "https://www.patreon.com/user/creators?u=9419328",
"Shadowy": "https://www.patreon.com/user/creators?u=23349012",
"SigmaH20 .": "https://www.patreon.com/user/creators?u=34295895",
"Simon Vacker": "https://www.patreon.com/user/creators?u=516915",
"StealthCT ": "https://www.patreon.com/user/creators?u=5055600",
"UpDownLeftDie ": "https://www.patreon.com/user/creators?u=13992640",
"Zep Brattesani": "https://www.patreon.com/user/creators?u=915823",
"asdkola": "https://www.patreon.com/user/creators?u=49505113",
"blyt": "https://www.patreon.com/user/creators?u=47035760",
"hikaruXwiiwalker": "https://www.patreon.com/user/creators?u=152960",
"iamresist ": "https://www.patreon.com/user/creators?u=19164596",
"norlife ": "https://www.patreon.com/user/creators?u=11953551",
"ragesaq": "https://www.patreon.com/user/creators?u=34519727",
"reelmccoy ": "https://www.patreon.com/user/creators?u=2454633",
"sid sawyer": "https://www.patreon.com/user/creators?u=34103367",
"trus0und": "https://www.patreon.com/user/creators?u=43845831",
"tsukasa": "https://www.patreon.com/user/creators?u=23383875",
"zachary harrisson": "https://www.patreon.com/user/creators?u=61387322"
}