mirror of
https://github.com/K-Dense-AI/claude-scientific-skills.git
synced 2026-03-28 07:25:14 +08:00
80 lines
2.0 KiB
Markdown
80 lines
2.0 KiB
Markdown
# Pagination: follow(), everything(), Generators
|
|
|
|
Pyzotero returns 100 items by default. Use these methods to retrieve more.
|
|
|
|
## everything() — Retrieve All Results
|
|
|
|
The simplest way to get all items:
|
|
|
|
```python
|
|
# All items in the library
|
|
all_items = zot.everything(zot.items())
|
|
|
|
# All top-level items
|
|
all_top = zot.everything(zot.top())
|
|
|
|
# All items in a collection
|
|
all_col = zot.everything(zot.collection_items('COLKEY'))
|
|
|
|
# All items matching a search
|
|
all_results = zot.everything(zot.items(q='machine learning', itemType='journalArticle'))
|
|
```
|
|
|
|
`everything()` works with all Read API calls that can return multiple items.
|
|
|
|
## follow() — Sequential Pagination
|
|
|
|
```python
|
|
# Retrieve items in batches, manually advancing the page
|
|
first_batch = zot.top(limit=25)
|
|
second_batch = zot.follow() # next 25 items
|
|
third_batch = zot.follow() # next 25 items
|
|
```
|
|
|
|
**Warning**: `follow()` raises `StopIteration` when no more items are available. Not valid after single-item calls like `zot.item()`.
|
|
|
|
## iterfollow() — Generator
|
|
|
|
```python
|
|
# Create a generator over follow()
|
|
first = zot.top(limit=10)
|
|
lazy = zot.iterfollow()
|
|
|
|
# Retrieve subsequent pages
|
|
second = next(lazy)
|
|
third = next(lazy)
|
|
```
|
|
|
|
## makeiter() — Generator over Any Method
|
|
|
|
```python
|
|
# Create a generator directly from a method call
|
|
gen = zot.makeiter(zot.top(limit=25))
|
|
|
|
page1 = next(gen) # first 25 items
|
|
page2 = next(gen) # next 25 items
|
|
# Raises StopIteration when exhausted
|
|
```
|
|
|
|
## Manual start/limit Pagination
|
|
|
|
```python
|
|
page_size = 50
|
|
offset = 0
|
|
|
|
while True:
|
|
batch = zot.items(limit=page_size, start=offset)
|
|
if not batch:
|
|
break
|
|
# process batch
|
|
for item in batch:
|
|
process(item)
|
|
offset += page_size
|
|
```
|
|
|
|
## Performance Notes
|
|
|
|
- `everything()` makes multiple API calls sequentially; large libraries may take time.
|
|
- For libraries with thousands of items, use `since=version` to retrieve only changed items (useful for sync workflows).
|
|
- All of `follow()`, `everything()`, and `makeiter()` are only valid for methods that return multiple items.
|