Path: blob/main/bin/google-form-recordings.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/1iXjLlMEH5QMAMyUMHi1c_Lb7OiJhL_9hgJrtAsBoZ-Y/export?format=tsv'11data = `curl -sL "#{url}"`12new_recordings = false1314data = CSV.parse(data, col_sep: "\t", headers: true, quote_char: '|')15count = 01617# define some columns18col_material = 319col_length = 520col_speakers = 621col_galaxyversion = 1022col_prmade = 122324## recordings metadata definition on tutorials/slides25#26# recordings:27# - speakers:28# - shiltemann29# captioners:30# - hexylena31# - bebatut32# date: '2020-06-12'33# galaxy_version: '20.05'34# length: 51M35# youtube_id: "oAVjF_7ensg"3637data.each do |row|38# Parse39# 29/01/2024 14:04:4740submission_date = DateTime.strptime(row['Timestamp'], '%d/%m/%Y %H:%M:%S')4142# extract metadata from Google form43length = row[col_length]44galaxy_version= row[col_galaxyversion]45speakers = row[col_speakers]&.split(",")46date = submission_date.strftime('%Y-%m-%d')4748if row[col_material] == 'TESTING' or row[col_prmade] == 'yes'49STDERR.puts "Skipping recording as it is a test or a PR was already openened"50next51end5253material_file = row[col_material].gsub("tutorial.html","tutorial.md").gsub("https://training.galaxyproject.org/","").gsub("training-material/","").gsub("training-material//","")545556bot_timestamp = submission_date.to_time.to_i57recording_metadata = {"youtube_id" => "TODO",58"length" => length,59"galaxy_version" => galaxy_version,60"date" => date,61"speakers" => speakers,62"captioners" => speakers.dup,63"bot-timestamp" => bot_timestamp }6465# append metadata into GTN material66material_metadata = safe_load_yaml(material_file)6768if material_metadata["recordings"]69# check the "bot_timestamp"70exists = false71for rec in material_metadata["recordings"]72if rec["bot-timestamp"].to_s == bot_timestamp.to_s73exists = true74end75end7677if !exists78material_metadata["recordings"].push(recording_metadata)79new_recordings = true80end81else82material_metadata["recordings"] = [recording_metadata]83new_recordings = true84end8586#pp material_metadata8788# write to file89material_original = File.open(material_file,"r").read.split("---\n",3)9091outfile = File.open(material_file,"w")92outfile.write("#{material_metadata.to_yaml}\n\n---\n\n#{material_original[2]}")9394end9596STDERR.puts "new recordings: #{new_recordings}"97puts new_recordings9899100