diff --git a/worker.js b/worker.js new file mode 100644 index 0000000..3b3b249 --- /dev/null +++ b/worker.js @@ -0,0 +1,273 @@ +addEventListener('fetch', event => { + event.respondWith(handleRequest(event.request)); +}); + +async function handleRequest(request) { + const response = await fetch('https://cdn.jsdelivr.net/gh/YangguangZhou/some-stars@main/data.json'); //这里的xxx修改为自己仓库的json raw文件 + const data = await response.json(); + + const html = generateHTML(data); + + return new Response(html, { + headers: { 'content-type': 'text/html' }, + }); +} + +function generateHTML(data) { + const repoCardsHtml = (repos, language) => { + return repos.map((repo) => { + const truncatedDescription = repo.description && repo.description.length > 200 ? repo.description.slice(0, 200) + '...' : repo.description; + const topics = repo.topics.map(topic => topic.toLowerCase()); + if (!topics.includes(language.toLowerCase())) { + topics.push(language.toLowerCase()); + } + return ` +
+
+ +
+
+ +

${truncatedDescription}

+
+
+ ${topics.map(topic => `#${topic}`).join('')} +
+
+ Stars: ${repo.stargazers_count} + Watchers: ${repo.watchers_count} +
+
`; + }).join(''); + }; + + const categoriesHtml = Object.keys(data).map(language => ` +
+

${language} Repositories

+
+ ${repoCardsHtml(data[language], language)} +
+
`).join(''); + + const sidebarLinks = Object.keys(data).map(language => ` +
  • ${language}
  • `).join(''); + + return ` + + + + + + + Jerry Zhou GitHub Stars 导航 + + + + + + +
    +
    + +
    +
    ${categoriesHtml}
    +
    +
    +
    + + + + + `; +}