function getChapters($url = '') { $chapters_url = $this->_mangaInfo->getUrl(); if ($chapters_url == '') { return false; } $content = Url::curlFetch($chapters_url); if (!$content) { return false; } $slug = $this->_mangaInfo->getSlug(); preg_match_all('%<a.*?href="(/' . $slug . '/[^"]+)".*?>(.*?)</a>%sim', $content, $result, PREG_PATTERN_ORDER); $urls = $result[1]; $titles = $result[2]; $chapters = array(); $objChapterTitles = ChapterTitles::getInstance(); for ($i = 0; $i < count($urls); $i += 1) { $url = $urls[$i]; if (preg_match('%^/' . $slug . '/(.*?)$%sim', $url, $regs)) { $chapter_id = $regs[1]; $existingTitle = $objChapterTitles->getChapterTitle($chapter_id); $title = $titles[$i]; if ($existingTitle != '') { $title = $existingTitle; } $c = new ChapterInfo(['number' => $chapter_id, 'url' => 'http://www.mangapanda.com' . $url, 'title' => $title, 'mangaInfo' => $this->_mangaInfo]); $chapters[$chapter_id] = $c; } } ksort($chapters, SORT_NUMERIC); return $chapters; }
/** * @param array $data * * @return ChapterTitles */ public static function getInstance($data = array()) { if (self::$instance === NULL) { self::$instance = new self($data); } return self::$instance; }
consoleLineBlue("CBR Dir: " . $mangaInfo->getCbrDirPath()); if ($objArgumentsList->shouldKeepCbrBackup()) { $cbrBackupDir = $mangaInfo->getOutputDir() . 'cbr-backup/' . date('Y-m-d-H-i') . '/'; consoleLineInfo('Backing up old .cbr files to ' . $cbrBackupDir); if (!is_dir($cbrBackupDir)) { if (!mkdir($cbrBackupDir, 0777, true)) { consoleLineError("Unable to create cbr backup dir [{$cbrBackupDir}] "); exit; } } exec("cp " . $mangaInfo->getCbrDirPath() . "/*.cbr {$cbrBackupDir}/"); } else { consoleLineInfo('Removing .existing cbr files ...'); } exec("rm " . $mangaInfo->getCbrDirPath() . "/*.cbr"); consoleLineInfo('Done'); $chapters = $mangaStatus->getAllChaptersList(); $objChaptersTitles = ChapterTitles::getInstance(); /** * @var ChapterInfo $c */ foreach ($chapters as &$c) { $title = trim($objChaptersTitles->getChapterTitle($c->getNumber())); if ($title) { $c->setTitle($title); } $cbrCreator = new CbrCreator(array('mangaInfo' => $mangaInfo, 'chapterInfo' => $c)); $cbrCreator->setPrintRarOutput(false); $cbrCreator->createCbr(); } $mangaStatus->updateAllChaptersList($chapters);
# ======================================================== $objArgumentsList = ArgumentsList::getInstance(ArgumentParser::prepareCliArguments()); # ======================================================== # Prepare managa info instance ... # ======================================================== $mangaInfo = MangaInfo::getInstance(array('source' => $objArgumentsList->getSource(), 'name' => $objArgumentsList->getMangaName(), 'slug' => $objArgumentsList->getMangaSlug(), 'url' => MangaSourceList::getInstance()->generateMangaChaptersUrl($objArgumentsList->getSource(), array('slug' => $objArgumentsList->getMangaSlug())), 'output_dir' => $objArgumentsList->getOutputDir())); Console::seperatorLine(); consoleLineInfo('Strating at: ' . date('M d, Y h:i a', $startTime)); Console::seperatorLine(); consoleLineInfo('Fetching chapters for: ' . $mangaInfo->getName()); consoleLineInfo('Manga Url: ' . $mangaInfo->getUrl()); Console::seperatorLine(); # ======================================================== # Do we have chapter titles list already? # ======================================================== $objChapterTitles = ChapterTitles::getInstance(array('mangaInfo' => $mangaInfo)); # ======================================================== # Prepare manga status object. we be gonna need it! # ======================================================== $mangaStatus = MangaStatus::getInstance(array('mangaInfo' => $mangaInfo)); # ======================================================== # get chapters list! # ======================================================== $actionRequiringChapterFetch = array(ArgumentsList::ACTION_NEW_CHAPTERS, ArgumentsList::ACTION_SPECIFIC_CHAPTERS); if (in_array($objArgumentsList->getAction(), $actionRequiringChapterFetch)) { consoleLinePurple("Updating chapters list from {$mangaInfo->getSource()} ..."); /** * @var ChaptersList $objChaptersList */ $objChaptersList = NULL; $classPrefix = MangaSourceList::getInstance()->getSourceClassPrefix($mangaInfo->getSource());