Pygithub: На поиск ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 1000 Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 21 июн. 2018  Β·  5ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: PyGithub/PyGithub

API GitHub ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ поиск Π΄ΠΎ 1000 Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² . Π­Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ влияСт Π½Π° поиск, выполняСмый Ρ‡Π΅Ρ€Π΅Π· PyGitHub, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ GitHub.search_issues .

ΠŸΠΎΡ…ΠΎΠΆΠ΅, Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ваш поиск достиг этого ΠΏΡ€Π΅Π΄Π΅Π»Π° - я Π½Π΅ знаю Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ошибок. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° это ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ (Ссли ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ).

МоТно ΠΎΠ±ΠΎΠΉΡ‚ΠΈ это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² нСсколько поисковых запросов, Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ запросы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ цСлям запроса - Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ search_issues ΠΏΠΎ прогрСссивным Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌ Π΄Π°Ρ‚ - ΠΈ я Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ способ ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ это.

Π•ΡΡ‚ΡŒ мысли ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ с этим ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ? Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΎΠ±Ρ‰Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅?

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ скорости ΠΈΠ»ΠΈ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° страницы Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ?
Π° Ρ‚Π°ΠΊΠΆΠ΅ для ΠΎΠ±Ρ‰Π΅Π³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Π΄Ρ€ΡƒΠ³ΠΈΡ… запросов

ВсС 5 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’ΠΎΡ‚ ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всС запросы Π½Π° вытягиваниС Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ Π΄Π°Ρ‚, Π΄Π°ΠΆΠ΅ Ссли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π±ΠΎΠ»Π΅Π΅ 1000:

Π Π•Π”ΠΠšΠ’Π˜Π ΠžΠ’ΠΠ’Π¬: я ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΡƒ это ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π΅Ρ‚, Π° Π½Π΅ класс, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‰Π΅

class PullRequestQuery:
    def __init__(self, git, repo, since, until):
        self.git = git
        self.repo = repo
        self.until = until
        self.issues = self.__query(since, until)

    def __iter__(self):
        skip = False
        while True:
            results = False
            for issue in self.issues:
                if not skip:
                    results = True
                    yield issue.as_pull_request()
                skip = False

            # If no more results then stop iterating.
            if not results:
                break

            # Start new query picking up where we left off. Previous issue will be first one returned, so skip it.
            self.issues = self.__query(issue.closed_at.strftime('%Y-%m-%dT%H:%M:%SZ'), self.until)
            skip = True

    def __query(self, since, until):
        querystring = 'type:pr is:closed repo:%s/%s closed:"%s..%s"' % (self.repo.organization.login, self.repo.name, since, until)
        return self.git.search_issues(query=querystring, sort="updated", order="asc")

Π’Π΅ΠΏΠ΅Ρ€ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого класса Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ:

git = Github(user, passwd)
org = git.get_organization(orgname)
repo = org.get_repo(reponame)
for pull in PullRequestQuery(git, repo, "2017-01-01", "2017-12-31"):
    print "%s: %s" % (pull.number, pull.title)

Читая Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Github API ΠΎ поискС, я Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ incomplete_results отсутствуСт ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поиска Π² PyGithub. ВСроятно, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ этого значСния ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠ³ΡƒΡ‚ Π»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ поиска Π±Ρ‹Ρ‚ΡŒ (Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΌΠΈ).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ мСня Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π²Π΅Ρ‚Π²Π»Π΅Π½Π½Ρ‹ΠΉ PyGithub ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ локально ΠΈΠ· исходного ΠΊΠΎΠ΄Π° (я ΡΠΌΠΎΡ‚Ρ€ΡŽ Π½Π° β„– 606), Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, я смогу ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ это дальшС.

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° автоматичСски ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π° ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ°Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² послСднСС врСмя Π½Π΅ Π±Ρ‹Π»ΠΎ активности. Он Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚, Ссли большС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ активности. Бпасибо Π·Π° ваш Π²ΠΊΠ»Π°Π΄.

ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ?
Π° Ρ‚Π°ΠΊΠΆΠ΅ для ΠΎΠ±Ρ‰Π΅Π³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Π΄Ρ€ΡƒΠ³ΠΈΡ… запросов

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ