logo

Prenos bistva iz Githuba je preprost

GithubGist je mesto, kjer lahko ustvarite zasebno ali javno bistvo, tj. shranite svoje datoteke zasebno ali javno. Predpostavimo scenarij, v katerem ste napisali lepo število bistev za svoj projekt in želite prenesti nabor le-teh. Edini način, kako lahko to storite z GithubGist je odpreti vsako posamezno bistvo za prenos ZIP ali kloniranje prek HTTP ali SSH. Ta članek govori o poenostavitvi zgornje naloge. S spodnjimi ukazi lahko celo prenesete bistvo drugih uporabnikov githuba, razen zasebnih, dokler ne poznate njihovega gesla. Uporabljali bomo zahteve paket za ta predlog. To je odličen paket za pošiljanje zahtev HTTP z minimalno kodo. Namestitev 1. Prenesite paket iz PyPI prek terminala z uporabo pip3 Sintaksa:
pip3 install requests
Opomba: To become a root user run the following command:
sudo pip3 install requests
Python3 skript Skripta ni mogoče zagnati v spletnem IDE, zato lahko kliknete tukaj 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() 
Razlaga GithubGist API shranjuje informacije o vsakem uporabniku na https://api.github.com/users/username/gists.
  • Pošljite zahtevo HTTP na zgornji url, da pridobite podatke o uporabniku.
  • Poiščite raw_url vsakega razpoložljivega bistva in poslal zahteve HTTP za pridobitev informacij o njih.
  • Manipulirali informacije za vaše potrebe.