From 5a22d81d36dd7f74c65596944d95ddb5a90b12bb Mon Sep 17 00:00:00 2001 From: Sachin Date: Mon, 17 Feb 2025 20:03:50 +0530 Subject: [PATCH 1/2] refactor: Remove unused files and update index.html for new redirect --- .gitignore | 24 ----- README.md | 33 ------ bun.lockb | Bin 22434 -> 0 bytes github/fetcher.js => fetcher.js | 0 github/index.html | 64 ------------ index.html | 5 +- package.json | 15 --- src/fetcher.js | 150 ---------------------------- src/styles.css | 171 -------------------------------- github/styles.css => styles.css | 0 10 files changed, 4 insertions(+), 458 deletions(-) delete mode 100644 .gitignore delete mode 100644 README.md delete mode 100644 bun.lockb rename github/fetcher.js => fetcher.js (100%) delete mode 100644 github/index.html delete mode 100644 package.json delete mode 100644 src/fetcher.js delete mode 100644 src/styles.css rename github/styles.css => styles.css (100%) diff --git a/.gitignore b/.gitignore deleted file mode 100644 index a547bf3..0000000 --- a/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/README.md b/README.md deleted file mode 100644 index bf5819a..0000000 --- a/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# 🚀 GitRepo Zip Fetcher - -Effortlessly download GitHub repositories and folders as ZIP files with just a few clicks! 🖱️ - -## ✨ Features - -- 📦 Fetch entire GitHub repos or specific folders -- 🗜️ Download repositories as ZIP files -- 🔒 Support for both public and private repositories -- 🔑 Optional GitHub Personal Access Token integration -- 📊 Real-time progress tracking -- 📱 Responsive design for all your devices - -## 🚀 How to Use - -1. 🌐 Open the app in your favorite web browser -2. 📝 Enter a GitHub repository URL -3. 🔑 (Optional) Click "Use Token" to enter your GitHub Personal Access Token -4. 🚀 Hit the "Fetch" button or press Enter -5. 📊 Watch the progress in the status output area -6. 💾 When it's done, your ZIP file will start downloading automatically! - -## 🛠️ Dependencies - -- [JSZip](https://stuk.github.io/jszip/): ZIP file wizardry 🧙‍♂️ -- [FileSaver.js](https://github.com/eligrey/FileSaver.js/): Download magic 🪄 -- [Octokit](https://github.com/octokit/octokit.js): GitHub API sorcery 🔮 - -## 📝 Note - -Your privacy is our top priority! 🛡️ This app runs entirely in your browser and doesn't collect or send any personal data. All operations happen on your device for maximum security. 🔒 - -Enjoy fetching your GitHub repositories with ease! 🎉 diff --git a/bun.lockb b/bun.lockb deleted file mode 100644 index 11539cbb498425446a9fff3102cf93fd15265919..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22434 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 - - - - - GitRepo Zip Fetcher - - - - - - - - -
-
-

GitRepo Zip Fetcher

-

Effortlessly download GitHub repositories and folders

-
-
-
- - - - -
- - - -
-
-

Made with ❤️ by Sachin Sharma

-

Note: This application runs locally on your computer and does not collect or transmit any personal data.

-
-
- - - - - - - - diff --git a/index.html b/index.html index 5e62a73..8f7bf14 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,10 @@ - + +
diff --git a/package.json b/package.json deleted file mode 100644 index 4570039..0000000 --- a/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "github-repo-downloader", - "private": true, - "version": "1.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "devDependencies": { - "@vercel/analytics": "^1.3.1", - "vite": "^6.1.0" - } -} diff --git a/src/fetcher.js b/src/fetcher.js deleted file mode 100644 index 919e145..0000000 --- a/src/fetcher.js +++ /dev/null @@ -1,150 +0,0 @@ -import { Octokit } from "https://cdn.skypack.dev/@octokit/rest"; - -document.addEventListener("DOMContentLoaded", () => { - const repoInput = document.getElementById("repoInput"); - const tokenInput = document.getElementById("tokenInput"); - const fetchBtn = document.getElementById("fetchBtn"); - const statusLog = document.getElementById("statusLog"); - const statusOutput = document.getElementById("statusOutput"); - const fileListElement = document.getElementById("fileList"); - const fileListWrapper = document.getElementById("fileListWrapper"); - const toggleTokenBtn = document.getElementById("toggleTokenBtn"); - const tokenInfo = document.getElementById("tokenInfo"); - - let fetchedFiles = []; - let progressPercentage = 0; - - const updateStatus = (message) => { - statusLog.textContent = message; - statusOutput.style.display = "block"; - }; - - const updateProgress = (percent) => { - progressPercentage = percent; - statusLog.style.background = `linear-gradient(to right, rgba(100, 255, 218, 0.3) ${percent}%, transparent ${percent}%)`; - statusLog.innerHTML = `${statusLog.textContent} ${percent}% Complete`; - }; - - const fetchFolderContents = async (octokit, owner, repo, path) => { - const response = await octokit.rest.repos.getContent({ - owner, - repo, - path, - }); - return response.data; - }; - - const fetchFileContent = async (octokit, owner, repo, path, fileName, totalSize) => { - const response = await octokit.rest.repos.getContent({ - owner, - repo, - path, - mediaType: { - format: "raw", - }, - }); - updateStatus(`Fetching ${fileName}`); - updateProgress(100); - return response.data; - }; - - const processFolderContents = async (octokit, owner, repo, folder, zip, path = "") => { - for (const item of folder) { - if (item.type === "file") { - updateStatus(`Queueing fetch of ${item.name}`); - const fileContent = await fetchFileContent(octokit, owner, repo, item.path, item.name, item.size); - fetchedFiles.push(item); - updateFileList(); - zip.file(item.name, fileContent); - } else if (item.type === "dir") { - const subFolder = await fetchFolderContents(octokit, owner, repo, item.path); - const subFolderZip = zip.folder(item.name); - await processFolderContents(octokit, owner, repo, subFolder, subFolderZip, item.path); - } - } - }; - - const fetchRepositoryContents = async (octokit, owner, repo, path) => { - try { - const folderData = await fetchFolderContents(octokit, owner, repo, path); - const zip = new JSZip(); - await processFolderContents(octokit, owner, repo, folderData, zip, path); - return zip; - } catch (error) { - console.error(`Error: ${error}`); - throw error; - } - }; - - const updateFileList = () => { - fileListElement.innerHTML = ""; - fetchedFiles.forEach((file) => { - const li = document.createElement("li"); - li.textContent = file.name; - fileListElement.appendChild(li); - }); - fileListWrapper.style.display = "block"; - fileListElement.scrollTop = fileListElement.scrollHeight; - }; - - const fetchRepo = async () => { - updateStatus(""); - fetchedFiles = []; - fileListWrapper.style.display = "none"; - - const repoUrl = repoInput.value; - const token = tokenInput.value.trim(); - - if (!repoUrl.includes("github.com")) { - updateStatus("Invalid URL. Please enter a valid GitHub repository URL."); - return; - } - - const [, , , owner, repo, , , ...dirParts] = repoUrl.split("/"); - const path = dirParts.join("/"); - - const octokit = new Octokit({ auth: token }); - - updateStatus("Fetching repository contents..."); - try { - const zip = await fetchRepositoryContents(octokit, owner, repo, path); - - updateStatus("Compressing files..."); - const content = await zip.generateAsync({ type: "blob" }); - saveAs(content, `${path ? path.replace(/\/|%20/g, "-") : repo}.zip`); - - const fileList = zip.file(/.*/); - - updateProgress(0); - updateStatus( - `Fetched ${fileList.length} files\nUser: ${owner}\nRepository: ${repoUrl}\nFolder: ${path}\nSize: ${( - content.size / - 1024 / - 1024 - ).toFixed(2)} MB` - ); - } catch (error) { - if (error.status === 403) { - updateStatus("Rate limit exceeded. Please try again in a few minutes or use a GitHub Personal Access Token."); - } else { - updateStatus(`Error: ${error.message}`); - } - } - }; - - fetchBtn.addEventListener("click", fetchRepo); - repoInput.addEventListener("keydown", (e) => { - if (e.key === "Enter") { - fetchRepo(); - } - }); - - toggleTokenBtn.addEventListener("click", () => { - const isHidden = tokenInput.style.display === "none"; - tokenInput.style.display = isHidden ? "block" : "none"; - tokenInfo.style.display = isHidden ? "block" : "none"; - toggleTokenBtn.textContent = isHidden ? "Hide Token" : "Use Token"; - }); - - repoInput.focus(); -}); diff --git a/src/styles.css b/src/styles.css deleted file mode 100644 index 7b75470..0000000 --- a/src/styles.css +++ /dev/null @@ -1,171 +0,0 @@ -:root { - --accent-color: #64ffda; - --bg-color: #0a192f; - --surface-color: #112240; - --text-color: #ccd6f6; - --error-color: #ff5370; -} - -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -body { - background: linear-gradient(135deg, #0a192f, #112240); - font-family: "Poppins", sans-serif; - color: var(--text-color); - min-height: 100vh; -} - -.container { - display: flex; - flex-direction: column; - min-height: 100vh; -} - -header { - background-color: var(--surface-color); - padding: 2rem; - text-align: center; - box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); -} - -h1 { - font-weight: 500; - margin-bottom: 0.5rem; - color: var(--accent-color); - font-size: 2.5rem; -} - -main { - flex-grow: 1; - padding: 2rem; - max-width: 800px; - margin: 0 auto; - width: 100%; -} - -.input-wrapper { - display: flex; - flex-direction: column; - gap: 1rem; - margin-bottom: 1rem; -} - -input { - flex-grow: 1; - padding: 0.75rem 1rem; - border: 2px solid var(--accent-color); - border-radius: 4px; - background-color: var(--surface-color); - color: var(--text-color); - font-size: 1rem; - font-family: "Poppins", sans-serif; -} - -button { - display: flex; - align-items: center; - justify-content: center; - gap: 0.3rem; - padding: 0.75rem 1.5rem; - border: none; - border-radius: 4px; - background-color: var(--accent-color); - color: var(--bg-color); - font-size: 1rem; - font-weight: 500; - cursor: pointer; - transition: background-color 0.3s ease, transform 0.1s ease; -} - -button:hover { - background-color: #45e0bc; - transform: translateY(-2px); -} - -.token-info { - font-size: 0.9rem; - color: var(--accent-color); - margin-bottom: 1rem; -} - -.toggle-token-btn { - align-self: flex-start; - padding: 0.5rem 1rem; - font-size: 0.9rem; - background-color: var(--surface-color); - color: var(--accent-color); - border: 1px solid var(--accent-color); - cursor: pointer; - transition: background-color 0.3s ease; -} - -.toggle-token-btn:hover { - background-color: rgba(100, 255, 218, 0.1); -} - -.status-output { - background-color: var(--surface-color); - border-radius: 4px; - padding: 1rem; - margin-bottom: 2rem; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); -} - -.status-log { - font-family: "Courier New", monospace; - white-space: pre-wrap; - word-break: break-all; - font-size: 0.9rem; - line-height: 1.5; -} - -.file-list { - list-style-type: none; - max-height: 250px; - overflow-y: auto; -} - -.file-list li { - padding: 0.5rem 0; - border-bottom: 1px solid rgba(255, 255, 255, 0.1); - font-size: 0.9rem; -} - -footer { - background-color: var(--surface-color); - padding: 1rem; - text-align: center; - font-size: 0.9rem; -} - -footer a { - color: var(--accent-color); - text-decoration: none; - font-weight: 500; -} - -.note { - font-size: 0.8rem; - color: var(--error-color); - margin-top: 0.5rem; -} - -@media (max-width: 600px) { - h1 { - font-size: 1.8rem; - } - - p { - font-size: 0.9rem; - } - .input-wrapper { - flex-direction: column; - } - input { - font-size: 0.8rem; - } -} diff --git a/github/styles.css b/styles.css similarity index 100% rename from github/styles.css rename to styles.css From f52aa0a810cc2ac52e6ce2b8176889b29ff671ba Mon Sep 17 00:00:00 2001 From: Sachin Date: Thu, 22 May 2025 14:31:46 +0530 Subject: [PATCH 2/2] feat: Add Google site verification meta tag to index.html and create .gitignore for node_modules --- .gitignore | 1 + index.html | 1 + 2 files changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..30bc162 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/node_modules \ No newline at end of file diff --git a/index.html b/index.html index 8f7bf14..aa50d79 100644 --- a/index.html +++ b/index.html @@ -9,6 +9,7 @@ content="GitRepo Zip Fetcher is a sleek tool for effortlessly downloading GitHub repositories and folders as ZIP files." /> + pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy