package Ġxyz . ji en an . xk cd . model . util Ċ Ċ import Ġokhttp 3 . ResponseBody Ċ import Ġorg . js oup . J soup Ċ import Ġorg . js oup . nodes . Element Ċ import Ġorg . js oup . select . Elements Ċ import Ġxyz . ji en an . xk cd . Const . URI _ XK CD _ EX PLAIN _ EDIT Ċ import Ġjava . io . IOException Ċ import Ġjava . util . regex . Pattern Ċ Ċ object ĠX k cd Explain Util Ġ{ ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġget Explain From Html ( response Body : ĠResponse Body , Ġurl : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= ĠJ soup . parse ( response Body . string ()) ĊĠĠĠĠĠĠĠ Ġdoc . set Base Uri ( url ) ĊĊĠĠĠĠĠĠĠ Ġval Ġh 2 Explain Ġ= Ġdoc . select First (" h 2 : has ( span # Explanation )") ĊĠĠĠĠĠĠĠ Ġval Ġnext H 2 Element Ġ= Ġh 2 Explain . nextElement S iblings (). select (" h 2 "). first () ĊĊĠĠĠĠĠĠĠ Ġval Ġh 2 Explain Element Index Ġ= Ġh 2 Explain . parent (). childNodes (). indexOf ( h 2 Explain ) ĊĠĠĠĠĠĠĠ Ġval Ġnext H 2 Element Index Ġ= Ġh 2 Explain . parent (). childNodes (). indexOf ( next H 2 Element ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexplain Nodes Ġ= Ġh 2 Explain . parent (). childNodes (). sub List ( h 2 Explain Element Index Ġ+ Ġ 1 , Ġnext H 2 Element Index ) ĊĊĠĠĠĠĠĠĠ Ġexplain Nodes . filter Is Instance < Element >(). map Ġ{ Ġit . all Elements Ġ}. forEach Ġ{ Ġit . clean Up () Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġexplain Nodes . join ToString (" "). update End Padding () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Xk cd Image Link ( url : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġregex Explain Ġ= Ġ"^ https ? :// www \\. explain xk cd \\. com / wiki / index \\. php / \\ d + (? ! # ) [:] ? \\ w + $" ĊĠĠĠĠĠĠĠ Ġval Ġregex Xk cd Ġ= Ġ"^ https ? :// (?: www \\ .| m \\. )? xk cd \\. com / \\ d + /? $" ĊĠĠĠĠĠĠĠ Ġval Ġextra Xk cd Ġ= Ġ"^ https ? :// (?: imgs \\. )? xk cd \\. com / com ics / .* $" ĊĠĠĠĠĠĠĠ Ġreturn Ġurl . matches ( regex Explain . to Regex ()) Ġ|| Ġurl . matches ( regex Xk cd . to Regex ()) Ġ|| Ġurl . matches ( extra Xk cd . to Regex ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Xk cd Id From Explain Image Link ( url : ĠString ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġregex Ġ= Ġ"^ https ? :// www \\. explain xk cd \\. com / wiki / index \\. php /( \\ d + ). * $" ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠPattern . compile ( regex ). matcher ( url ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( matcher . find ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatcher . group ( 1 ) !!. to Long () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Xk cd Id From Xk cd Image Link ( url : ĠString ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġregex Ġ= Ġ"^ https ? :// (?: www \\ .| m \\. )? xk cd \\. com /( \\ d +)/ ? $" ĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠPattern . compile ( regex ). matcher ( url ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( matcher . find ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatcher . group ( 1 ) !!. to Long () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠElements . clean Up () Ġ{ ĊĠĠĠĠĠĠĠ Ġmap Ġ{ Ġit . all Elements Ġ}. forEach Ġ{ Ġelements Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelements . select (" h 3 Ġ. edit section , Ġh 3 Ġ. mw - edit section , Ġh 4 Ġ. edit section , Ġh 4 Ġ. mw - edit section "). remove () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelements . select (" p Ġsup "). filter Ġ{ Ġit . toString (). contains ("< i > citation Ġneeded </ i >") Ġ}. map Ġ{ Ġit . remove () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelements . select (" a [ href ]"). forEach Ġ{ Ġit . ref ill To Full Url () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelements . select (" tbody "). flatMap Ġ{ Ġit . children () Ġ}. map Ġ{ Ġit . append ("< br Ġ/> ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelements . select (" dd "). map Ġ{ Ġit . tagName (" p ") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠElement . ref ill To Full Url () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhref Ġ= Ġattr (" href ") ĊĠĠĠĠĠĠĠ Ġif Ġ(! href . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( href . startsWith ("/ wiki ") Ġ|| Ġhref . startsWith ("# ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattr (" href ", Ġabs Url (" href ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( href . startsWith ("// www . explain xk cd ") Ġ&& Ġhref . endsWith (" action = edit ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattr (" href ", ĠURI _ XK CD _ EX PLAIN _ EDIT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . update End Padding (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(! endsWith (" p > Ġ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplus ("< br Ġ/> ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }