-
-
Save taskylizard/502493c63b4602c1f011f0da7b3012b2 to your computer and use it in GitHub Desktop.
| """ | |
| Downloads folders from github repo | |
| Requires PyGithub | |
| pip install PyGithub | |
| """ | |
| import os | |
| import sys | |
| import base64 | |
| import shutil | |
| import getopt | |
| from github import Github | |
| from github import GithubException | |
| def get_sha_for_tag(repository, tag): | |
| """ | |
| Returns a commit PyGithub object for the specified repository and tag. | |
| """ | |
| branches = repository.get_branches() | |
| matched_branches = [match for match in branches if match.name == tag] | |
| if matched_branches: | |
| return matched_branches[0].commit.sha | |
| tags = repository.get_tags() | |
| matched_tags = [match for match in tags if match.name == tag] | |
| if not matched_tags: | |
| raise ValueError('No Tag or Branch exists with that name') | |
| return matched_tags[0].commit.sha | |
| def download_directory(repository, sha, server_path): | |
| """ | |
| Download all contents at server_path with commit tag sha in | |
| the repository. | |
| """ | |
| if os.path.exists(server_path): | |
| shutil.rmtree(server_path) | |
| os.makedirs(server_path) | |
| contents = repository.get_dir_contents(server_path, ref=sha) | |
| for content in contents: | |
| print "Processing %s" % content.path | |
| if content.type == 'dir': | |
| os.makedirs(content.path) | |
| download_directory(repository, sha, content.path) | |
| else: | |
| try: | |
| path = content.path | |
| file_content = repository.get_contents(path, ref=sha) | |
| file_data = base64.b64decode(file_content.content) | |
| file_out = open(content.path, "w+") | |
| file_out.write(file_data) | |
| file_out.close() | |
| except (GithubException, IOError) as exc: | |
| print('Error processing %s: %s', content.path, exc) | |
| def usage(): | |
| """ | |
| Prints the usage command lines | |
| """ | |
| print "usage: gh-download --token=token --org=org --repo=repo --branch=branch --folder=folder" | |
| def main(argv): | |
| """ | |
| Main function block | |
| """ | |
| try: | |
| opts, args = getopt.getopt(argv, "t:o:r:b:f:", ["token=", "org=", "repo=", "branch=", "folder="]) | |
| except getopt.GetoptError as err: | |
| print str(err) | |
| usage() | |
| sys.exit(2) | |
| for opt, arg in opts: | |
| if opt in ("-t", "--token"): | |
| token = arg | |
| elif opt in ("-o", "--org"): | |
| org = arg | |
| elif opt in ("-r", "--repo"): | |
| repo = arg | |
| elif opt in ("-b", "--branch"): | |
| branch = arg | |
| elif opt in ("-f", "--folder"): | |
| folder = arg | |
| github = Github(token) | |
| organization = github.get_organization(org) | |
| repository = organization.get_repo(repo) | |
| sha = get_sha_for_tag(repository, branch) | |
| download_directory(repository, sha, folder) | |
| if __name__ == "__main__": | |
| """ | |
| Entry point | |
| """ | |
| main(sys.argv[1:]) |
This blog will guide you through the common problems you might face and provide you with solutions to make obtaining your PNP clearance easy. So, whether you’re applying for a new police clearance , a visa, or simply need an updated document, read on and learn how to get your PNP clearance easily.
This script lets you download entire folders from a GitHub repo with ease! You can also try out awesome FNF Mods at fnfmods.io for new music and super fun rhythm challenges.
Nice and clean code very helpful for anyone trying to understand this logic quickly! Also, if you need to make images wider or add space around photos for your project, try this: photo expander
A useful AI tool that can help when you want to скачать видео с инстаграм and clean it up by removing unwanted watermarks automatically. It processes videos smoothly and keeps the quality intact, making content ready for reuse or editing.
Whether you're managing salary caps or going for the perfect playoff run, Retro Bowl is a must-play for sports fans and retro gaming lovers alike.