GithubGist är en plats där du kan skapa en privat eller en offentlig innehåll, dvs lagra dina filer antingen privat eller offentligt. Låt oss anta ett scenario där du har skrivit ett stort antal huvudpunkter för ditt projekt och du vill ladda ner en uppsättning av dem. Det enda sättet du kan göra det med GithubGist är att öppna varje enskild kärna för att ladda ner ZIP eller klon via HTTP eller SSH. Den här artikeln handlar om att göra ovanstående uppgift enklare. Med hjälp av kommandona nedan kan du till och med ladda ner huvudpunkter från andra github-användare exklusive de privata tills du vet deras lösenord. Vi kommer att använda förfrågningar paket för detta förslag. Det är ett fantastiskt paket för att skicka HTTP-förfrågningar med minimal kod. Installation 1. Ladda ner paketet från PyPI via terminal med pip3 Syntax: pip3 install requests
Notera: To become a root user run the following command: sudo pip3 install requests
Python3-skript Skriptet kan inte köras på en online-IDE och därför kan du klicka här 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() Förklaring GithubGist API lagrar information om varje användare på https://api.github.com/users/username/gists. - Skicka en HTTP-förfrågan till ovanstående url för att hämta information om användaren.
- Sök efter rå_url av alla tillgängliga uppgifter och skickade HTTP-förfrågningar för att hämta informationen om dem.
- Manipulerade informationen efter dina behov.