Рубрики

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

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

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

Установка

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

pip3 install requests

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

sudo pip3 install requests

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

import requests

import os

  

def create_directory(dirname):

    # Создает новый каталог, если каталог с именем dirname не существует

  

    try:

        os.stat(dirname)

    except:

        os.mkdir(dirname)

  

def show(obj):

    # Отображает элементы в объекте

  

    for i in range(len(obj)):

        print(str(i)+': '+str(obj[i]))

  

def auth():

    # Запрашивает данные пользователя

  

    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):

   # Загружает файлы и суть URL

  

   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):

    # Записывает текст (суть) в имя файла

  

    fp = open(filename, 'w')

    fp.write(text)

    fp.close()

  

def download(permission, user, request, fileno):

    # Загружает и записывает все списки в <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):

    # Распечатывает содержимое файла

  

    gist = requests.get(urls[int(pos)])

    print(gist.text)

  

def main():

    # Аутентифицирует и загружает списки по выбору пользователя

    #Commands:

    #show: показать все доступные гистосы с назначенным гистно

    # Скачать все: чтобы загрузить все доступные гистограммы

    #download gistno (s): Чтобы загрузить gistno (s), назначенные gistno (s)

    #detailed gistno: распечатать содержание gistno, назначенного gistno

    #exit: для выхода из скрипта

  

    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 и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

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

Рекомендуемые посты:

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

0.00 (0%) 0 votes