Загрузка gists с Github стала проще

Опубликовано: 15 Июля, 2021


GithubGist - это место, где вы можете создать частную или общедоступную сущность, то есть хранить ваши файлы как в частном, так и в открытом доступе. Предположим, что вы написали большое количество сущностей для своего проекта и хотите загрузить их набор. Единственный способ сделать это с помощью GithubGist - открыть каждую отдельную суть для загрузки ZIP или клонирования через HTTP или SSH.
Эта статья посвящена упрощению вышеуказанной задачи. Используя приведенные ниже команды, вы даже можете загружать gists от других пользователей github, за исключением частных, пока вы не узнаете их пароль.

Для этого предложения мы будем использовать пакет запросов. Это отличный пакет для отправки HTTP-запросов с минимальным кодом.

Монтаж

1. Загрузите пакет из PyPI через терминал с помощью pip3.
Синтаксис:

 pip3 install requests

Примечание. Чтобы стать пользователем root, выполните следующую команду:

sudo pip3 install requests

Скрипт Python3
Сценарий не может работать в онлайн-среде IDE, поэтому вы можете щелкнуть здесь, чтобы увидеть, как он работает.




requests import
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 <em>dirname</em>
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 ( 1 , len (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()

Объяснение
GithubGist API хранит информацию о каждом пользователе по адресу http://api.github.com/users/username/gists.

  • Отправьте HTTP-запрос на указанный выше URL, чтобы получить информацию о пользователе.
  • Найдите raw_url каждой доступной сущности и отправьте HTTP-запросы для получения информации о них.
  • Манипулировал информацией в соответствии с вашими потребностями.

Эта статья предоставлена Шри Санкетом Уппалапати . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.