diff --git a/_config.yml b/_config.yml index 5730974..4be0b42 100644 --- a/_config.yml +++ b/_config.yml @@ -34,6 +34,11 @@ defaults: layout: events permalink: /:path/:basename/ subscribe: true + # While this is available under the page + # this is dynamic, and not available for use + # in sql queries, or copied to external layouts + # TODO: Fix jekyll-sqlite and multi-page layouts to support this + excludeTags: '["BUSINESS", "LOW-QUALITY", "NOTINBLR", "DANDIYA", "WOOWOO"]' layouts: - layout: icalendar.ics permalink: /:path/:basename/cal.ics @@ -43,65 +48,37 @@ defaults: - data: events file: events.db query: | - SELECT * - FROM events - WHERE EXISTS ( - SELECT 1 - FROM json_each(:tags) AS tags - WHERE tags.value IN ( - SELECT value - FROM json_each(event_json->'$.keywords') - ) - AND tags.value NOT IN ("WOOWOO", "LOW-QUALITY", "BUSINESS", "NOTINBLR", "DANDIYA") + WITH + allowlist_tags AS ( + SELECT value FROM json_each(:tags) + ), + denylist_tags AS ( + SELECT value FROM json_each('["BUSINESS", "LOW-QUALITY", "NOTINBLR", "DANDIYA", "WOOWOO"]') ) - ORDER BY event_json -> '$.startDate' - ; - - data: today - file: events.db - query: | - SELECT event_json, url, date(json_extract(event_json,'$.startDate')) as startDate, date(json_extract(event_json,'$.endDate')) as endDate + SELECT * FROM events - WHERE EXISTS ( + WHERE + -- Check if no denylist tags are present + NOT EXISTS ( SELECT 1 - FROM json_each(:tags) AS tags - WHERE tags.value IN ( - SELECT value - FROM json_each(event_json->'$.keywords') + FROM denylist_tags + WHERE denylist_tags.value IN ( + SELECT value + FROM json_each(event_json->'$.keywords') ) - ) AND ( - (startDate >= date('now', 'localtime') AND endDate <= date('now', 'localtime')) - OR - (startDate <= date('now', 'localtime') AND endDate >= date('now', '+1 day', 'localtime')) - ) - ORDER by startDate; - - - data: tomorrow - file: events.db - query: | - SELECT event_json, url, date(json_extract(event_json,'$.startDate')) as startDate, date(json_extract(event_json,'$.endDate')) as endDate - FROM events - WHERE EXISTS ( + ) + AND + -- Check if at least one allowlist tag is present + EXISTS ( SELECT 1 - FROM json_each(:tags) AS tags - WHERE tags.value IN ( - SELECT value - FROM json_each(event_json->'$.keywords') + FROM allowlist_tags + WHERE allowlist_tags.value IN ( + SELECT value + FROM json_each(event_json->'$.keywords') ) - -- Find all events either starting and ending tomorrow - -- or starting today or earlier, and end ending after tomorrow - ) AND ( - (startDate >= date('now', '+1 day', 'localtime') AND endDate <= date('now', '+1 day', 'localtime')) - OR - (startDate <= date('now', '+1 day', 'localtime') AND endDate >= date('now', '+2 day', 'localtime')) - ) - ORDER by startDate + ) + ORDER BY event_json -> '$.startDate'; sqlite: - - data: tags.events - file: events.db - query: | - SELECT event_json, event_json -> '$.keywords' as keywords from events - WHERE EXISTS (SELECT 1 FROM json_each(keywords) WHERE value = :id) - - data: geo_events file: events.db query: | @@ -110,67 +87,3 @@ sqlite: event_json->'$.location.geo.longitude' as lng, event_json-> '$.location.name' as name from events WHERE event_json -> '$.location.geo' IS NOT NULL - - - data: events - file: events.db - query: | - SELECT substr(url, 9, instr(substr(url, 9), '/') - 1) AS domain, - url, - json_extract(event_json, '$.name') AS name, - json_extract(event_json, '$.description') AS description, - json_extract(event_json, '$.keywords') AS keywords, - json_extract(event_json, '$.startDate') AS startDate, - json_extract(event_json, '$.eventStatus') AS eventStatus, - json_extract(event_json, '$.location.name') AS location, - json_extract(event_json, '$.organizer.name') AS organizer - - FROM events WHERE - ( - ( - keywords NOT LIKE '%karaoke%' AND name not like '%karaoke%' AND -- MUSIC - keywords NOT LIKE '%dj night%' AND name not like '%dj night%' AND -- MUSIC - keywords NOT LIKE '%bollywood night%' AND name not like '%bollywood night%' AND -- MUSIC - keywords NOT LIKE '%ladies night%' AND name not like '%ladies night%' AND -- MUSIC - keywords NOT LIKE '%ft. %' AND name not like '%ft. %' AND -- MUSIC - keywords NOT LIKE '%camping%' AND name not like '%camping%' AND -- TRIP - keywords NOT LIKE '%trek%' AND name not like '%trek%' AND -- TRIP - keywords NOT LIKE '%techno%' AND name not like '%techno%' AND -- MUSIC - description NOT LIKE '%karaoke%' AND -- MUSIC - keywords NOT LIKE '%tipsy%' AND name not like '%tipsy%' AND -- MUSIC - keywords NOT LIKE '%summer camp%' AND name not like '%summer camp%' AND -- KIDS - description NOT LIKE '%get sloshed%' AND -- DRINKING - description NOT LIKE '%magic mocktails%' AND -- DRINKING - name NOT LIKE '%jollywood%' AND -- ADS - name NOT LIKE '%thrifty x%' AND -- DATING - name NOT LIKE '% vs %' AND -- SPORTS - name NOT LIKE '% admissions %' AND -- ADS - keywords NOT LIKE '%parties%' AND -- MUSIC - name NOT LIKE '%deck gigs%' AND -- MUSIC - name NOT LIKE '%5 day program%' AND -- LONG - name NOT GLOB '*IPL*' AND -- SPORTS - name NOT GLOB '*GP*' AND -- SPORTS - name NOT GLOB '*F1*' AND -- SPORTS - name NOT GLOB '*T20*' AND -- SPORTS - name NOT GLOB '*RCB*' AND -- SPORTS - name NOT GLOB '*MI*' AND -- SPORTS - name NOT LIKE '%pet paw%' AND -- PETS - keywords NOT LIKE '%summer vacation%' AND -- KIDS - (organizer NOT LIKE 'Odyssey vibes' OR organizer IS NULL) AND -- TRIP - (organizer NOT LIKE '%Medicine%' OR organizer IS NULL) AND -- CONFERENCE - (location NOT LIKE 'Small World' OR location IS NULL) AND -- BADRATING - (organizer NOT LIKE '%sheena - banjara%' OR organizer IS NULL) AND -- TRIP - (location NOT LIKE '%HeyBrewty Wellness Studio%' OR location is NULL) AND -- WOOWOO - (location NOT LIKE '%blue butterfly%' OR location is NULL) AND -- MUSIC - (description NOT LIKE '%techno%') AND -- MUSIC - (name NOT LIKE '%DnBIndia presents%') AND -- MUSIC - - -- Not sure about these events: https://insider.in/search?q=burgerman - -- (organizer NOT LIKE '%burgerman%' OR organizer IS NULL) AND - - -- See https://insider.in/search?q=boche%20club - (organizer NOT LIKE '%brewcraft hospitality%' OR organizer IS NULL) AND -- MUSIC - description not LIKE '%happy hour%' -- MUSIC - ) - OR (keywords IS NULL OR description IS NULL OR url LIKE '%sumukha%') - ) - ORDER BY startDate ASC diff --git a/_includes/head.html b/_includes/head.html index 2e130da..e93230e 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -10,3 +10,6 @@ +{% if page.noindex %} + +{% endif %} \ No newline at end of file diff --git a/_layouts/events.html b/_layouts/events.html index 0e9c29e..ebc98e8 100644 --- a/_layouts/events.html +++ b/_layouts/events.html @@ -51,6 +51,7 @@