123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import { doRequest } from '../server/helpers/requests'
- import { readFileSync } from 'fs-extra'
- run()
- .then(() => process.exit(0))
- .catch(err => {
- console.error(err)
- process.exit(-1)
- })
- async function run () {
- {
- const contributors = await fetchGithub('https://api.github.com/repos/chocobozzz/peertube/contributors')
- console.log('# Code\n')
- for (const contributor of contributors) {
- const contributorUrl = contributor.url.replace('api.github.com/users', 'github.com')
- console.log(` * [${contributor.login}](${contributorUrl})`)
- }
- }
- {
- const zanataConfig = readFileSync(require('os').homedir() + '/.config/zanata.ini').toString()
- const zanataUsername = zanataConfig.match('.username=([^\n]+)')[1]
- const zanataToken = zanataConfig.match('.key=([^\n]+)')[1]
- const translators = await fetchZanata(zanataUsername, zanataToken)
- console.log('\n\n# Translations\n')
- for (const translator of translators) {
- console.log(` * [${translator.username}](https://trad.framasoft.org/zanata/profile/view/${translator.username})`)
- }
- }
- {
- console.log('\n\n# Design\n')
- console.log(' * [Olivier Massain](https://twitter.com/omassain)')
- console.log('\n\n# Icons\n')
- console.log(' * [Robbie Pearce](https://robbiepearce.com/softies/)')
- console.log(' * [Fork-Awesome](https://github.com/ForkAwesome/Fork-Awesome)')
- console.log(' * playlist add by Google')
- }
- }
- function get (url: string, headers: any = {}) {
- return doRequest<any>({
- uri: url,
- json: true,
- headers: Object.assign(headers, {
- 'User-Agent': 'PeerTube-App'
- })
- }).then(res => res.body)
- }
- async function fetchGithub (url: string) {
- let next = url
- let allResult = []
- let i = 1
- // Hard limit
- while (i < 20) {
- const result = await get(next + '?page=' + i)
- if (result.length === 0) break
- allResult = allResult.concat(result)
- i++
- }
- return allResult
- }
- async function fetchZanata (zanataUsername: string, zanataPassword: string) {
- const today = new Date().toISOString().split('T')[0]
- const year2018 = `https://trad.framasoft.org/zanata/rest/project/peertube/version/develop/contributors/2018-01-01..2019-01-01`
- const year2019 = `https://trad.framasoft.org/zanata/rest/project/peertube/version/develop/contributors/2019-01-01..${today}`
- const headers = {
- 'X-Auth-User': zanataUsername,
- 'X-Auth-Token': zanataPassword
- }
- const [ results2018, results2019 ] = await Promise.all([
- get(year2018, headers),
- get(year2019, headers)
- ])
- return results2018.concat(results2019)
- }
|