Simon Willison の ' Paginating through the GitHub GraphQL API with Python ' からインスピレーションを得て、クエリのページネーションのために私が行ってきたことを以下に示します。
query {
node(id: "PROJECT_ID") {
... on ProjectNext {
items(first: 100 after: CURSOR) {
pageInfo {
hasNextPage
endCursor
}
nodes {
title
fieldValues(first: 8) {
nodes {
value
}
}
content {
... on Issue {
number
labels(first: 50) {
nodes {
name
}}}}}}}}}
私の Python コードではPROJECT_ID
、参照しているプロジェクト ID に設定された変数を使用しています。
カーソルafter: CURSOR
が最初に置き換えられ""
、次に設定した次のページに置き換えられますcursor = 'after:\\"' + response["data"]["node"]["items"]["pageInfo"]["endCursor"] + '\\"'
私の完全なコードは、私の dump_cards ユーティリティのatdumpmemexモジュールにあります。
ここで重要なのはpageInfo
、他の関連するノードとうまくやっていくことです。次に、次の反復のクエリにフィードできるように、true になるendCursor
たびに取得します。hasNextPage
pageInfo は次のようになります。
"pageInfo": {
"hasNextPage": false,
"endCursor": "Y3Vyc29yOnYyOpHOAAhOsg=="
}
現時点でendCursor
は base64 でエンコードさcursor:v2:XYZ
れていますが、GitHub が他の ID を base64 エンコードから他のスキームに移動したため、これに依存しないでください。