diff --git a/backend.py b/backend.py index 0b23558..0382593 100644 --- a/backend.py +++ b/backend.py @@ -88,6 +88,7 @@ def create_app(): app.add_route('/demo/add', event_form) # Handle event submission form app.add_route('/demo/by-what', demo, suffix='by_what') # Handle events by type page app.add_route('/demo/map-by-what', demo, suffix='map_by_what') # Handle map by event type page + app.add_route('/demo/map-by-what/{event_type}', demo, suffix='map_by_what_type') # Handle map by specific event type app.add_route('/demo/edit/{id}', demo, suffix='edit') # Handle event editing page app.add_route('/demo/by_id/{id}', demo, suffix='by_id') # Handle view single event by id app.add_route('/demo/traffic', demo, suffix='traffic') # Handle traffic jam reporting page diff --git a/doc/api_endpoints.md b/doc/api_endpoints.md new file mode 100644 index 0000000..340417d --- /dev/null +++ b/doc/api_endpoints.md @@ -0,0 +1,160 @@ +# API Endpoints Documentation + +This document provides a comprehensive list of all API endpoints available in the OpenEventDatabase (OEDB) backend. + +## Main API Endpoints + +### Root Endpoint +- **URL**: `/` +- **Method**: GET +- **Description**: Provides general information about the API, including version and available endpoints. +- **Response**: JSON object with API information. + +### Event Endpoints + +#### Get Events +- **URL**: `/event` +- **Method**: GET +- **Description**: Retrieves a collection of events based on query parameters. +- **Query Parameters**: + - `what`: Filter events by type (e.g., `sport.match.football`) + - `when`: Filter events by time period (e.g., `last7days`, `today`, `tomorrow`) + - `limit`: Maximum number of events to return (default: 100) + - `bbox`: Bounding box for geographic filtering (format: `min_lon,min_lat,max_lon,max_lat`) +- **Response**: GeoJSON FeatureCollection of events. + +#### Create Event +- **URL**: `/event` +- **Method**: POST +- **Description**: Creates a new event. +- **Request Body**: GeoJSON Feature representing the event. +- **Response**: JSON object with the created event ID. + +#### Get Event by ID +- **URL**: `/event/{id}` +- **Method**: GET +- **Description**: Retrieves a specific event by its ID. +- **Response**: GeoJSON Feature of the requested event. + +#### Update Event +- **URL**: `/event/{id}` +- **Method**: PUT +- **Description**: Updates an existing event. +- **Request Body**: GeoJSON Feature with updated event data. +- **Response**: JSON object with the updated event ID. + +#### Delete Event +- **URL**: `/event/{id}` +- **Method**: DELETE +- **Description**: Deletes an event by its ID. +- **Response**: JSON object confirming deletion. + +#### Search Events +- **URL**: `/event/search` +- **Method**: GET +- **Description**: Advanced search for events with more complex filtering options. +- **Query Parameters**: Various search parameters (see `/doc/api_search.md` for details). +- **Response**: GeoJSON FeatureCollection of matching events. + +### Statistics Endpoint +- **URL**: `/stats` +- **Method**: GET +- **Description**: Provides statistics about the database, including event counts and recent updates. +- **Response**: JSON object with statistics. + +### RSS Feeds + +#### Latest Events RSS +- **URL**: `/rss` +- **Method**: GET +- **Description**: Provides an RSS feed of the latest 200 events. +- **Response**: XML RSS feed. + +#### Events by Family RSS +- **URL**: `/rss/by/{family}` +- **Method**: GET +- **Description**: Provides an RSS feed of events filtered by family (e.g., sport, culture). +- **Response**: XML RSS feed. + +### Database Dumps + +#### List Database Dumps +- **URL**: `/db/dumps` +- **Method**: GET +- **Description**: Lists all available database dumps. +- **Response**: JSON object with list of dumps. + +#### Create Database Dumps +- **URL**: `/db/dumps/create` +- **Method**: POST +- **Description**: Creates new database dumps in SQL and GeoJSON formats. +- **Response**: JSON object with information about the created dumps. + +## Demo/UI Endpoints + +These endpoints provide web interfaces for interacting with the API: + +### Main Demo Page +- **URL**: `/demo` +- **Method**: GET +- **Description**: Main demo page with a map interface to explore events. + +### Event Submission Form +- **URL**: `/demo/add` +- **Method**: GET +- **Description**: Form for submitting new events. + +### Events by Type +- **URL**: `/demo/by-what` +- **Method**: GET +- **Description**: Page showing events grouped by their type. + +### Map by Event Type +- **URL**: `/demo/map-by-what` +- **Method**: GET +- **Description**: Map interface showing events colored by their type. + +### Event Editing +- **URL**: `/demo/edit/{id}` +- **Method**: GET +- **Description**: Interface for editing an existing event. + +### View Event by ID +- **URL**: `/demo/by_id/{id}` +- **Method**: GET +- **Description**: Page showing details of a specific event. + +### Traffic Jam Reporting +- **URL**: `/demo/traffic` +- **Method**: GET +- **Description**: Interface for reporting traffic jams. + +### View Saved Events +- **URL**: `/demo/view-events` +- **Method**: GET +- **Description**: Page showing events saved by the user. + +### Statistics by Event Type +- **URL**: `/demo/stats` +- **Method**: GET +- **Description**: Page showing statistics grouped by event type. + +### Live Events +- **URL**: `/demo/live` +- **Method**: GET +- **Description**: Real-time view of events with auto-refresh. + +## Static Files +- **URL**: `/static/` +- **Method**: GET +- **Description**: Serves static files (CSS, JavaScript, images) for the demo interfaces. + +## Additional Documentation + +For more detailed information about specific aspects of the API, refer to these documents: + +- [API Query Parameters](/doc/api_query_params.md) +- [API Search](/doc/api_search.md) +- [API Load Testing](/doc/api_load_test.md) +- [Anti-Spam Measures](/doc/anti_spam.md) +- [Demo Endpoint](/doc/demo_endpoint.md) \ No newline at end of file diff --git a/extractors/agenda_geek.py b/extractors/agenda_geek.py index 5721990..eff6be1 100644 --- a/extractors/agenda_geek.py +++ b/extractors/agenda_geek.py @@ -37,9 +37,10 @@ logging.basicConfig( logger = logging.getLogger(__name__) class AgendaGeekScraper: - def __init__(self, api_url: str = "https://api.openeventdatabase.org", dry_run: bool = False): + def __init__(self, api_url: str = "https://api.openeventdatabase.org", dry_run: bool = False, page: int = 1): self.api_url = api_url.rstrip('/') self.dry_run = dry_run + self.page = page self.session = requests.Session() self.session.headers.update({ 'User-Agent': 'OEDB-AgendaGeek-Scraper/1.0 (+https://github.com/cquest/oedb)' @@ -47,7 +48,7 @@ class AgendaGeekScraper: def get_events_list(self) -> List[str]: """Récupère la liste des liens d'événements depuis la page principale""" - url = "https://lagendageek.com/tevents/page/10" + url = f"https://lagendageek.com/tevents/page/{self.page}" logger.info(f"🔍 Récupération de la liste des événements depuis {url}") try: @@ -395,7 +396,8 @@ class AgendaGeekScraper: def main(): parser = argparse.ArgumentParser(description='Scraper Agenda Geek vers OEDB') - parser.add_argument('--limit', type=int, default=5, help='Nombre d\'événements à traiter') + parser.add_argument('--limit', type=int, default=20, help='Nombre d\'événements à traiter') + parser.add_argument('--page', type=int, default=1, help='Numéro de page du site') parser.add_argument('--offset', type=int, default=0, help='Nombre d\'événements à ignorer') parser.add_argument('--api-url', default='https://api.openeventdatabase.org', help='URL de l\'API OEDB') parser.add_argument('--dry-run', action='store_true', help='Mode test sans envoi vers l\'API') @@ -406,7 +408,7 @@ def main(): if args.verbose: logging.getLogger().setLevel(logging.DEBUG) - scraper = AgendaGeekScraper(api_url=args.api_url, dry_run=args.dry_run) + scraper = AgendaGeekScraper(api_url=args.api_url, dry_run=args.dry_run, page=args.page) scraper.process_events(limit=args.limit, offset=args.offset) if __name__ == "__main__": diff --git a/extractors/agenda_geek_scraper.log b/extractors/agenda_geek_scraper.log new file mode 100644 index 0000000..9d65272 --- /dev/null +++ b/extractors/agenda_geek_scraper.log @@ -0,0 +1,187 @@ +2025-09-26 17:16:58,979 - INFO - 🚀 Début du traitement - Limite: 15, Offset: 5 +2025-09-26 17:16:58,979 - INFO - 🔍 Récupération de la liste des événements depuis https://lagendageek.com/tevents/page/10 +2025-09-26 17:17:02,288 - INFO - ✅ 20 événements trouvés sur la page +2025-09-26 17:17:02,288 - INFO - 📊 Traitement de 15 événements (6 à 20 sur 20) +2025-09-26 17:17:02,288 - INFO - 🔄 [1/15] Traitement de https://lagendageek.com/tevent/fusion-event/ +2025-09-26 17:17:05,978 - INFO - ✅ Événement créé avec succès: ID aaacbb4a-be1c-467d-9f78-3db61861937b +2025-09-26 17:17:06,979 - INFO - 🔄 [2/15] Traitement de https://lagendageek.com/tevent/manga-ten-expo-pompaire/ +2025-09-26 17:17:11,004 - INFO - ✅ Événement créé avec succès: ID f298700e-4f2b-4682-a978-a364be0cccfc +2025-09-26 17:17:12,004 - INFO - 🔄 [3/15] Traitement de https://lagendageek.com/tevent/geek-la-gaillarde/ +2025-09-26 17:17:15,890 - INFO - ✅ Événement créé avec succès: ID 7ce8f4c0-56b4-4cb3-acf7-56e919d4b9d6 +2025-09-26 17:17:16,890 - INFO - 🔄 [4/15] Traitement de https://lagendageek.com/tevent/geek-legends-lons-le-saunier-4/ +2025-09-26 17:17:19,827 - INFO - 🚀 Début du traitement - Limite: 15, Offset: 5 +2025-09-26 17:17:19,827 - INFO - 🔍 Récupération de la liste des événements depuis https://lagendageek.com/tevents/page/10 +2025-09-26 17:17:20,787 - INFO - ✅ Événement créé avec succès: ID f96f9167-1271-4804-bebe-eb3f282c69b3 +2025-09-26 17:17:21,788 - INFO - 🔄 [5/15] Traitement de https://lagendageek.com/tevent/korean-tours-festival-2026/ +2025-09-26 17:17:23,000 - INFO - ✅ 20 événements trouvés sur la page +2025-09-26 17:17:23,000 - INFO - 📊 Traitement de 15 événements (6 à 20 sur 20) +2025-09-26 17:17:23,000 - INFO - 🔄 [1/15] Traitement de https://lagendageek.com/tevent/fusion-event/ +2025-09-26 17:17:25,823 - INFO - ✅ Événement créé avec succès: ID 41e49d2f-a3f7-4b4c-886b-9c651fbad423 +2025-09-26 17:17:26,824 - INFO - 🔄 [6/15] Traitement de https://lagendageek.com/tevent/festival-international-des-jeux-2026/ +2025-09-26 17:17:26,978 - INFO - ⚠️ Événement déjà existant (conflit) +2025-09-26 17:17:27,979 - INFO - 🔄 [2/15] Traitement de https://lagendageek.com/tevent/manga-ten-expo-pompaire/ +2025-09-26 17:17:30,822 - INFO - ✅ Événement créé avec succès: ID b1750ba1-fb5f-4a6f-974d-48dbad081ce6 +2025-09-26 17:17:31,701 - INFO - ⚠️ Événement déjà existant (conflit) +2025-09-26 17:17:31,823 - INFO - 🔄 [7/15] Traitement de https://lagendageek.com/tevent/japan-expo-marseille-2026/ +2025-09-26 17:17:32,702 - INFO - 🔄 [3/15] Traitement de https://lagendageek.com/tevent/geek-la-gaillarde/ +2025-09-26 17:17:35,542 - INFO - ✅ Événement créé avec succès: ID 4e145c54-3aed-4ad1-8c76-a14a13019585 +2025-09-26 17:17:36,311 - INFO - ⚠️ Événement déjà existant (conflit) +2025-09-26 17:17:36,543 - INFO - 🔄 [8/15] Traitement de https://lagendageek.com/tevent/manga-ten-expo-puilboreau/ +2025-09-26 17:17:37,311 - INFO - 🔄 [4/15] Traitement de https://lagendageek.com/tevent/geek-legends-lons-le-saunier-4/ +2025-09-26 17:17:40,290 - INFO - ✅ Événement créé avec succès: ID a7ac00a9-1946-48a9-afbe-2f388a274d32 +2025-09-26 17:17:41,033 - INFO - ⚠️ Événement déjà existant (conflit) +2025-09-26 17:17:41,291 - INFO - 🔄 [9/15] Traitement de https://lagendageek.com/tevent/aka-to-kin-2026/ +2025-09-26 17:17:42,033 - INFO - 🔄 [5/15] Traitement de https://lagendageek.com/tevent/korean-tours-festival-2026/ +2025-09-26 17:17:45,558 - INFO - ✅ Événement créé avec succès: ID 3ede724b-acfc-4dc9-a7a6-4bbaf651ecf9 +2025-09-26 17:17:46,088 - INFO - ⚠️ Événement déjà existant (conflit) +2025-09-26 17:17:46,558 - INFO - 🔄 [10/15] Traitement de https://lagendageek.com/tevent/un-week-end-au-soleil-levant-2026/ +2025-09-26 17:17:47,088 - INFO - 🔄 [6/15] Traitement de https://lagendageek.com/tevent/festival-international-des-jeux-2026/ +2025-09-26 17:17:50,631 - INFO - ✅ Événement créé avec succès: ID 4fbe7d72-b2df-4ea7-9e6a-39ee8f1f2714 +2025-09-26 17:17:50,815 - INFO - ⚠️ Événement déjà existant (conflit) +2025-09-26 17:17:51,632 - INFO - 🔄 [11/15] Traitement de https://lagendageek.com/tevent/caramanga-2026/ +2025-09-26 17:17:51,815 - INFO - 🔄 [7/15] Traitement de https://lagendageek.com/tevent/japan-expo-marseille-2026/ +2025-09-26 17:17:55,267 - INFO - ✅ Événement créé avec succès: ID 097f54b9-e039-4493-8e1e-c472e3534c0e +2025-09-26 17:17:55,468 - INFO - ⚠️ Événement déjà existant (conflit) +2025-09-26 17:17:56,268 - INFO - 🔄 [12/15] Traitement de https://lagendageek.com/tevent/ready-set-romance-2026/ +2025-09-26 17:17:56,468 - INFO - 🔄 [8/15] Traitement de https://lagendageek.com/tevent/manga-ten-expo-puilboreau/ +2025-09-26 17:18:00,079 - INFO - ✅ Événement créé avec succès: ID 3688b1aa-8967-4f7a-816c-be66e026b55a +2025-09-26 17:18:00,236 - INFO - ⚠️ Événement déjà existant (conflit) +2025-09-26 17:18:01,080 - INFO - 🔄 [13/15] Traitement de https://lagendageek.com/tevent/manga-ten-expo-aiffres/ +2025-09-26 17:18:01,236 - INFO - 🔄 [9/15] Traitement de https://lagendageek.com/tevent/aka-to-kin-2026/ +2025-09-26 17:18:05,298 - INFO - ⚠️ Événement déjà existant (conflit) +2025-09-26 17:18:05,552 - INFO - ✅ Événement créé avec succès: ID 2c22c1fc-7736-4a7a-bc10-72c19d16e3e6 +2025-09-26 17:18:06,299 - INFO - 🔄 [10/15] Traitement de https://lagendageek.com/tevent/un-week-end-au-soleil-levant-2026/ +2025-09-26 17:18:06,552 - INFO - 🔄 [14/15] Traitement de https://lagendageek.com/tevent/paris-manga-sci-fi-show-39e-edition/ +2025-09-26 17:18:10,028 - INFO - ⚠️ Événement déjà existant (conflit) +2025-09-26 17:18:10,635 - INFO - ✅ Événement créé avec succès: ID 50e4b035-b8cc-4d86-9d4c-e00804a26e4d +2025-09-26 17:18:11,029 - INFO - 🔄 [11/15] Traitement de https://lagendageek.com/tevent/caramanga-2026/ +2025-09-26 17:18:11,636 - INFO - 🔄 [15/15] Traitement de https://lagendageek.com/tevent/symphony-on-titan-10/ +2025-09-26 17:18:14,718 - INFO - ⚠️ Événement déjà existant (conflit) +2025-09-26 17:18:15,317 - INFO - ✅ Événement créé avec succès: ID 8b0e0708-803f-44b3-bc1c-a327e6678c02 +2025-09-26 17:18:15,719 - INFO - 🔄 [12/15] Traitement de https://lagendageek.com/tevent/ready-set-romance-2026/ +2025-09-26 17:18:16,317 - INFO - 🏁 Traitement terminé - Succès: 15, Erreurs: 0 +2025-09-26 17:18:19,495 - INFO - ⚠️ Événement déjà existant (conflit) +2025-09-26 17:18:20,495 - INFO - 🔄 [13/15] Traitement de https://lagendageek.com/tevent/manga-ten-expo-aiffres/ +2025-09-26 17:18:24,020 - INFO - ⚠️ Événement déjà existant (conflit) +2025-09-26 17:18:25,021 - INFO - 🔄 [14/15] Traitement de https://lagendageek.com/tevent/paris-manga-sci-fi-show-39e-edition/ +2025-09-26 17:18:28,610 - INFO - ⚠️ Événement déjà existant (conflit) +2025-09-26 17:18:29,611 - INFO - 🔄 [15/15] Traitement de https://lagendageek.com/tevent/symphony-on-titan-10/ +2025-09-26 17:18:33,074 - INFO - ⚠️ Événement déjà existant (conflit) +2025-09-26 17:18:34,074 - INFO - 🏁 Traitement terminé - Succès: 15, Erreurs: 0 +2025-09-26 17:19:56,059 - INFO - 🚀 Début du traitement - Limite: 20, Offset: 0 +2025-09-26 17:22:50,865 - INFO - 🚀 Début du traitement - Limite: 20, Offset: 0 +2025-09-26 17:22:50,865 - INFO - 🔍 Récupération de la liste des événements depuis https://lagendageek.com/tevents/page/11 +2025-09-26 17:22:54,108 - INFO - ✅ 20 événements trouvés sur la page +2025-09-26 17:22:54,108 - INFO - 📊 Traitement de 20 événements (1 à 20 sur 20) +2025-09-26 17:22:54,108 - INFO - 🔄 [1/20] Traitement de https://lagendageek.com/tevent/les-plus-belles-musiques-des-films-de-miyazaki-9/ +2025-09-26 17:22:57,706 - INFO - 🏃♂️ DRY RUN - Événement qui serait envoyé: +2025-09-26 17:22:57,706 - INFO - { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 5.4540272, + 43.5274379 + ] + }, + "properties": { + "label": "Les Plus Belles Musiques des Films de Miyazaki", + "type": "scheduled", + "what": "culture.geek", + "start": "2026-03-14T20:30:00+00:00", + "stop": "2026-03-14T21:15:00+00:00", + "where": "Théâtre du jeu de paume, 21 rue de l'Opéra, Aix en Provence, 13100, France", + "description": "Quatuor de musiciens passionnés de pop culture, le Grissini project vous interprète les plus belles musiques des films d’animation d’Hayao Miyazaki. \nAu programme, les plus beaux thèmes : “Le Voyage de Chihiro”, “Mon Voisin Totoro”, “Le Château ambulant”, “Princesse Mononoké”, “Le Vent se lève”, “Kiki la petite sorcière”, “Ponyo sur la falaise”,…\nEt tant d’autres ! \nAu croisement de la musique classique et de la pop culture, une évasion le temps d’un concert dans le Japon fantastique des studios Ghibli, au son des mélodies de Joe Hisaishi. \nLes Artistes :\nRomain Vaudé | Piano\nMaja Samuelsson ou Stella Siecinska | Chant\nFlorestan Raes | Violon\nClara Germont | Violoncelle", + "source:name": "L'Agenda Geek", + "source:url": "https://lagendageek.com/tevent/les-plus-belles-musiques-des-films-de-miyazaki-9/", + "source:uid": "85107-1773520200-1773522900@lagendageek.com", + "url": "https://lagendageek.com/tevent/les-plus-belles-musiques-des-films-de-miyazaki-9/" + } +} +2025-09-26 17:22:58,707 - INFO - 🔄 [2/20] Traitement de https://lagendageek.com/tevent/salon-du-manga-a-cambrai-2026/ +2025-09-26 17:23:13,137 - INFO - 🚀 Début du traitement - Limite: 20, Offset: 0 +2025-09-26 17:23:13,137 - INFO - 🔍 Récupération de la liste des événements depuis https://lagendageek.com/tevents/page/11 +2025-09-26 17:23:17,425 - INFO - ✅ 20 événements trouvés sur la page +2025-09-26 17:23:17,425 - INFO - 📊 Traitement de 20 événements (1 à 20 sur 20) +2025-09-26 17:23:17,425 - INFO - 🔄 [1/20] Traitement de https://lagendageek.com/tevent/les-plus-belles-musiques-des-films-de-miyazaki-9/ +2025-09-26 17:23:21,400 - INFO - ✅ Événement créé avec succès: ID 97318052-05d6-420a-b7a7-7323587c69cd +2025-09-26 17:23:22,400 - INFO - 🔄 [2/20] Traitement de https://lagendageek.com/tevent/salon-du-manga-a-cambrai-2026/ +2025-09-26 17:23:26,785 - INFO - ✅ Événement créé avec succès: ID 91cde5d3-1856-482c-b26e-daccfe205776 +2025-09-26 17:23:27,785 - INFO - 🔄 [3/20] Traitement de https://lagendageek.com/tevent/manga-ten-expo-montamise/ +2025-09-26 17:23:31,599 - INFO - ✅ Événement créé avec succès: ID 561e571a-e8ff-4294-9983-bccef1b8a2e0 +2025-09-26 17:23:32,599 - INFO - 🔄 [4/20] Traitement de https://lagendageek.com/tevent/gresimaginaire-2026/ +2025-09-26 17:23:36,432 - INFO - ✅ Événement créé avec succès: ID 364686b5-2827-4549-b755-18c6edbf5e68 +2025-09-26 17:23:37,433 - INFO - 🔄 [5/20] Traitement de https://lagendageek.com/tevent/geek-collector-vesoul-6/ +2025-09-26 17:23:41,224 - INFO - ✅ Événement créé avec succès: ID e0e4a486-5558-498b-bb1c-39b02b95e843 +2025-09-26 17:23:42,224 - INFO - 🔄 [6/20] Traitement de https://lagendageek.com/tevent/trolls-legendes-2026/ +2025-09-26 17:23:45,859 - INFO - ✅ Événement créé avec succès: ID ad4f54c3-db63-48ae-abe2-c9030520b5f4 +2025-09-26 17:23:46,860 - INFO - 🔄 [7/20] Traitement de https://lagendageek.com/tevent/manga-ten-expo-saint-leger-sous-cholet/ +2025-09-26 17:23:50,504 - INFO - ✅ Événement créé avec succès: ID 856852dc-23bd-431b-b044-fd93a920c568 +2025-09-26 17:23:51,504 - INFO - 🔄 [8/20] Traitement de https://lagendageek.com/tevent/angers-geekfest-2026/ +2025-09-26 17:23:55,307 - INFO - ✅ Événement créé avec succès: ID 796cc0b3-b41f-48cf-bc73-38088388d75f +2025-09-26 17:23:56,308 - INFO - 🔄 [9/20] Traitement de https://lagendageek.com/tevent/tgs-montpellier-occitanie-game-show-2026/ +2025-09-26 17:24:00,060 - INFO - ✅ Événement créé avec succès: ID c39a76c6-4eb3-4b2b-aad6-719dd4b95e7e +2025-09-26 17:24:01,060 - INFO - 🔄 [10/20] Traitement de https://lagendageek.com/tevent/marche-du-geek/ +2025-09-26 17:24:05,081 - INFO - ✅ Événement créé avec succès: ID dcbcc6e4-4916-4a01-8751-d19a42b1b9cc +2025-09-26 17:24:06,082 - INFO - 🔄 [11/20] Traitement de https://lagendageek.com/tevent/necronomicon-2026-8eme-edition/ +2025-09-26 17:24:09,879 - INFO - ✅ Événement créé avec succès: ID 0d0cdb50-921d-4ff3-91c0-0061e9b08df1 +2025-09-26 17:24:10,879 - INFO - 🔄 [12/20] Traitement de https://lagendageek.com/tevent/gamefest-charleville-m-11/ +2025-09-26 17:24:14,606 - INFO - ✅ Événement créé avec succès: ID 19fee274-bc24-4ca7-9839-0ab5c6ade607 +2025-09-26 17:24:15,606 - INFO - 🔄 [13/20] Traitement de https://lagendageek.com/tevent/11eme-vide-grenier-du-geek-de-nancy/ +2025-09-26 17:24:19,413 - INFO - ✅ Événement créé avec succès: ID 5c8cdb6d-2efe-4d12-aa2c-ad96f6a95f24 +2025-09-26 17:24:20,413 - INFO - 🔄 [14/20] Traitement de https://lagendageek.com/tevent/luxcon-2026/ +2025-09-26 17:24:23,984 - INFO - ✅ Événement créé avec succès: ID 39a2a818-44a4-4acc-9322-e26bf8f138fd +2025-09-26 17:24:24,984 - INFO - 🔄 [15/20] Traitement de https://lagendageek.com/tevent/manga-ten-expo-louverne/ +2025-09-26 17:24:28,806 - INFO - ✅ Événement créé avec succès: ID 988c8408-c882-401e-a3af-3e56ddbcd7eb +2025-09-26 17:24:29,806 - INFO - 🔄 [16/20] Traitement de https://lagendageek.com/tevent/mangazur-2026/ +2025-09-26 17:24:33,649 - INFO - ✅ Événement créé avec succès: ID c9698756-7d64-4d6e-b3b9-983698b45a36 +2025-09-26 17:24:34,649 - INFO - 🔄 [17/20] Traitement de https://lagendageek.com/tevent/play-azur-festival-2026/ +2025-09-26 17:24:38,474 - INFO - ✅ Événement créé avec succès: ID a17a3b8f-eb98-4570-a9e8-83f4df729772 +2025-09-26 17:24:39,474 - INFO - 🔄 [18/20] Traitement de https://lagendageek.com/tevent/manga-ten-expo-chartres-de-bretagne/ +2025-09-26 17:24:43,220 - INFO - ✅ Événement créé avec succès: ID 11f56563-2488-402a-8391-df9b6ec6048f +2025-09-26 17:24:44,221 - INFO - 🔄 [19/20] Traitement de https://lagendageek.com/tevent/geek-collector-remiremont-1/ +2025-09-26 17:24:47,904 - INFO - ✅ Événement créé avec succès: ID 6a638653-44c3-4b27-81c9-818cdfeba1f5 +2025-09-26 17:24:48,904 - INFO - 🔄 [20/20] Traitement de https://lagendageek.com/tevent/geek-collector-saone-1/ +2025-09-26 17:24:52,503 - INFO - ✅ Événement créé avec succès: ID 2724f778-12cf-4736-affc-5b4736a6cdab +2025-09-26 17:24:53,504 - INFO - 🏁 Traitement terminé - Succès: 20, Erreurs: 0 +2025-09-26 17:31:02,356 - INFO - 🚀 Début du traitement - Limite: 20, Offset: 0 +2025-09-26 17:31:02,356 - INFO - 🔍 Récupération de la liste des événements depuis https://lagendageek.com/tevents/page/12 +2025-09-26 17:31:05,337 - INFO - ✅ 14 événements trouvés sur la page +2025-09-26 17:31:05,337 - INFO - 📊 Traitement de 14 événements (1 à 14 sur 14) +2025-09-26 17:31:05,337 - INFO - 🔄 [1/14] Traitement de https://lagendageek.com/tevent/jap-and-co-2026/ +2025-09-26 17:31:09,095 - INFO - ✅ Événement créé avec succès: ID 66bc6e6d-f386-47f5-8f42-9650c137b659 +2025-09-26 17:31:10,096 - INFO - 🔄 [2/14] Traitement de https://lagendageek.com/tevent/geek-legends-oyonnax-1/ +2025-09-26 17:31:13,726 - INFO - ✅ Événement créé avec succès: ID f7e4e973-8b84-4df5-8158-d7854351a2c1 +2025-09-26 17:31:14,727 - INFO - 🔄 [3/14] Traitement de https://lagendageek.com/tevent/margny-compiegne-geek-convention-2026/ +2025-09-26 17:31:18,376 - INFO - ✅ Événement créé avec succès: ID 0389acba-3309-46c0-8b81-8f5b1074c55c +2025-09-26 17:31:19,377 - INFO - 🔄 [4/14] Traitement de https://lagendageek.com/tevent/manga-mania-2026/ +2025-09-26 17:31:20,101 - INFO - 🚀 Début du traitement - Limite: 20, Offset: 0 +2025-09-26 17:31:20,101 - INFO - 🔍 Récupération de la liste des événements depuis https://lagendageek.com/tevents/page/13 +2025-09-26 17:31:22,153 - INFO - 🚀 Début du traitement - Limite: 20, Offset: 0 +2025-09-26 17:31:22,153 - INFO - 🔍 Récupération de la liste des événements depuis https://lagendageek.com/tevents/page/14 +2025-09-26 17:31:22,843 - INFO - ✅ 0 événements trouvés sur la page +2025-09-26 17:31:22,843 - ERROR - ❌ Aucun événement trouvé +2025-09-26 17:31:23,086 - INFO - ✅ Événement créé avec succès: ID 5bd2bc22-95f7-4d25-9d10-de80c747dfda +2025-09-26 17:31:24,087 - INFO - 🔄 [5/14] Traitement de https://lagendageek.com/tevent/japan-addict-z-2026/ +2025-09-26 17:31:24,902 - INFO - ✅ 0 événements trouvés sur la page +2025-09-26 17:31:24,902 - ERROR - ❌ Aucun événement trouvé +2025-09-26 17:31:27,784 - INFO - ✅ Événement créé avec succès: ID 57a3cf0f-1bc8-4249-9423-ba0fd9e1bd97 +2025-09-26 17:31:28,785 - INFO - 🔄 [6/14] Traitement de https://lagendageek.com/tevent/convention-geek-unchained-2026/ +2025-09-26 17:31:32,336 - INFO - ✅ Événement créé avec succès: ID 4a5f2fe2-c151-4f87-bba2-27c4f3b144e1 +2025-09-26 17:31:33,336 - INFO - 🔄 [7/14] Traitement de https://lagendageek.com/tevent/tgs-springbreak-2026/ +2025-09-26 17:31:37,070 - INFO - ✅ Événement créé avec succès: ID 34c196bb-99cc-4879-9654-a1aed1883dcf +2025-09-26 17:31:38,070 - INFO - 🔄 [8/14] Traitement de https://lagendageek.com/tevent/japan-tours-festival-2026/ +2025-09-26 17:31:41,706 - INFO - ✅ Événement créé avec succès: ID cda8ad1f-ab01-4ecd-bc8a-281b7ae22a80 +2025-09-26 17:31:42,707 - INFO - 🔄 [9/14] Traitement de https://lagendageek.com/tevent/magic-odyssey-1ere-edition/ +2025-09-26 17:31:46,672 - INFO - ✅ Événement créé avec succès: ID 2279aea0-d0a0-4292-a6f0-676d5db001cd +2025-09-26 17:31:47,672 - INFO - 🔄 [10/14] Traitement de https://lagendageek.com/tevent/japan-expo-2026/ +2025-09-26 17:31:51,385 - INFO - ✅ Événement créé avec succès: ID 4c346ef7-7b2c-463b-8e46-e84b756e4c8b +2025-09-26 17:31:52,386 - INFO - 🔄 [11/14] Traitement de https://lagendageek.com/tevent/manga-deauville-2026/ +2025-09-26 17:31:56,045 - INFO - ✅ Événement créé avec succès: ID ab08bdf2-a6f8-4dfc-904f-fc696abaa6c9 +2025-09-26 17:31:57,046 - INFO - 🔄 [12/14] Traitement de https://lagendageek.com/tevent/japan-chatels-festival/ +2025-09-26 17:32:00,523 - INFO - ✅ Événement créé avec succès: ID a993b526-7442-411d-a5e5-05be4ec2cc70 +2025-09-26 17:32:01,523 - INFO - 🔄 [13/14] Traitement de https://lagendageek.com/tevent/brussels-games-festival-2026/ +2025-09-26 17:32:05,369 - INFO - ✅ Événement créé avec succès: ID 48a6c0d6-76c1-4cb6-84b4-f5197ebd41b5 +2025-09-26 17:32:06,370 - INFO - 🔄 [14/14] Traitement de https://lagendageek.com/tevent/steven-spielberg-hommage-80-ans/ +2025-09-26 17:32:10,298 - INFO - ✅ Événement créé avec succès: ID c73cd045-b199-404f-a256-cd14977abe95 +2025-09-26 17:32:11,299 - INFO - 🏁 Traitement terminé - Succès: 14, Erreurs: 0 diff --git a/oedb/resources/demo.py b/oedb/resources/demo.py index 01b091f..492252b 100644 --- a/oedb/resources/demo.py +++ b/oedb/resources/demo.py @@ -207,6 +207,39 @@ class DemoResource: logger.error(f"Error processing GET request to /demo/map-by-what: {e}") resp.status = falcon.HTTP_500 resp.text = f"Error: {str(e)}" + + def on_get_map_by_what_type(self, req, resp, event_type): + """ + Handle GET requests to the /demo/map-by-what/{type} endpoint. + Returns an HTML page with a MapLibre map showing events of a specific type, + colored by temporality (past/present/future) with a detailed table. + + Args: + req: The request object. + resp: The response object. + event_type: The event type to filter by. + """ + logger.info(f"Processing GET request to /demo/map-by-what/{event_type}") + + try: + # Set content type to HTML + resp.content_type = 'text/html' + + # Render the template with the event type + template = self.jinja_env.get_template('map_by_what_type.html') + html = template.render( + event_type=event_type, + event_type_label=event_type.replace('_', ' ').title() + ) + + # Set the response body and status + resp.text = html + resp.status = falcon.HTTP_200 + logger.success(f"Successfully processed GET request to /demo/map-by-what/{event_type}") + except Exception as e: + logger.error(f"Error processing GET request to /demo/map-by-what/{event_type}: {e}") + resp.status = falcon.HTTP_500 + resp.text = f"Error: {str(e)}" events_by_what = defaultdict(list) if events_data.get('features'): diff --git a/oedb/resources/demo/demo_main.py b/oedb/resources/demo/demo_main.py index a4012b3..398fb30 100644 --- a/oedb/resources/demo/demo_main.py +++ b/oedb/resources/demo/demo_main.py @@ -44,6 +44,8 @@ class DemoMainResource:
Visualisation et liste détaillée des événements de type "{{ event_type }}"
+ + +