public void info(VideoInfo info, AtomicBoolean stop, Runnable notify) { try { List<VideoFileInfo> dinfo = extract(info, stop, notify); info.setInfo(dinfo); for (DownloadInfo i : dinfo) { i.setReferer(info.getWeb()); i.extract(stop, notify); } } catch (DownloadInterruptedError e) { info.setState(States.STOP, e); notify.run(); throw e; } catch (RuntimeException e) { info.setState(States.ERROR, e); notify.run(); throw e; } }