{"id":50980083,"url":"https://github.com/shineii86/quickdraw","last_synced_at":"2026-06-19T13:02:27.362Z","repository":{"id":351762909,"uuid":"1212388650","full_name":"Shineii86/Quickdraw","owner":"Shineii86","description":"A fully automated Python script that runs in Google Colab to earn the Quickdraw achievement by opening and immediately closing an issue or pull request.","archived":false,"fork":false,"pushed_at":"2026-04-16T10:38:29.000Z","size":2504,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-16T12:35:31.007Z","etag":null,"topics":["achivements","automation","badges","github","quickdraw"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Shineii86.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-16T10:28:04.000Z","updated_at":"2026-04-16T10:39:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Shineii86/Quickdraw","commit_stats":null,"previous_names":["shineii86/quickdraw"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Shineii86/Quickdraw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shineii86%2FQuickdraw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shineii86%2FQuickdraw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shineii86%2FQuickdraw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shineii86%2FQuickdraw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shineii86","download_url":"https://codeload.github.com/Shineii86/Quickdraw/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shineii86%2FQuickdraw/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34532260,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-19T02:00:06.005Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["achivements","automation","badges","github","quickdraw"],"created_at":"2026-06-19T13:02:24.797Z","updated_at":"2026-06-19T13:02:27.356Z","avatar_url":"https://github.com/Shineii86.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n[![Quickdraw Banner](https://raw.githubusercontent.com/Shineii86/Quickdraw/main/images/Quickdraw.png)](https://github.com/Shineii86/Quickdraw)\n\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Shineii86/Quickdraw/blob/main/notebooks/Quickdraw.ipynb)\n[![Python 3.8+](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n[![GitHub Stars](https://img.shields.io/github/stars/Shineii86/Quickdraw?style=for-the-badge)](https://github.com/Shineii86/Quickdraw/stargazers)\n[![GitHub Forks](https://img.shields.io/github/forks/Shineii86/Quickdraw?style=for-the-badge)](https://github.com/Shineii86/Quickdraw/fork)\n\nA **fully automated** Python script that runs in **Google Colab** to earn the **Quickdraw** achievement by opening and immediately closing an issue or pull request.\n\n\u003c/div\u003e\n\n---\n\n\u003e [!WARNING]\n\u003e **This script automates interactions with GitHub to artificially trigger the Quickdraw achievement.**\n\u003e - **Use responsibly.** Inflating achievements may be viewed negatively by potential employers or collaborators, and may violate GitHub's Terms of Service.\n\u003e - You need a **Personal Access Token (classic)** with `repo` scope for your account.\n\u003e - The script creates a repository, opens an issue or PR, and closes it within seconds.\n\u003e - This tool is intended for **educational purposes and personal experimentation** only.\n\n---\n\n## 📖 Table of Contents\n\n- [What is This Tool?](#-what-is-this-tool)\n- [Why Use This Method?](#-why-use-this-method)\n- [Prerequisites](#-prerequisites)\n  - [1. Required Accounts](#1-required-accounts)\n  - [2. Generate a Personal Access Token (Classic)](#2-generate-a-personal-access-token-classic)\n- [Step-by-Step Guide](#-step-by-step-guide)\n- [Configuration Options](#-configuration-options)\n- [How It Works](#-how-it-works-technical-overview)\n- [Troubleshooting](#-troubleshooting)\n- [License \u0026 Disclaimer](#-license--disclaimer)\n\n---\n\n## 🎯 What is This Tool?\n\nThis tool automates the process of earning the **Quickdraw** achievement on GitHub. Quickdraw is awarded when a user closes an issue or pull request within 5 minutes of opening it.\n\nUsing the **GitHub REST API**, the script:\n1. Creates a public repository (or uses an existing one).\n2. Opens either an **issue** or a **pull request** (your choice).\n3. Waits a few seconds.\n4. Closes the issue or PR immediately.\n\n\u003e [!NOTE]\n\u003e  The achievement may take a few minutes to several hours to appear on your profile.\n\n---\n\n## ✅ Why Use This Method?\n\n| Feature                      | Benefit                                                                 |\n|------------------------------|-------------------------------------------------------------------------|\n| ☁️ **No PC Required**         | Runs entirely in Google Colab (cloud‑based). Works on any device with a browser. |\n| 🔁 **Fully Automated**        | Creates the repo, opens the item, and closes it — all automatically.     |\n| 🎯 **Issue or PR**            | Choose whether to use an issue or a pull request — both work!            |\n| 🛡️ **REST API**               | Uses official GitHub REST APIs — no browser automation or scraping.      |\n| 📦 **Minimal Dependencies**   | Only requires `requests` and standard libraries.                         |\n\n---\n\n## 🧰 Prerequisites\n\n### 1. Required Accounts\n\n- **One GitHub account** – This account will receive the Quickdraw achievement.\n\n### 2. Generate a Personal Access Token (Classic)\n\nYou need a **Personal Access Token (Classic)** for your account with the `repo` scope.\n\n\u003e [!IMPORTANT]\n\u003e **Required scope:**\n\u003e - `repo` – Grants full control of private repositories (required for creating repos, issues, and PRs).\n\n#### How to Create a Token\n\n1. Log in to your account and go to **Settings** → **Developer settings** → **Personal access tokens** → **Tokens (classic)**.\n2. Click **Generate new token** → **Generate new token (classic)**.\n3. Give it a descriptive **Note** (e.g., `Quickdraw Script`).\n4. Set an **Expiration** (e.g., 7 days – recommended for security).\n5. Under **Select scopes**, check the following box:\n   - ☑️ **repo** (this automatically selects all sub‑scopes under `repo`)\n6. Click **Generate token**.\n7. **Copy the token immediately** (it starts with `ghp_`) and store it securely. You will not be able to see it again.\n\n\u003e 🔒 **Security Note:** Treat this token like a password. Never commit it to a public repository or share it with anyone.\n\n---\n\n## 📥 How to Deploy\n\n### 1️⃣ One‑Click Colab\n\n\u003ca href=\"https://colab.research.google.com/github/Shineii86/Quickdraw/blob/main/notebooks/Quickdraw.ipynb\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/125879861/255389999-a0d261cf-893a-46a7-9a3d-2bb52811b997.png\" alt=\"Open In Colab\" width=\"200px\"\u003e\n\u003c/a\u003e\n\n### 2️⃣ Fill in the Configuration Form\n\nInside the Colab notebook, you'll find a single configuration cell with form fields:\n\n| Variable       | Description                                                               | Example Value               |\n|----------------|---------------------------------------------------------------------------|-----------------------------|\n| `USERNAME`     | Your GitHub handle (to earn the achievement)                              | `\"Shineii86\"`               |\n| `TOKEN`        | Personal Access Token with `repo` scope                                   | `\"ghp_abc123...\"`           |\n| `REPO_NAME`    | Repository name (will be created if it doesn't exist)                     | `\"quickdraw-demo\"`          |\n| `ITEM_TYPE`    | Type of item to create and close: `\"issue\"` or `\"pull_request\"`           | `\"issue\"`                   |\n| `CLOSE_DELAY`  | Seconds to wait before closing (must be \u003c 300)                            | `2`                         |\n\n### 3️⃣ Run the Notebook\n\nClick **Runtime → Run all** (or press `Ctrl+F9`). The notebook will:\n- Install `requests`\n- Create a public repository\n- Open an issue (or PR)\n- Wait a few seconds\n- Close the issue (or PR)\n\nYou'll see real‑time output like:\n\n```\n🤠 Quickdraw Achievement Helper for user 'Shineii86'\nRepository: Shineii86/quickdraw-demo\nItem type: issue\nClose delay: 2 seconds\n\n📦 Creating repository 'quickdraw-demo'...\n   ✅ Repository created: https://github.com/Shineii86/quickdraw-demo\n📝 Creating issue...\n   ✅ Issue created: https://github.com/Shineii86/quickdraw-demo/issues/1\n⏳ Waiting 2 seconds before closing...\n🔒 Closing issue #1...\n   ✅ Issue closed\n\n==================================================\n✨ Success! Issue opened and closed within 2 seconds.\n📊 Check your profile: https://github.com/Shineii86\n```\n\n### 4️⃣ Check Your Achievements\n\n1. Go to your GitHub profile: `https://github.com/YOUR_USERNAME`\n2. Scroll down to the **Achievements** section (if you already have some) or visit `https://github.com/settings/achievements`.\n3. **Quickdraw** should appear within a few minutes to a few hours.\n\n---\n\n## ⚙️ Configuration Options\n\n| Parameter     | Default     | Description                                                                                                   |\n|---------------|-------------|---------------------------------------------------------------------------------------------------------------|\n| `USERNAME`    | —           | The GitHub username that will earn the achievement.                                                            |\n| `TOKEN`       | —           | PAT for your account with `repo` scope.                                                                        |\n| `REPO_NAME`   | —           | Repository name. Will be created if it doesn't exist.                                                          |\n| `ITEM_TYPE`   | `\"issue\"`   | Choose `\"issue\"` or `\"pull_request\"`. Both work for Quickdraw.                                                 |\n| `CLOSE_DELAY` | `2`         | Seconds to wait before closing. Must be less than 300 (5 minutes).                                             |\n\n---\n\n## 🔬 How It Works (Technical Overview)\n\nThe script interacts with the **GitHub REST API v3** using the following endpoints:\n\n1. **`POST /user/repos`** – Creates a new public repository.\n2. **`POST /repos/{owner}/{repo}/issues`** – Creates a new issue.\n3. **`PATCH /repos/{owner}/{repo}/issues/{number}`** – Closes the issue (by setting `state: \"closed\"`).\n\n**For Pull Request mode, additional endpoints are used:**\n- **`POST /repos/{owner}/{repo}/git/refs`** – Creates a new branch.\n- **`PUT /repos/{owner}/{repo}/contents/{path}`** – Creates/updates a file.\n- **`POST /repos/{owner}/{repo}/pulls`** – Creates a pull request.\n- **`PATCH /repos/{owner}/{repo}/pulls/{number}`** – Closes the pull request.\n\n**Workflow (Issue Mode):**\n\n```\n┌─────────────────┐     ┌─────────────────────┐     ┌──────────────────────┐\n│    Your Account    │───▶│    Create Repository    │──▶│    Repository Created    │\n└─────────────────┘     └─────────────────────┘     └──────────────────────┘\n                                                               │\n                                                               ▼\n┌─────────────────┐     ┌─────────────────┐     ┌──────────────────────┐\n│    Your Account    │───▶│    Create Issue    │───▶│      Issue Opened        │\n└─────────────────┘     └─────────────────┘     └──────────────────────┘\n                                      │\n                                      ▼ (after 2 seconds)\n                            ┌──────────────────────┐\n                            │      Close Issue         │\n                            │    (within 5 minutes)    │\n                            └──────────────────────┘\n                                      │\n                                      ▼\n                            🏆 Quickdraw Earned!\n```\n\n---\n\n## 🆘 Troubleshooting\n\n| Issue                                                      | Solution                                                                                     |\n|------------------------------------------------------------|----------------------------------------------------------------------------------------------|\n| `API request failed: 404`                                  | The repository name may be taken or you don't have access. Try a different `REPO_NAME`.       |\n| `API request failed: 422` (already exists)                 | The repository already exists. The script will use the existing one.                          |\n| `Bad credentials`                                           | Your `TOKEN` is incorrect, expired, or lacks the `repo` scope.                                |\n| Achievement not appearing after several hours               | Wait up to 24 hours. Ensure the repository is **public** and the item was closed within 5 minutes. |\n| Issue/PR closed but not within 5 minutes                    | Reduce `CLOSE_DELAY`. The default 2 seconds is safe.                                           |\n\n---\n\n## 📄 License \u0026 Disclaimer\n\nThis project is licensed under the **MIT License** – see the [LICENSE](LICENSE) file for details.\n\n\u003e [!WARNING]\n\u003e This script is intended for **educational purposes and personal experimentation** only. Artificially triggering achievements may be viewed negatively by potential employers or collaborators, and may violate GitHub's Terms of Service. The author is not responsible for any consequences arising from misuse of this tool, including but not limited to account suspension, damage to professional reputation, or violation of platform terms.\n\n---\n\n### 🔗 Quick Links\n\n- [Google Colab](https://colab.research.google.com/)\n- [GitHub Personal Access Tokens](https://github.com/settings/tokens)\n- [GitHub REST API Documentation](https://docs.github.com/en/rest)\n- [GitHub Achievements](https://github.com/settings/achievements)\n\n---\n\n## 💕 Loved My Work?\n\n🚨 [Follow me on GitHub](https://github.com/Shineii86)\n\n⭐ [Give a star to this project](https://github.com/Shineii86/Quickdraw)\n\n\u003cdiv align=\"center\"\u003e\n\n\u003ca href=\"https://github.com/Shineii86/Quickdraw\"\u003e\n\u003cimg src=\"https://github.com/Shineii86/AniPay/blob/main/Source/Banner6.png\" alt=\"Banner\"\u003e\n\u003c/a\u003e\n  \n  *For inquiries or collaborations*\n     \n[![Telegram Badge](https://img.shields.io/badge/-Telegram-2CA5E0?style=flat\u0026logo=Telegram\u0026logoColor=white)](https://telegram.me/Shineii86 \"Contact on Telegram\")\n[![Instagram Badge](https://img.shields.io/badge/-Instagram-C13584?style=flat\u0026logo=Instagram\u0026logoColor=white)](https://instagram.com/ikx7.a \"Follow on Instagram\")\n[![Pinterest Badge](https://img.shields.io/badge/-Pinterest-E60023?style=flat\u0026logo=Pinterest\u0026logoColor=white)](https://pinterest.com/ikx7a \"Follow on Pinterest\")\n[![Gmail Badge](https://img.shields.io/badge/-Gmail-D14836?style=flat\u0026logo=Gmail\u0026logoColor=white)](mailto:ikx7a@hotmail.com \"Send an Email\")\n\n  \u003csup\u003e\u003cb\u003eCopyright © 2026 \u003ca href=\"https://telegram.me/Shineii86\"\u003eShinei Nouzen\u003c/a\u003e All Rights Reserved\u003c/b\u003e\u003c/sup\u003e\n\n![Last Commit](https://img.shields.io/github/last-commit/Shineii86/Quickdraw?style=for-the-badge)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshineii86%2Fquickdraw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshineii86%2Fquickdraw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshineii86%2Fquickdraw/lists"}