API GitHub membatasi pencarian hingga 1000 hasil . Batas ini memengaruhi penelusuran yang dilakukan melalui PyGitHub, seperti GitHub.search_issues .
Sepertinya tidak ada indikasi bahwa pencarian Anda telah mencapai batas ini - tidak ada pengecualian atau kesalahan yang saya ketahui. Mungkin harus ada pengecualian yang muncul ketika ini terjadi (jika dapat dideteksi).
Dimungkinkan untuk mengatasi batas ini dengan mengeluarkan beberapa kueri penelusuran, tetapi kueri tersebut harus disesuaikan agar sesuai dengan tujuan kueri tertentu - misalnya mengulangi search_issues berdasarkan rentang tanggal progresif - dan saya tidak dapat memikirkan cara untuk menggeneralisasi ini.
Adakah pemikiran tentang cara mengatasi ini? Apakah ada solusi umum?
Perhatikan bahwa masalah ini tidak ada hubungannya dengan pembatasan kecepatan atau penomoran halaman hasil.
Berikut adalah solusi yang menunjukkan cara mengambil semua permintaan tarik dalam rentang tanggal, meskipun ada lebih dari 1000 hasil:
EDIT: Saya akan menulis ulang ini menjadi metode yang menghasilkan, daripada kelas, akan lebih sederhana
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")
Dengan kelas ini, Anda sekarang dapat melakukan hal semacam ini:
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)
Membaca dokumen API Github tentang pencarian, saya juga memperhatikan bahwa incomplete_results
hilang sebagai bagian dari proses hasil pencarian di PyGithub. Mungkin memasukkan nilai itu mungkin juga sudah membantu mendeteksi apakah hasil pencarian mungkin (dalam) lengkap.
Sekarang saya memiliki PyGithub bercabang dan berjalan secara lokal dari sumber (saya melihat #606) mungkin saya dapat menyelidiki ini lebih lanjut.
Masalah ini secara otomatis ditandai sebagai basi karena tidak ada aktivitas terbaru. Ini akan ditutup jika tidak ada aktivitas lebih lanjut yang terjadi. Terima kasih atas kontribusi Anda.
membuka kembali masalah ini?
dan untuk solusi umum untuk pencarian lain juga
Komentar yang paling membantu
membuka kembali masalah ini?
dan untuk solusi umum untuk pencarian lain juga