logo

Github'dan özetleri indirmek artık çok kolay

GithubGist özel veya genel bir öz oluşturabileceğiniz, yani dosyalarınızı özel veya herkese açık olarak saklayabileceğiniz bir yerdir. Projeniz için çok sayıda özet yazdığınız ve bunlardan bir dizisini indirmek istediğiniz bir senaryoyu varsayalım. kullanarak bunu yapmanın tek yolu GithubGist ZIP'i indirmek veya HTTP veya SSH yoluyla klonlamak için her bir özü açmaktır. Bu makale tamamen yukarıdaki görevi basitleştirmeyle ilgilidir. Aşağıdaki komutları kullanarak, şifrelerini öğrenene kadar özel olanlar hariç diğer github kullanıcılarının özetlerini bile indirebilirsiniz. Kullanıyor olacağız istekler Bu teklif için paket. Minimum kodla HTTP isteklerini göndermek için harika bir pakettir. Kurulum 1. Paketi şuradan indirin: PyPI pip3 kullanarak terminal aracılığıyla Sözdizimi:
pip3 install requests
Not: To become a root user run the following command:
sudo pip3 install requests
Python3 betiği Komut dosyası çevrimiçi bir IDE'de çalıştırılamaz ve bu nedenle Burada 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() 
Açıklama GithubGist API, her kullanıcı hakkındaki bilgileri https://api.github.com/users/username/gists adresinde saklar.
  • Kullanıcı hakkında bilgi almak için yukarıdaki URL'ye bir HTTP isteği gönderin.
  • Şunu arayın: raw_url mevcut tüm özetlerin ve gönderilen HTTP isteklerinin, bunlar hakkındaki bilgileri almak için kullanılması.
  • Bilgileri ihtiyaçlarınıza göre değiştirdik.