package Ġcom . github . hz qd . ik fr . b ilib ili . crawler Ċ Ċ import Ġcom . github . hz qd . ik fr . b ilib ili . crawler . utils . Anim Utils Ċ import Ġcom . github . hz qd . ik fr . b ilib ili . crawler . utils . Doc Utils Ċ import Ġcom . github . hz qd . ik fr . b ilib ili . crawler . type . Anim Ċ import Ġkotlinx . coroutines . async Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ Ċ fun Ġmain () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠ Ġvar Ġid Ġ= Ġ 0 ĊĠĠĠ Ġval Ġtop 5 0 List : ĠMutable List < Anim > Ġ= ĠLinkedList () ĊĊĠĠĠ Ġval Ġjob 1 Ġ= Ġasync Ġ{ ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( id Ġ< Ġ 5 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= ĠDoc Utils (" https :// bang umi . b ilib ili . com / anime "). get Doc ( id ++) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( doc . html (). isEmpty ()) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( doc . select (". media - info - title - t "). text () Ġ== Ġ"") Ġcontinue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim Ġ= ĠAnim ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġdoc . select (". media - info - title - t "). text (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplay Count Ġ= ĠAnim Utils . to Play Count ( doc . select (". media - info - count Ġem "). first (). text ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġepisode Ġ= ĠAnim Utils . to Episode ( doc . select (". media - info - time Ġspan ")[ 1 ]. text ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcover Ġ= Ġdoc . select (". bang umi - preview Ġimg "). attr (" src "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf ans Ġ= ĠAnim Utils . to Play Count ( doc . select (". media - info - count - item - f ans Ġem "). text ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Ġ= ĠAnim Utils . toDate ( doc . select (". media - info - time Ġspan ")[ 0 ]. text ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("$ id : Ġ${ anim . title }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( top 5 0 List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop 5 0 List . add ( anim ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( top 5 0 List . size Ġ== Ġ 5 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop 5 0 List . sortBy Descending Ġ{ Ġit . play Count Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop 5 0 List . remove At ( 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġjob 2 Ġ= Ġasync Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Created ") ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile (" C :\\ Users \\ moe Ki wi SA MA \\ Desktop \\ b ilib ili . html ") ĊĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()) Ġfile . createNew File () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( id Ġ< Ġ 7 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( top 5 0 List . size Ġ>= Ġ 5 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġout Str Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( top 5 0 List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop 5 0 List . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Str Ġ+= Ġit . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . output Stream (). write ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< link Ġrel =" stylesheet " Ġhref =" http :// cdn . static . run oob . com / libs / bootstrap / 3 . 3 . 7 / css / bootstrap . min . css "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< table Ġclass =" table Ġtable - bordered Ġtable - striped "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< thead > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< tr >< th > æłĩé¢ĺ </ th >< th > æĴŃæĶ¾ éĩı </ th >< th > è¿½ çķª </ th >< th > å°ģ éĿ¢ åľ°åĿĢ </ th >< th > éĽĨ æķ° </ th ></ tr > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ thead > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< tbody > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ$ out Str ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ tbody > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ table > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" --- ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 5 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġjob 1 . join () ĊĠĠĠ Ġjob 2 . join () ĊĊĠĠĠ Ġtop 5 0 List . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ( it . toString ()) ĊĠĠĠ Ġ} Ċ }