package Ġmain . java . parser Ċ Ċ import Ġbean . Course Ċ import Ġorg . js oup . J soup Ċ import Ġparser . Parser Ċ import Ġjava . io . File Ċ Ċ class ĠJ in Z hi Parser ( source : ĠString ) Ġ: ĠParser ( source ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate Course List (): ĠList < Course > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcourse List Ġ= Ġarray ListOf < Course >() ĊĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= ĠJ soup . parse ( source ) ĊĠĠĠĠĠĠĠ Ġvar Ġcourse Name : ĠString ĊĠĠĠĠĠĠĠ Ġvar Ġteacher : ĠString ĊĠĠĠĠĠĠĠ Ġvar Ġdetail : ĠList < String > ĊĠĠĠĠĠĠĠ Ġvar Ġday Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġstart Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġend Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġroom : ĠString ĊĠĠĠĠĠĠĠ Ġvar Ġstart Week Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġend Week Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġtype Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġdoc . getElementsBy Class (" w ut _ table "). first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getElementsBy Class (" mt t _ arrange _ item "). forEach Ġ{ Ġc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse Name Ġ= Ġc . getElementsBy Class (" mt t _ item _ k cm c ") ?. first ()?. own Text ()?. trim ()?. substring After (' Ġ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġteacher Ġ= Ġc . getElementsBy Class (" mt t _ item _ j xb mc ") ?. text ()?. trim () Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetail Ġ= Ġc . getElementsBy Class (" mt t _ item _ room ") ?. first ()?. text ()?. trim ()?. split (',') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġday Index Ġ= Ġdetail . indexOf First Ġ{ Ġit . trim (). startsWith (" æĺŁ æľŁ ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġday Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetail [ day Index ]. trim (). take Last ( 1 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnode Info Ġ= Ġdetail [ day Index Ġ+ Ġ 1 ]. substring Before (' èĬĤ '). split ('- ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node Info . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġnode Info [ 0 ]. trim (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġnode Info . last (). trim (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġnode Info [ 0 ]. trim (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġstart ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Ġ= Ġif Ġ( detail . size Ġ- Ġday Index Ġ> Ġ 3 ) Ġdetail [ detail . size Ġ- Ġ 2 ] Ġelse Ġdetail . last () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġday Index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetail [ i ]. contains (' åįķ ') Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdetail [ i ]. contains (' åıĮ ') Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġweek Info Ġ= Ġdetail [ i ]. substring Before (' åĳ¨ '). split ('- ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Week Str Ġ= Ġweek Info [ 0 ]. trim () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġstart Week Str . indices . reversed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! start Week Str [ j ]. is Digit ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Week Ġ= Ġstart Week Str . substring ( j Ġ+ Ġ 1 ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( j Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Week Ġ= Ġstart Week Str . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Week Ġ= Ġif Ġ( week Info . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġweek Info . last (). trim (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Week ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Week Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend Week Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourse List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCourse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġcourse Name , Ġteacher Ġ= Ġteacher , Ġroom Ġ= Ġroom , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Week Ġ= Ġstart Week , Ġend Week Ġ= Ġend Week , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Node Ġ= Ġstart , Ġend Node Ġ= Ġend , Ġtype Ġ= Ġtype , Ġday Ġ= Ġday ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcourse List ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ ĠFile ("/ Users / yz une / Downloads / éĩĳ æĻº åĪĹè¡¨ 1 . txt "). read Lines (). forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ( it ) ĊĠĠĠĠĠĠĠ ĠJ in Z hi Parser ( File ("/ Users / yz une / YZ une _ Git / database / python /$ it "). read Text ()). save Course () ĊĠĠĠĠĠĠĠ Ġprintln () ĊĠĠĠ Ġ} Ċ }