Загрузка gists с Github стала проще
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: " ) , auth = (user, password)) elif (ask_auth = = "no" ): user = input ( "Enter username: " ) + 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, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.