Schedule Methods
Schedule methods allow you to set up automated, recurring scrapes. See the MeterClient reference for complete method signatures.
Quick reference
| Method | Description |
|---|
create_schedule() | Create a recurring schedule |
list_schedules() | List all schedules |
update_schedule() | Modify schedule settings |
delete_schedule() | Delete a schedule |
get_schedule_changes() | Get unseen changes (pull-based) |
Common workflows
Interval-based monitoring
from meter_sdk import MeterClient
client = MeterClient(api_key="sk_live_...")
# Run every hour
schedule = client.create_schedule(
strategy_id="550e8400-e29b-41d4-a716-446655440000",
url="https://example.com/products",
interval_seconds=3600
)
print(f"Schedule created: {schedule['id']}")
print(f"Next run: {schedule['next_run_at']}")
Cron-based monitoring
# Daily at 9 AM
schedule = client.create_schedule(
strategy_id="550e8400-e29b-41d4-a716-446655440000",
url="https://example.com/products",
cron_expression="0 9 * * *"
)
# Weekdays at 8 AM
schedule = client.create_schedule(
strategy_id="550e8400-e29b-41d4-a716-446655440000",
url="https://example.com/products",
cron_expression="0 8 * * 1-5"
)
With webhook
schedule = client.create_schedule(
strategy_id="550e8400-e29b-41d4-a716-446655440000",
url="https://example.com/products",
interval_seconds=3600,
webhook_url="https://your-app.com/webhooks/meter"
)
Pull-based change detection
import time
while True:
# Check for changes every hour
changes = client.get_schedule_changes(
schedule_id="880e8400-e29b-41d4-a716-446655440000",
mark_seen=True
)
if changes['count'] > 0:
print(f"Processing {changes['count']} changes")
for change in changes['changes']:
# Process change['results']
update_database(change['results'])
time.sleep(3600)
Keyword filtering
Filter results to only include items matching specific keywords:
# Filter for articles mentioning both "jfk" AND "tariff"
changes = client.get_schedule_changes(
schedule_id="880e8400-e29b-41d4-a716-446655440000",
filter="+jfk +tariff"
)
# Filter for articles mentioning "jfk" OR "elon"
changes = client.get_schedule_changes(
schedule_id="880e8400-e29b-41d4-a716-446655440000",
filter="jfk elon"
)
# Filter for articles with "jfk" but NOT "biden"
changes = client.get_schedule_changes(
schedule_id="880e8400-e29b-41d4-a716-446655440000",
filter="+jfk -biden"
)
# Exact phrase matching
changes = client.get_schedule_changes(
schedule_id="880e8400-e29b-41d4-a716-446655440000",
filter='"elon musk"'
)
The filter applies to individual items within results. Only matching items are returned.
Jobs with zero matching items are excluded entirely.
Manage schedules
# List all schedules
schedules = client.list_schedules()
for schedule in schedules:
print(f"{schedule['id']}: {schedule['enabled']}")
# Disable temporarily
client.update_schedule(schedule_id, enabled=False)
# Change interval
client.update_schedule(schedule_id, interval_seconds=7200)
# Delete
client.delete_schedule(schedule_id)
Pause and resume
# Pause during maintenance
client.update_schedule(schedule_id, enabled=False)
# Do maintenance work
regenerate_strategy()
# Resume
client.update_schedule(schedule_id, enabled=True)
See also
Need help?
Email me at [email protected]