logo

Завантажувати суть із Github стало просто

GithubGist це місце, де ви можете створити приватну або публічну суть, тобто зберігати свої файли приватно або публічно. Припустімо сценарій, коли ви написали велику кількість суті для свого проекту і хочете завантажити їх набір. Єдиний спосіб зробити це за допомогою GithubGist це відкрити кожну окрему суть для завантаження ZIP або клонування через HTTP або SSH. У цій статті йдеться про спрощення вищевказаного завдання. Використовуючи наведені нижче команди, ви навіть можете завантажувати суть від інших користувачів github, за винятком приватних, доки не дізнаєтесь їхній пароль. Ми будемо використовувати запити пакет для цієї пропозиції. Це чудовий пакет для надсилання HTTP-запитів із мінімальним кодом. монтаж 1. Завантажте пакет із PyPI через термінал за допомогою pip3 Синтаксис:
pip3 install requests
Примітка: To become a root user run the following command:
sudo pip3 install requests
Сценарій Python3 Сценарій не може працювати в онлайн-IDE, тому ви можете клацати тут 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() 
Пояснення API GithubGist зберігає інформацію про кожного користувача на сторінці https://api.github.com/users/username/gists.
  • Надішліть HTTP-запит на вказану вище URL-адресу, щоб отримати інформацію про користувача.
  • Пошук для raw_url кожної доступної суті та надісланих HTTP-запитів для отримання інформації про них.
  • Маніпулював інформацією відповідно до ваших потреб.