-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
32 lines (26 loc) · 945 Bytes
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
require('dotenv').config();
const { Octokit } = require("@octokit/rest");
if (!process.env.GITHUB_AUTH_TOKEN) {
throw new Error("Environment variable GITHUB_AUTH_TOKEN is not set");
}
const octokit = new Octokit({ auth: process.env.GITHUB_AUTH_TOKEN });
async function fetchRepoData() {
const repos = await octokit.repos.listForAuthenticatedUser({ per_page: 100 });
return repos.data;
}
async function fetchTrafficData(owner, name) {
const traffic = await octokit.repos.getViews({ owner, repo: name });
return traffic.data;
}
async function main() {
const repos = await fetchRepoData();
console.log('repo_name,stars,views,uniques');
for (let repo of repos) {
if (repo.private) {
continue;
}
const traffic = await fetchTrafficData(repo.owner.login, repo.name);
console.log(`${repo.full_name},${repo.stargazers_count},${traffic.count},${traffic.uniques}`)
}
}
main().catch(err => console.error(err));