Skip to content

Commit 191aedf

Browse files
authored
Merge pull request #25 from prius/dev-batch-api
Add option to limit batch requests to Leetcode API
2 parents d3a141c + 8fb7c41 commit 191aedf

File tree

2 files changed

+17
-7
lines changed

2 files changed

+17
-7
lines changed

generate.py

+11-5
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,13 @@ def parse_args() -> argparse.Namespace:
3333
"--start", type=int, help="Start generation from this problem", default=0
3434
)
3535
parser.add_argument(
36-
"--stop", type=int, help="Stop generation on this problem", default=2 ** 64
36+
"--stop", type=int, help="Stop generation on this problem", default=2**64
37+
)
38+
parser.add_argument(
39+
"--page-size",
40+
type=int,
41+
help="Get at most this many problems (decrease if leetcode API times out)",
42+
default=1000,
3743
)
3844

3945
args = parser.parse_args()
@@ -90,7 +96,7 @@ async def generate_anki_note(
9096
)
9197

9298

93-
async def generate(start: int, stop: int) -> None:
99+
async def generate(start: int, stop: int, page_size: int) -> None:
94100
"""
95101
Generate an Anki deck
96102
"""
@@ -157,7 +163,7 @@ async def generate(start: int, stop: int) -> None:
157163
)
158164
leetcode_deck = genanki.Deck(LEETCODE_ANKI_DECK_ID, "leetcode")
159165

160-
leetcode_data = leetcode_anki.helpers.leetcode.LeetcodeData(start, stop)
166+
leetcode_data = leetcode_anki.helpers.leetcode.LeetcodeData(start, stop, page_size)
161167

162168
note_generators: List[Coroutine[Any, Any, LeetcodeNote]] = []
163169

@@ -185,8 +191,8 @@ async def main() -> None:
185191
"""
186192
args = parse_args()
187193

188-
start, stop = args.start, args.stop
189-
await generate(start, stop)
194+
start, stop, page_size = args.start, args.stop, args.page_size
195+
await generate(start, stop, page_size)
190196

191197

192198
if __name__ == "__main__":

leetcode_anki/helpers/leetcode.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class LeetcodeData:
8383
names.
8484
"""
8585

86-
def __init__(self, start: int, stop: int) -> None:
86+
def __init__(self, start: int, stop: int, page_size: int = 1000) -> None:
8787
"""
8888
Initialize leetcode API and disk cache for API responses
8989
"""
@@ -93,11 +93,15 @@ def __init__(self, start: int, stop: int) -> None:
9393
if stop < 0:
9494
raise ValueError(f"Stop must be non-negative: {start}")
9595

96+
if page_size < 0:
97+
raise ValueError(f"Page size must be greater than 0: {page_size}")
98+
9699
if start > stop:
97100
raise ValueError(f"Start (){start}) must be not greater than stop ({stop})")
98101

99102
self._start = start
100103
self._stop = stop
104+
self._page_size = page_size
101105

102106
@cached_property
103107
def _api_instance(self) -> leetcode.api.default_api.DefaultApi:
@@ -214,7 +218,7 @@ def _get_problems_data(
214218
start = self._start
215219
stop = min(self._stop, problem_count)
216220

217-
page_size = min(3000, stop - start + 1)
221+
page_size = min(self._page_size, stop - start + 1)
218222

219223
problems: List[
220224
leetcode.models.graphql_question_detail.GraphqlQuestionDetail

0 commit comments

Comments
 (0)