package Ġcom . l ud ov ic . vim ont . m ang are ader . api . manga Ċ Ċ import Ġcom . l ud ov ic . vim ont . m ang are ader . api . M anga API Ċ import Ġcom . l ud ov ic . vim ont . m ang are ader . db . M anga Dao Ċ import Ġcom . l ud ov ic . vim ont . m ang are ader . entities .* Ċ import Ġorg . js oup . J soup Ċ import Ġorg . js oup . nodes . Document Ċ import Ġorg . js oup . select . Elements Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ Ċ class ĠM anga F reak API ( private Ġval Ġm anga Dao : ĠM anga Dao ): ĠM anga API Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠBASE _ URL Ġ= Ġ" https :// w 1 1 . m ang af reak . net " ĊĊĠĠĠĠĠĠĠ Ġfun Ġsearch M anga ( manga Title : ĠString ): ĠDocument Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget Document ("$ BASE _ URL / Search /$ manga Title ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Document ( url : ĠString ): ĠDocument Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠJ soup . connect ( url ). get () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbuild Link ( path : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBASE _ URL Ġ+ Ġpath ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġfrom M anga To Detail Page ( full M anga : ĠFull M anga ): ĠReading Page ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument : ĠDocument Ġ= Ġsearch M anga ( full M anga . get Web Title ()) ĊĠĠĠĠĠĠĠ Ġval Ġresults : ĠElements Ġ= Ġdocument . select (". manga _ search _ item ") ĊĠĠĠĠĠĠĠ Ġif Ġ( results . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch Result Ġ= Ġresults [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm anga Link Ġ= Ġbuild Link ( search Result . select (" a "). first (). attr (" href ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchapter s Document Ġ= Ġget Document ( manga Link ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Chapter Ġ= Ġchapter s Document . select (". manga _ series _ list "). first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchapter s Links Ġ= Ġcontent Chapter . select (" tbody "). first (). select (" tr ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchapter s Ġ= ĠArrayList < Link Chapter >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( chapter Link Ġin Ġchapter s Links ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt ds : ĠElements Ġ= Ġchapter Link . select (" td ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlink Ġ= Ġt ds . first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadded Date : ĠString Ġ= Ġt ds [ 1 ]. text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter s . add ( Link Chapter ( link . text (), Ġadded Date , Ġlink . attr (" href "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Favorite Ġ= Ġm anga Dao . get ( full M anga . id ). is Favorite ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠReading Page ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfull M anga . id , Ġfull M anga . title , Ġfull M anga . syn opsis , Ġfull M anga . published . from , Ġfull M anga . status , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfull M anga . authors . first (). name , Ġfull M anga . genres . map Ġ{ Ġgenre : ĠGen re Ġ-> Ġgenre . name Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter s . reversed (), Ġis Favorite ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġfrom Link To Chapter ( chapter Link : ĠString ): ĠChapter ? Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument : ĠDocument Ġ= Ġget Document ( chapter Link ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġdocument . select (" h 1 . title "). first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġtitle . select (" a "). text (). toLowerCase ( Locale . getDefault ()). capitalize ( Locale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Chapter Ġ= Ġchapter Link . split ("/ "). last (). split ("_ "). last () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Container Ġ= Ġdocument . select (". slide show - container "). first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimages : ĠElements Ġ= Ġimage Container . select (" img ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchapter Pages Ġ= ĠArrayList < Chapter Page >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( image Ġin Ġimages ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Src Ġ= Ġimage . attr (" src ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter Pages . add ( Chapter Page ( images . indexOf ( image ), Ġimage Src )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠChapter ( current Chapter , Ġchapter Pages , Ġname ," ", Ġ"", Ġ"") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Exception Ġfor Ġ${ chapter Link }: Ġ${ e . message }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ }