logo

Le téléchargement de l'essentiel depuis Github en toute simplicité

GithubGist est un endroit où vous pouvez créer un contenu privé ou public, c'est-à-dire stocker vos fichiers en privé ou en public. Supposons un scénario dans lequel vous avez écrit un bon nombre d’essentiels pour votre projet et que vous souhaitez en télécharger un ensemble. La seule façon de le faire en utilisant GithubGist consiste à ouvrir chaque élément individuel pour télécharger un ZIP ou un clonage via HTTP ou SSH. Cet article a pour objectif de simplifier la tâche ci-dessus. En utilisant les commandes ci-dessous, vous pouvez même télécharger l'essentiel d'autres utilisateurs de Github, à l'exclusion des utilisateurs privés, jusqu'à ce que vous connaissiez leur mot de passe. Nous utiliserons demandes package pour cette proposition. C'est un package génial pour envoyer des requêtes HTTP avec un minimum de code. Installation 1. Téléchargez le package depuis PyPI via le terminal en utilisant pip3 Syntaxe:
pip3 install requests
Note: To become a root user run the following command:
sudo pip3 install requests
Script Python3 Le script ne peut pas s'exécuter sur un IDE en ligne et vous pouvez donc cliquer sur ici 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() 
Explication L'API GithubGist stocke des informations sur chaque utilisateur sur https://api.github.com/users/username/gists.
  • Envoyez une requête HTTP à l'URL ci-dessus pour récupérer des informations sur l'utilisateur.
  • Rechercher le URL_brute de tous les éléments disponibles et envoyé des requêtes HTTP pour récupérer les informations les concernant.
  • Manipulation des informations selon vos besoins.