Path: blob/main/bin/google-form-event.rb
1677 views
#!/usr/bin/env ruby1# frozen_string_literal: true23require 'yaml'4require 'net/http'5require 'csv'6require 'date'7require './_plugins/util'89# Fetch data from a google sheet10url = 'https://docs.google.com/spreadsheets/d/1LTShstcORXf_zB06naOfPzisAoOcik-xJvgK5LQCGP8/export?format=tsv'11data = `curl -sL "#{url}"`1213data = CSV.parse(data, col_sep: "\t", headers: true, quote_char: '|')14count = 015pr_message = ""1617data.each do |row|18# Parse19# 29/01/2024 14:04:4720event_date = DateTime.strptime(row['Start date'], '%d/%m/%Y')21if row['End date']22event_date_end = DateTime.strptime(row['End date'], '%d/%m/%Y')23end24post_date = DateTime.strptime(row['Timestamp'], '%d/%m/%Y %H:%M:%S')2526filename = "events/#{event_date.strftime('%Y-%m-%d')}-#{row['Title of your Event'].downcase.gsub(/[^a-z0-9\s-]/i, '').gsub(/\s+/, ' ').gsub(/ /, '-')}.md"2728# Skip some testing posts29if (row['Title of your Event'] == 'TESTING')30STDERR.puts "Skipping #{filename} as it is a test post"31next32end3334# Don't overwrite existing posts35if File.exist?(filename)36other_file = safe_load_yaml(filename)37if other_file['google_form_id'] == post_date.to_time.to_i38STDERR.puts "Skipping #{filename} as it already exists"39next40else41filename = filename.gsub('.md', "-#{post_date.to_time.to_i}.md")42end43end4445STDERR.puts "Creating #{filename}"46count += 14748post_metadata = {49'layout' => 'event-external',50'google_form_id' => post_date.to_time.to_i,51'title' => row['Title of your Event'],52'description' => row['Description of your event'],53'external' => row['Link to event page'],54'contributions' => {55'organisers' => row['Organizers already in the GTN CONTRIBUTORS file']&.split(',')&.map(&:strip)56},57'location' => {58'name' => row['Location of the event']59},60'date_start' => event_date.to_date,61}6263if row['End date']64post_metadata['date_end'] = event_date_end.to_date65end6667# Serialise to a file68File.open(filename, 'w') do |file|69file.puts YAML.dump(post_metadata)70file.puts "---\n"7172if row['Comments'] && row['Comments'].length.positive?73file.puts "<!-- #{row['Comments']} -->"74end75end767778if row['Organizers not yet in the GTN CONTRIBUTORS file']79pr_message += "<br>TODO: add the following contributors to the GTN: <br> #{row['Organizers not yet in the GTN CONTRIBUTORS file']}"80end81if row['Anything else we should know?']82pr_message += "<br><br>Remarks from submitter:<br> #{row['Anything else we should know?']}"83end84end858687puts "new_ids=#{count}"88puts "pr_message=#{pr_message}"899091