تمام repositoryهای یک کاربر از گیت هاب
در این نوشته برای شما یک کد ساده را به زبان برنامه نویسی پایتون آماده کردهایم تا با کمک آن بتوانید تمام Repositoryهای گیتهاب یک کاربر را دانلود کنید.
تمام repositoryهای یک کاربر از گیت هاب
ابتدا پکیح gitpython را نصب کنید. برای نصب gitpython میتوانید از دستور زیر استفاده کنید:
pip install gitpython
سپس کد زیر را درون یک فایل با پسوند .py قرار دهید و آن را اجرا کنید:
import requests
from git import Repo
def get_user_repositories(username):
url = f"https://api.github.com/users/{username}/repos"
response = requests.get(url)
if response.status_code == 200:
repositories = response.json()
return [repo["html_url"] for repo in repositories]
else:
return []
def clone_user_repositories(username):
url = f"https://github.com/{username}/"
repositories = get_user_repositories(username)
for repo_name in repositories:
try:
folder_name = repo_name.split("/")
folder_name = folder_name[len(folder_name) - 1]
Repo.clone_from(repo_name, folder_name)
print(f"Repository cloned: {repo_name}")
except Exception as e:
print(f"Failed to clone repository {repo_name}: {e}")
username = "yourgithubusername"
clone_user_repositories(username)
نکته: در خط 28 کد بالا به در username = “yourgithubusername” نام کاربری کاربرد مورد نظر خود را قرار دهید. (شما میتوانید ریپازیتوریهای عمومی هر اکانتی را دانلود کنید و صرفا محدود به حساب خودتان در گیتهاب نمیشود.)
نکته: این کد نمیتواند ریپوزیتوریهای private افراد را دانلود کند زیرا نیاز به دسترسی خود آن کاربر به عنوان owner دارید.
اگر نیاز به آموزشهای بیشتری با زبان برنامه نویسی پایتون دارید در بخش نظرات این نوشته برای ما بنویسید.



















تو خطای Rate Limit گیتهاب، راهی هست که دور زده بشه؟
برای عبور از محدودیت Rate Limit گیتهاب میتوانید از Personal Access Token (PAT) استفاده کنید. با اضافه کردن توکن خود در هدر درخواستها، تعداد درخواستهای مجاز شما افزایش مییابد و کمتر با محدودیت مواجه میشوید.
میشه اینو با Threading نوشت که چندتا ریپو رو همزمان کلون کنه؟
بله، میتوانید از Threading یا asyncio در پایتون استفاده کنید تا چند ریپو همزمان کلون شوند. اما مراقب باشید که تعداد زیاد درخواست همزمان میتواند Rate Limit را سریعتر مصرف کند. بهتر است تعداد threadها را محدود و مدیریتشده تنظیم کنید.
این کد با اکانت هایی که ریپو فورک شده دارن هم خوب کار می کنه؟
بله، این کد تمام ریپوزیتوریهای عمومی یک کاربر را شامل ریپوهای فورک شده هم دریافت میکند. فقط برای ریپوهای private نیاز به دسترسی owner دارید.
برای ریپوهای بزرگ، سرعت کلون خیلی کند نمیشه؟
سرعت کلون به حجم ریپو و سرعت اینترنت شما بستگی دارد. برای ریپوهای خیلی بزرگ ممکن است کلون طول بکشد، ولی میتوانید از گزینههای –depth 1 یا shallow clone استفاده کنید تا فقط آخرین commit دانلود شود و سرعت بالا برود.
اگه تعداد ریپوهای یه کاربر خیلی زیاد باشه، این کد همه رو پشت سر هم کلون میکنه یا ممکنه محدودیت API بخوره؟
اگر تعداد ریپوها زیاد باشد، درخواستها پشت سر هم ارسال میشوند و احتمال برخورد با محدودیت API وجود دارد. استفاده از Personal Access Token و اضافه کردن تاخیر بین درخواستها میتواند از این مشکل جلوگیری کند.