package Ġcom . ed win . my anime list . sc rapper čĊč Ċ import Ġcom . ed win . my anime list . data . dto . An ime Dto č Ċ import Ġcom . ed win . my anime list . exceptions . Entity Exists Exception č Ċ import Ġcom . ed win . my anime list . sc rapper . data . An ime Profile Sc rapper č Ċ import Ġcom . ed win . my anime list . services . An ime Service č Ċ import Ġedu . uci . ics . crawler 4 j . crawler . Page č Ċ import Ġedu . uci . ics . crawler 4 j . crawler . Web Crawler č Ċ import Ġedu . uci . ics . crawler 4 j . parser . Html Parse Data č Ċ import Ġedu . uci . ics . crawler 4 j . url . Web URL č Ċ import Ġorg . slf 4 j . Logger č Ċ import Ġorg . slf 4 j . LoggerFactory č Ċ import Ġorg . springframework . beans . factory . annotation . Autowired č Ċ import Ġorg . springframework . stereotype . Component čĊčĊč Ċ @ Component č Ċ class ĠMy An ime List Crawler Ġ@ Autowired Ġconstructor ( private Ġvar Ġan ime List Url Validator : ĠMy An ime List Url Validator , Ġprivate Ġvar Ġan ime Profile Sc rapper : ĠAn ime Profile Sc rapper , Ġprivate Ġvar Ġan ime Service : ĠAn ime Service ) Ġ: ĠWeb Crawler () Ġ{ čĊĠĠĠ Ġprivate Ġval Ġlogger : ĠLogger Ġ= ĠLoggerFactory . getLogger ( My An ime List Crawler :: class . java ) čĊčĊĠĠĠ Ġoverride Ġfun Ġshould Visit ( ref erring Page : ĠPage ?, Ġweb URL : ĠWeb URL ?): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġif Ġ( web URL Ġ== Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġweb URL . url . toLowerCase () čĊĠĠĠĠĠĠĠ Ġif Ġ( anime List Url Validator . is An ime Page ( url ) Ġ|| čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan ime List Url Validator . is An ime List Page ( url ) Ġ|| čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan ime List Url Validator . is An ime Images Page ( url )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġreturn Ġfalse čĊčĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġvisit ( page : ĠPage ?) Ġ{ čĊĠĠĠĠĠĠĠ Ġif Ġ( page Ġ== Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġpage . web URL . url čĊĠĠĠĠĠĠĠ Ġlogger . debug (" Page Ġto Ġvisit : Ġ{}", Ġurl ) čĊĠĠĠĠĠĠĠ Ġif Ġ( page . parse Data Ġis ĠHtml Parse Data ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhtml Parse Data Ġ= Ġpage . parse Data Ġas ĠHtml Parse Data čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhtml Ġ= Ġhtml Parse Data . html čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( anime List Url Validator . is An ime Page ( url )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy An ime List Id : ĠInt Ġ= Ġan ime Profile Sc rapper . get My An ime List Id ( url ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġan ime Profile Sc rapper . getTitle ( html ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsyn opsis Ġ= Ġan ime Profile Sc rapper . get Syn opsis ( html ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġepisode s Number Ġ= Ġan ime Profile Sc rapper . get Episode s Number ( html ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġon A iring Ġ= Ġan ime Profile Sc rapper . is On A iring ( html ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan ime Release Date Ġ= Ġan ime Profile Sc rapper . get An ime Release Date ( html ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan ime EndDate Ġ= Ġan ime Profile Sc rapper . get An ime EndDate ( html ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan ime Ġ= ĠAn ime Dto ( my An ime List Id , Ġname , Ġsyn opsis , Ġurl , Ġepisode s Number , Ġon A iring , Ġan ime Release Date , Ġan ime EndDate ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" An ime Ġto Ġsave : Ġ$ anime ") čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan ime Service . create ( anime ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Created !") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠEntity Exists Exception ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" Entity Ġalready Ġexist ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( anime List Url Validator . is An ime Images Page ( url )) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy An ime List Id : ĠInt Ġ= Ġan ime Profile Sc rapper . get My An ime List Id ( url ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġan ime Images Url Ġ= Ġan ime Profile Sc rapper . get An ime Images ( html ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Saving Ġan ime Ġimages Ġwith Ġthe Ġmy An ime List Id : Ġ$ my An ime List Id ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" An ime Ġimages 's Ġurls : Ġ$ anime Images Url ") čĊčĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan ime Service . create An ime Images ( my An ime List Id , Ġan ime Images Url ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠEntity Exists Exception ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" Entity Ġalready Ġexist ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} č Ċ }