script/generator.py (70 lines of code) (raw):

## --------------------------------------------------------------------------- ## Licensed to the Apache Software Foundation (ASF) under one or more ## contributor license agreements. See the NOTICE file distributed with ## this work for additional information regarding copyright ownership. ## The ASF licenses this file to You under the Apache License, Version 2.0 ## (the "License"); you may not use this file except in compliance with ## the License. You may obtain a copy of the License at ## ## http://www.apache.org/licenses/LICENSE-2.0 ## ## Unless required by applicable law or agreed to in writing, software ## distributed under the License is distributed on an "AS IS" BASIS, ## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ## See the License for the specific language governing permissions and ## limitations under the License. ## --------------------------------------------------------------------------- import pandas as pd sessions = pd.read_excel('ApacheConSessions.xlsx') tracks_dictionary = {"Integration": "integration", "Workflow/Data Governance": "workflowdatagovernance", "Web Server/Tomcat": "webserverandtomcat", "Streaming": "streaming", "Observability": "observability", "Middleware": "middleware", "Messaging": "messaging", "IoT/IIoT": "iot", "Incubator": "incubator", "Data Visualization": "datavisualization", "Culture": "culture", "Community": "community", "Big Data": "bigdata", "API / Microservice": "api" } session_types_dictionary = {"中文演讲": "Chinese Session", "Regular Session": "English Session"} session_types_chinese_dictionary = {"中文演讲": "中文演讲", "Regular Session": "英文演讲"} def remove_speakers_email(speakers): speaker_list = speakers.split(",") result_list = [] for speaker in speaker_list: result_list.append(remove_speaker_email(speaker)) return ', '.join(result_list) def remove_speaker_email(speaker): return speaker.split('<')[0].strip() for index in sessions.index: if sessions.at[index, 'Status'] == 'accept': # create the markdown file print(sessions.at[index, 'English Title']) file_name = str(index + 1000) markdown_en_file = open(file_name + ".md", "w+") markdown_zh_file = open(file_name + ".zh.md", "w+") mate_data = '---\ntitle: "{}"\ndate: "{}" \ntrack: "{}"\npresenters: "{}"\nstype: "{}"\n---\n' schedule_time = "" if not pd.isnull(sessions.at[index, 'Time schedule']): schedule_time = sessions.at[index, 'Time schedule'] title = sessions.at[index, 'English Title'] # map the session type session_type = session_types_dictionary.get(sessions.at[index, 'Type']) # update the track information track = tracks_dictionary.get(sessions.at[index, 'Category']) speakers = remove_speakers_email(sessions.at[index, 'Speaker(s)']) abstract = sessions.at[index, "English Abstract"] speaker_bios = sessions.at[index, "English Bios"] markdown_en_file.write(mate_data.format(title, schedule_time, track, speakers, session_type)) markdown_en_file.write(abstract) markdown_en_file.write("\n ### Speakers: \n ") markdown_en_file.write(speaker_bios) markdown_en_file.close() if not pd.isnull(sessions.at[index, 'Chinese Title']): title = sessions.at[index, 'Chinese Title'] if not pd.isnull(sessions.at[index, "Chinese Abstract"]): abstract = sessions.at[index, "Chinese Abstract"] if not pd.isnull(sessions.at[index, "Chinese Bios"]): speaker_bios = sessions.at[index, "Chinese Bios"] # map the session type session_zh_type = session_types_chinese_dictionary.get(sessions.at[index, 'Type']) markdown_zh_file.write(mate_data.format(title, schedule_time, track, speakers, session_zh_type)) markdown_zh_file.write(abstract) markdown_zh_file.write("\n ### 讲师: \n ") markdown_zh_file.write(speaker_bios) markdown_zh_file.close()