57 lines
1.5 KiB
JavaScript
57 lines
1.5 KiB
JavaScript
(async () => {
|
|
const script = document.currentScript;
|
|
const repoURL = script?.getAttribute("data-repo-url");
|
|
const repoId = script?.getAttribute("data-repo-id");
|
|
|
|
if (!repoURL || !repoId) return;
|
|
|
|
const platforms = {
|
|
github: {
|
|
full_name: "full_name",
|
|
description: "description",
|
|
stargazers_count: "stargazers",
|
|
forks: "forks",
|
|
},
|
|
gitlab: {
|
|
name_with_namespace: "name_with_namespace",
|
|
description: "description",
|
|
star_count: "star_count",
|
|
forks_count: "forks_count",
|
|
},
|
|
gitea: {
|
|
full_name: "full_name",
|
|
description: "description",
|
|
stars_count: "stars_count",
|
|
forks_count: "forks_count",
|
|
},
|
|
codeberg: {
|
|
full_name: "full_name",
|
|
description: "description",
|
|
stars_count: "stars_count",
|
|
forks_count: "forks_count",
|
|
},
|
|
forgejo: {
|
|
full_name: "full_name",
|
|
description: "description",
|
|
stars_count: "stars_count",
|
|
forks_count: "forks_count",
|
|
},
|
|
};
|
|
|
|
const platform = Object.keys(platforms).find((p) => repoId.startsWith(p)) || "github";
|
|
const mapping = platforms[platform];
|
|
|
|
try {
|
|
const response = await fetch(repoURL, {
|
|
headers: { "User-agent": "Mozilla/4.0 Custom User Agent" },
|
|
});
|
|
const data = await response.json();
|
|
|
|
Object.entries(mapping).forEach(([dataField, elementSuffix]) => {
|
|
const element = document.getElementById(`${repoId}-${elementSuffix}`);
|
|
if (element) element.innerHTML = data[dataField];
|
|
});
|
|
} catch (error) {
|
|
console.error(error);
|
|
}
|
|
})();
|