package Ġcom . mo sp oly tech . mo sp oly helper . data . utilities . news . converter Ċ Ċ import Ġcom . mo sp oly tech . mo sp oly helper . domain . utilities . news . model . News Preview Ċ import Ġcom . mo sp oly tech . mo sp oly helper . domain . utilities . news . model . University News Preview Ċ import Ġcom . mo sp oly tech . mo sp oly helper . domain . utilities . news . model . University News Types Ċ import Ġorg . js oup . J soup Ċ import Ġjava . time . DateTime Exception Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . Month Day Ċ import Ġjava . time . format . DateTime Formatter Ċ import Ġjava . time . format . DateTime ParseException Ċ import Ġjava . util .* Ċ Ċ class ĠNews Converter Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdate Formatter Ġ= ĠDateTime Formatter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. of Pattern (" d ĠM MMM ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Locale ( Locale (" ru ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġparse News Year ( news Html : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJ soup . parse ( news Html ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getElementsBy Class (" news - detail - head __ date "). first () !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getElementsBy Class (" num erical - item __ label "). first () !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. text (). trim (). split (' Ġ'). last (). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġparse First News Url ( news Html : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhtml Ġ= ĠJ soup . parse ( news Html ) ĊĠĠĠĠĠĠĠ Ġval Ġnews Card Ġ= Ġhtml . getElementsBy Class (" card - news - list __ item "). first OrNull () ĊĠĠĠĠĠĠĠ Ġval Ġnews Url Ġ= Ġnews Card ?. getElementsBy Tag (" a ") ?. first OrNull ()?. attr (" href ") ĊĠĠĠĠĠĠĠ Ġreturn Ġnews Url ?. let Ġ{ Ġ" https :// mo sp oly tech . ru $ it " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġparse News List ( news Html : ĠString , Ġfirst News Year : ĠInt ): ĠList < News Preview > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhtml Ġ= ĠJ soup . parse ( news Html ) ĊĠĠĠĠĠĠĠ Ġval Ġnews Cards Ġ= Ġhtml . getElementsBy Class (" card - news - list __ item ") ĊĠĠĠĠĠĠĠ Ġvar Ġprev Date : ĠLocalDate ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġnews Cards . map Ġ{ Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnews Url Ġ= Ġ" https :// mo sp oly tech . ru " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( element . getElementsBy Tag (" a "). first OrNull ()?. attr (" href ") Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage URL Ġ= Ġ" https :// mo sp oly tech . ru " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( element . getElementsBy Tag (" img "). first OrNull ()?. attr (" data - src ") Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Str Ġ= Ġelement . getElementsBy Class (" card - news __ label "). first OrNull ()?. text () Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmonth Day Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMonth Day . from ( date Formatter . parse ( date Str . toLowerCase ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDateTime ParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMonth Day . now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDateTime Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMonth Day . now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal Date Ġ= Ġprev Date ?. let Ġ{ Ġfind Date ( month Day , Ġit ) Ġ} Ġ?: ĠLocalDate . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst News Year , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmonth Day . month , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmonth Day . day OfMonth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprev Date Ġ= Ġlocal Date ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġelement . getElementsBy Class (" card - news __ text "). first OrNull ()?. text () Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUniversity News Preview ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage URL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnews Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUniversity News Types . News ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind Date ( current Month Day : ĠMonth Day , Ġprevious Date : ĠLocalDate ): ĠLocalDate Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġyear Ġ= Ġif Ġ( previous Date . month . value Ġ>= Ġcurrent Month Day . month . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Date . year ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Date . year Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġreturn ĠLocalDate . of ( year , Ġcurrent Month Day . month , Ġcurrent Month Day . day OfMonth ) ĊĠĠĠ Ġ} Ċ }