GithubGist je mjesto gdje možete kreirati privatnu ili javnu bit, tj. pohraniti svoje datoteke privatno ili javno. Pretpostavimo scenarij u kojem ste napisali dobar broj bitnih sadržaja za svoj projekt i želite preuzeti skup njih. Jedini način na koji to možete učiniti pomoću GithubGist je otvoriti svaku pojedinačnu bit za preuzimanje ZIP-a ili kloniranje putem HTTP-a ili SSH-a. Ovaj članak govori o pojednostavljivanju gornjeg zadatka. Pomoću naredbi u nastavku možete čak preuzeti sadržaje od drugih korisnika githuba, isključujući one privatne dok ne saznate njihovu lozinku. Koristit ćemo se zahtjevi paket za ovaj prijedlog. To je sjajan paket za slanje HTTP zahtjeva s minimalnim kodom. Montaža 1. Preuzmite paket s PyPI preko terminala koristeći pip3 Sintaksa: pip3 install requests
Bilješka: To become a root user run the following command: sudo pip3 install requests
Python3 skripta Skripta se ne može pokrenuti na mrežnom IDE-u i stoga možete kliknuti ovdje 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() Obrazloženje GithubGist API pohranjuje podatke o svakom korisniku na https://api.github.com/users/username/gists. - Pošaljite HTTP zahtjev na gornji url da biste dohvatili podatke o korisniku.
- Potražite raw_url svakog dostupnog sadržaja i poslao HTTP zahtjeve za dohvaćanje informacija o njima.
- Manipulirao informacijama prema vašim potrebama.