Pygithub: هناك حد 1000 نتيجة لكل بحث.

تم إنشاؤها على ٢١ يونيو ٢٠١٨  ·  5تعليقات  ·  مصدر: PyGithub/PyGithub

يحد GitHub API GitHub.search_issues .

يبدو أنه لا يوجد ما يشير إلى أن بحثك قد وصل إلى هذا الحد - لا يوجد استثناء أو خطأ أعلم به. ربما يجب أن يكون هناك استثناء عند حدوث ذلك (إذا كان من الممكن اكتشافه).

من الممكن التغلب على هذا الحد عن طريق إصدار استعلامات بحث متعددة ، ولكن يجب أن تكون هذه الاستعلامات مصممة لتلائم الأهداف المحددة للاستعلام - على سبيل المثال التكرار عبر إصدارات البحث حسب نطاقات زمنية تقدمية - ولا يمكنني التفكير في طريقة لتعميم ذلك.

أي أفكار حول كيفية معالجة هذا؟ هل يوجد حل عام؟

لاحظ أن هذه المشكلة لا علاقة لها بتحديد المعدل أو ترقيم الصفحات للنتائج.

stale

التعليق الأكثر فائدة

إعادة فتح هذه القضية؟
وللحصول على حل عام لعمليات البحث الأخرى أيضًا

ال 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 التقييمات