logo

Omien tietojen lataaminen Githubista on tehty yksinkertaiseksi

GithubGist on paikka, jossa voit luoda yksityisen tai julkisen sisällön eli tallentaa tiedostosi joko yksityisesti tai julkisesti. Oletetaan skenaario, jossa olet kirjoittanut hyvän määrän sisältöjä projektillesi ja haluat ladata joukon niitä. Ainoa tapa, jolla voit tehdä sen käyttämällä GithubGist on avata jokainen yksittäinen sisältö ZIP- tai kloonaamiseksi HTTP:n tai SSH:n kautta. Tämän artikkelin tarkoituksena on tehdä yllä olevasta tehtävästä yksinkertaisempi. Alla olevien komentojen avulla voit jopa ladata sisältöjä muilta githubin käyttäjiltä yksityisiä käyttäjiä lukuun ottamatta, kunnes tiedät heidän salasanansa. Tulemme käyttämään pyyntöjä paketti tähän ehdotukseen. Se on mahtava paketti HTTP-pyyntöjen lähettämiseen minimaalisella koodilla. Asennus 1. Lataa paketti osoitteesta PyPI terminaalin kautta pip3:lla Syntaksi:
pip3 install requests
Huomautus: To become a root user run the following command:
sudo pip3 install requests
Python3-skripti Skriptiä ei voi suorittaa online-IDE:ssä, joten voit napsauttaa tässä 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() 
Selitys GithubGist API tallentaa tiedot jokaisesta käyttäjästä osoitteessa https://api.github.com/users/username/gists.
  • Lähetä HTTP-pyyntö yllä olevaan URL-osoitteeseen käyttäjän tietojen hakemiseksi.
  • Etsi raw_url jokaisesta saatavilla olevasta sisällöstä ja lähetti HTTP-pyynnöt noutaakseen niitä koskevat tiedot.
  • Käsitteli tietoja tarpeidesi mukaan.