A command-line utility to create your school schedules. Validates every possible combination of your school schedule verifying that there aren't any overlapping classes.
Creates an .xlsx file with your school schedules from a .yaml file with your classes.
Binaries for windows, mac, and linux (built on ubuntu) can be found in the Github releases page.
schedule-maker - a command-line utility to create your school schedules.
Usage: schedule-maker (--print-yaml-example LANGUAGE | FILENAME
[-p|--pretty-print] [-o|--output FILENAME] [-i|--ical])
Create an .xlsx file with your school schedules from a .yaml file with your
classes.
Available options:
--print-yaml-example LANGUAGE
Language option: 'es' (spanish) or 'en' (english)
FILENAME YAML input file
-p,--pretty-print Print to stdout the validated schedules
-o,--output FILENAME Write output to FILE (.xlsx)
(default: "schedules.xlsx")
-i,--ical Write the schedules to iCal files (schedule1.ics,
schedule2.ics)
-h,--help Show this help text
still a work in progress, source code here:
https://github.com/0rphee/schedule-maker
(Examples of valid yaml to use this tool below.)
(This image only shows one of the generated valid schedules generated from test-english.yaml
, found in the test schedules.xlsx
found in the repo.)
(This image only shows one of the generated valid schedules generated from test-english.yaml
, the program will one schedule*.ics
per valid schedule, this files can be imported by calendar apps, like Google Calendar.)
# Example yaml file with classes
# There may be multiple entries for classes with the same subject name (ex. 'Diferential Calculus'), but the resulting schedules will only have 1 class of each type.
- name: Subject1
class-id: "0001" # This can be any string, but it should be unique to each class.
professor: John Doe
days:
- day: monday
start: 17:30
end: 19:00
- day: tuesday
start: 17:30
end: 19:00
- day: thursday
start: 17:30
end: 19:00
- day: wednesday
start: 7:00
end: 8:30
- day: friday
start: 7:00
end: 8:30
- day: saturday
start: 7:00
end: 8:30
- day: sunday
start: 7:00
end: 8:30
- name: Subject2
class-id: "0002"
professor: Robert Cohen
days:
- day: monday
start: 7:00
end: 8:30
- day: friday
start: 7:00
end: 8:30
# Ejemplo de archivo yaml con clases
# Puede haber entradas múltiples para clases con el mismo nombre de materia (ej. 'Cálculo diferencial'), pero los horarios resultantes solo tendrán 1 clase de cada materia.
- nombre: Materia1
id-clase: "0001" # Esta puede ser cualquier cadena, pero debe ser única para cada clase.
profesor: Roberto Vega
dias:
# Los días de la semana NO pueden estar acentuados.
- dia: lunes
inicio: 17:30
final: 19:00
- dia: martes
inicio: 17:30
final: 19:00
- dia: miercoles
inicio: 7:00
final: 8:30
- dia: jueves
inicio: 17:30
final: 19:00
- dia: viernes
inicio: 7:00
final: 8:30
- dia: sabado
inicio: 7:00
final: 8:30
- dia: domingo
inicio: 7:00
final: 8:30
- nombre: Materia2
id-clase: "0002"
profesor: Juan Miranda
dias:
- dia: lunes
inicio: 7:00
final: 8:30
- dia: viernes
inicio: 7:00
final: 8:30