GithubGist is een plaats waar u een privé- of een openbare inhoud kunt creëren, dat wil zeggen dat u uw bestanden privé of openbaar kunt opslaan. Laten we uitgaan van een scenario waarin u een groot aantal essenties voor uw project hebt geschreven en u een aantal daarvan wilt downloaden. De enige manier waarop u dit kunt doen, is door gebruik te maken van GithubGist is om elke individuele essentie te openen om ZIP te downloaden of te klonen via HTTP of SSH. In dit artikel gaat het erom de bovenstaande taak eenvoudiger te maken. Met behulp van de onderstaande commando's kun je zelfs gists van andere github-gebruikers downloaden, met uitzondering van de privégebruikers, totdat je hun wachtwoord kent. Wij zullen gebruiken verzoeken pakket voor dit voorstel. Het is een geweldig pakket om HTTP-verzoeken met minimale code te verzenden. Installatie 1. Download het pakket van PyPI via terminal met pip3 Syntaxis: pip3 install requests
Opmerking: To become a root user run the following command: sudo pip3 install requests
Python3-script Het script kan niet draaien op een online IDE en daarom kun je klikken hier to see how it works. Python import requests import os def create_directory(dirname): #Creates a new directory if a directory with dirname does not exist try: os.stat(dirname) except: os.mkdir(dirname) def show(obj): #Displays the items in the obj for i in range(len(obj)): print(str(i)+': '+str(obj[i])) def auth(): #Asks for the user details ask_auth = input('Do you want to download gists from your account ? Type 'yes' or 'no': ') if(ask_auth=='yes'): user = input('Enter your username: ') password = input('Enter your password: ') request = requests.get('https://api.github.com/users/'+user+'/gists' auth=(user password)) elif(ask_auth=='no'): user = input('Enter username: ') request = requests.get('https://api.github.com/users/' +user+'/gists') return [ask_auth user request] def load(request): #Loads the files and the gist urls output = request.text.split('') gist_urls = [] files = [] for item in output: if 'raw_url' in item: gist_urls.append(str(item[11:-1])) if 'filename' in item: files.append(str(item.split(':')[1][2:-1])) return [gist_urls files] def write_gist(filename text): #Writes text(gist) to filename fp = open(filename 'w') fp.write(text) fp.close() def download(permission user request fileno): #Loads and writes all the gists to dirname if(permission == 'yes' or permission == 'no'): gist_urls files = load(request) dirname = user+''s_gists/' create_directory(dirname) if(fileno[1] == 'all'): for i in range(len(gist_urls)): gist = requests.get(gist_urls[i]) write_gist(dirname+files[i] gist.text) else: for i in range(1len(fileno)): gist = requests.get(gist_urls[int(fileno[i])]) write_gist(dirname+files[int(fileno[i])] gist.text) def detailed(urls pos): #Prints out the contents of a file gist = requests.get(urls[int(pos)]) print(gist.text) def main(): #Authenticates and downloads gists according to user's choice #Commands: #show: To show all the available gists with their assigned gistno #download all: To download all the available gists #download gistno(s): To download gist(s) assigned to gistno(s) #detailed gistno: To print content of gist assigned to gistno #exit: To exit the script ask_auth user request = auth() urls files = load(request) try: while(1): command = input('Enter your command: ') if('download' in command): download(ask_auth user request command.split(' ')) elif('detailed' in command): detailed(urls command.split(' ')[1]) elif(command == 'show'): show(files) elif(command == 'exit'): return except: pass if(__name__ == '__main__'): main() Uitleg GithubGist API slaat informatie over elke gebruiker op https://api.github.com/users/username/gists. - Stuur een HTTP-verzoek naar de bovenstaande URL om informatie over de gebruiker op te halen.
- Zoek naar de onbewerkte_url van elke beschikbare essentie en verzonden HTTP-verzoeken om de informatie erover op te halen.
- De informatie naar uw wensen gemanipuleerd.