boxmoe_header_banner_img

Hello! 欢迎来到LLsdogのblog!

加载中

文章导读

通过GitHub的Api统计某用户拥有的存储库主要语言


avatar
llsdog 2025年8月13日 886

GitHub存储库地址
最近为了过一张全栈学习路线的检查点,随便写了一个网页的Demo出来

路线图网址

// Get Username activities
async function getUserActivities(username) {
    try {
        //fetch repos
        const response = await fetch(`https://api.github.com/users/${username}/repos`, {
            headers: {
                'Accept': 'application/vnd.github.v3+json'
            }
        });

        //check response
        if (!response.ok) {
            throw new Error(`视奸失败!Github朝你扔过来了一个${response.status}`);
        }

        //Parse data
        const repos = await response.json();
        const langs = {};

        repos.forEach(repo => {
            const lang = repo.language;
            if (lang) {
                langs[lang] = (langs[lang] || 0) + 1;
            }
        });

        //A magic algorithm
        return Object.entries(langs).sort((a, b) => b[1] - a[1]);
    } catch (e) {
        console.log(e);
    }
}

//form action
document.getElementById('search-form').addEventListener('submit', async function (event) {
    event.preventDefault();

    const username = this.querySelector('input').value;
    if (!username) return;

    const rankDir = document.getElementById('rank');
    rankDir.innerHTML = '';

    try {
        const sortedLangs = await getUserActivities(username);
        sortedLangs.forEach(([lang, count]) => {
            rankDir.insertAdjacentHTML('beforeend',
                `<div class="bg-white m-2 p-1">
                    <span>${username} 的所有存储库中主要使用了 ${count} 次 ${lang}</span>
                </div>`
            );
        });
    } catch (e) {
        console.error(e);
    }
})

逻辑很简单, 就是从HTML表单中拿取username, 然后匿名与GitHubApi交互, 拿到的数据经过字典排序, 按顺序输出在HTML里就行了, 我的想在后面的更新中, 把一个用户所有的信息都盒完, 然后制成不同游戏风格的战绩统计图🤔
如果大家有更多可实现的想法可以说一声, 或者直接一起来参与制作, 唉, 又幻想了, 幻想有人能来一起制作乐子

感谢您的支持
微信赞赏

微信扫一扫

支付宝赞赏

支付宝扫一扫



评论(1)

查看评论列表
评论头像
lkv 2025年08月26日
啊呦,你找了

发表评论

表情 颜文字
插入代码
llsdog的博客

MP3

封面
Blue Dragon
泽野弘之
0:00 0:00
播放列表 (3)
封面
Blue Dragon
泽野弘之
--:--
封面
For River
Kan R. Gao
--:--
封面
春弦
塞壬唱片-MSR
--:--

广告

这里不送忍法帖,孩子