Spaces:
Running
Running
| import asyncio | |
| import os | |
| import requests | |
| def parse_github_repo_id(input_str): | |
| if not input_str: return "", "" | |
| input_str = input_str.strip().strip("/") | |
| if "github.com/" in input_str: | |
| import re | |
| match = re.search(r'github\.com/([^/\s]+)/([^/\s.]+)', input_str) | |
| if match: | |
| repo = match.group(2) | |
| if repo.endswith(".git"): repo = repo[:-4] | |
| return match.group(1), repo | |
| if "/" in input_str: | |
| parts = input_str.split("/") | |
| if len(parts) >= 2: | |
| repo = parts[-1] | |
| if repo.endswith(".git"): repo = repo[:-4] | |
| return parts[-2], repo | |
| return "", input_str.replace(".git", "") | |
| async def fetch_readme(repo_url_input, branch="main"): | |
| owner, repo = parse_github_repo_id(repo_url_input) | |
| headers = {"Accept": "application/vnd.github.v3.raw"} | |
| token = os.environ.get("GITHUB_TOKEN") | |
| if token: | |
| headers["Authorization"] = f"token {token}" | |
| url = f"https://api.github.com/repos/{owner}/{repo}/contents/README.md?ref={branch}" | |
| print(f"Fetching {url}...") | |
| response = requests.get(url, headers=headers) | |
| if response.status_code == 200: | |
| return response.text | |
| else: | |
| print(f"Status: {response.status_code}, Text: {response.text[:100]}") | |
| return "" | |
| async def main(): | |
| content = await fetch_readme("langchain-ai/langchain", branch="master") | |
| if content: | |
| print("Success!") | |
| else: | |
| print("Failed.") | |
| if __name__ == "__main__": | |
| asyncio.run(main()) | |