mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-22 14:46:41 +02:00
fix(events): Eventbrite provider — switch from dead API to web scraping
Eventbrite shut down their public Event Search API (/v3/events/search) in 2023. The provider now uses the website extractor pipeline (mana-research + LLM) to scrape Eventbrite's public search pages. No API key needed — same pipeline as any website source. Also adds mana-events to generate-env.mjs for automatic .env generation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
536fc89050
commit
97abd251e3
5 changed files with 60 additions and 155 deletions
|
|
@ -42,7 +42,6 @@ const TEST_CONFIG: Config = {
|
|||
},
|
||||
manaResearchUrl: 'http://localhost:3068',
|
||||
manaLlmUrl: 'http://localhost:3025',
|
||||
eventbriteApiKey: null,
|
||||
meetupApiKey: null,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -29,7 +29,14 @@ describe('Provider registry', () => {
|
|||
});
|
||||
|
||||
describe('Eventbrite provider', () => {
|
||||
it('returns empty with error when API key is not set', async () => {
|
||||
it('requires a region label', async () => {
|
||||
const provider = getProvider('eventbrite')!;
|
||||
const result = await provider.fetchEvents('', 'Test');
|
||||
expect(result.events).toHaveLength(0);
|
||||
expect(result.error).toContain('Region label');
|
||||
});
|
||||
|
||||
it('requires external service config', async () => {
|
||||
const provider = getProvider('eventbrite')!;
|
||||
const result = await provider.fetchEvents('', 'Test', {
|
||||
lat: 47.997,
|
||||
|
|
@ -38,15 +45,7 @@ describe('Eventbrite provider', () => {
|
|||
regionLabel: 'Freiburg',
|
||||
});
|
||||
expect(result.events).toHaveLength(0);
|
||||
expect(result.error).toContain('EVENTBRITE_API_KEY');
|
||||
});
|
||||
|
||||
it('gracefully handles missing coordinates (after API key check)', async () => {
|
||||
// Without API key, the key check fires first — that's the expected behavior
|
||||
const provider = getProvider('eventbrite')!;
|
||||
const result = await provider.fetchEvents('', 'Test');
|
||||
expect(result.events).toHaveLength(0);
|
||||
expect(result.error).toBeTruthy();
|
||||
expect(result.error).toContain('config');
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue