logo

Stahování gists z Github je jednoduché

GithubGist je místo, kde můžete vytvořit soukromý nebo veřejný obsah, tj. ukládat své soubory soukromě nebo veřejně. Předpokládejme scénář, kdy jste pro svůj projekt napsali velké množství souhrnů a chcete si stáhnout sadu z nich. Jediný způsob, jak to můžete udělat pomocí GithubGist je otevřít každý jednotlivý obsah ke stažení ZIP nebo klonu přes HTTP nebo SSH. Tento článek je o tom, jak výše uvedený úkol zjednodušit. Pomocí níže uvedených příkazů můžete dokonce stahovat gisty od jiných uživatelů githubu s výjimkou soukromých, dokud neznáte jejich heslo. Budeme používat žádosti balíček pro tento návrh. Je to úžasný balíček pro odesílání požadavků HTTP s minimálním kódem. Instalace 1. Stáhněte si balíček z PyPI přes terminál pomocí pip3 Syntax:
pip3 install requests
Poznámka: To become a root user run the following command:
sudo pip3 install requests
Skript Python3 Skript nelze spustit na online IDE a proto můžete kliknout zde 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() 
Vysvětlení GithubGist API ukládá informace o každém uživateli na https://api.github.com/users/username/gists.
  • Odešlete požadavek HTTP na výše uvedenou adresu URL, abyste získali informace o uživateli.
  • Hledejte raw_url všech dostupných podstat a odeslaných HTTP požadavků k získání informací o nich.
  • Zmanipulovali informace podle vašich potřeb.