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;
 }
示例#3
0
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);
示例#4
0
# ========================================================
$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());