diff --git a/dist/files_reader-0.4.6.tar.gz b/dist/files_reader-0.4.6.tar.gz new file mode 100644 index 0000000..ef7e0f1 Binary files /dev/null and b/dist/files_reader-0.4.6.tar.gz differ diff --git a/files_opds/appinfo/app.php b/files_opds/appinfo/app.php index a157b70..3692ff8 100644 --- a/files_opds/appinfo/app.php +++ b/files_opds/appinfo/app.php @@ -7,9 +7,5 @@ require 'files_opds/lib/epub-preview.php'; \OCP\App::registerPersonal('files_opds', 'personal'); \OCP\App::registerAdmin('files_opds', 'admin'); -/* enable preview providers... */ -// \OCA\Files_Opds\Config::setPreview('OC\Preview\Epub',true); - -/* ..and register preview provider */ +/* register preview provider */ \OC\Preview::registerProvider('OC\Preview\Epub'); - diff --git a/files_opds/lib/meta.php b/files_opds/lib/meta.php index a736459..76d460b 100644 --- a/files_opds/lib/meta.php +++ b/files_opds/lib/meta.php @@ -93,32 +93,76 @@ class Meta * @return array of metadata */ public static function get($id) { - if ($meta = self::load($id)) { - return $meta; - } else { - $meta = self::create($id); - $path = \OC\Files\Filesystem::getLocalFile(\OC\Files\Filesystem::getPath($id)); - switch (strtolower(substr(strrchr($path, "."), 1))) { - case 'epub': - $epub = new Epub($path); - $meta['author'] = json_encode($epub->Authors()); - $meta['title'] = $epub->Title(); - $meta['date'] = $epub->Date(); - $meta['publisher'] = $epub->Publisher(); - $meta['copyright'] = $epub->Copyright(); - $meta['language'] = $epub->Language(); - $meta['description'] = strip_tags($epub->Description()); - $meta['isbn'] = $epub->ISBN(); - $meta['subjects'] = $epub->Subjects(); - break; - default: - // set title to filename minus extension - $info = pathinfo($path); - $meta['title'] = basename($path,'.'.$info['extension']); - break; - } - self::save($meta); - return $meta; + if (!($meta = self::load($id))) { + $meta = self::scan($id); } + return $meta; } + + /** + * @brief scan files for metadata + * PLAN: use search_lucene to extract metadata? Does not seem to support PDF1.6? + * solution: first ask search_lucene, if no data then scan file? + * + * @param int $id fileid + * @return array $meta metadata + */ + public static function scan($id) { + $meta = self::create($id); + $path = \OC\Files\Filesystem::getLocalFile(\OC\Files\Filesystem::getPath($id)); + + switch (strtolower(substr(strrchr($path, "."), 1))) { + case 'epub': + self::epub($path,$meta); + break; + case 'pdf': + self::pdf($path,$meta); + break; + } + + /* if title is not set, assume metadata was invalid or not present + * use filename as title + */ + if (!($meta['title'])) { + $info = pathinfo($path); + $meta['title'] = basename($path,'.'.$info['extension']); + } + // self::save($meta); + return $meta; + } + + + /** + * @brief check epub for metadata + * + * @param string $path path to epub + * @param arrayref $meta reference to array of metadata + * @return bool $success (true if metadata found) + */ + public static function epub($path,&$meta) { + $epub = new Epub($path); + $meta['author'] = json_encode($epub->Authors()); + $meta['title'] = $epub->Title(); + $meta['date'] = $epub->Date(); + $meta['publisher'] = $epub->Publisher(); + $meta['copyright'] = $epub->Copyright(); + $meta['language'] = $epub->Language(); + $meta['description'] = strip_tags($epub->Description()); + $meta['isbn'] = $epub->ISBN(); + $meta['subjects'] = $epub->Subjects(); + + return true; + } + + /** + * @brief check pdf for metadata + * + * @param string $path path to pdf + * @param arrayref $meta reference to array of metadata + * @return bool $success (true if metadata found) + */ + public static function pdf($path,&$meta) { + + return false; + } } diff --git a/files_reader/appinfo/info.xml b/files_reader/appinfo/info.xml index 5140a27..7d720a8 100644 --- a/files_reader/appinfo/info.xml +++ b/files_reader/appinfo/info.xml @@ -3,7 +3,7 @@ files_reader Reader (ebook reader) Online ePub file reader - 0.4.5 + 0.4.6 LGPL Frank de Lange, (taken clues from Thomas Müller/files_pdfviewer, using slightly modified Futurepress/epub.js) 7.0 diff --git a/files_reader/viewer.php b/files_reader/viewer.php index 95d3e85..4bd2db2 100644 --- a/files_reader/viewer.php +++ b/files_reader/viewer.php @@ -11,7 +11,8 @@ $mime = "application/zip+epub"; // download link varies by sharing status, compose it here $dllink = $share === '' - ? OC_Helper::linkTo('files', 'ajax/download.php', array('dir' => urldecode($dir), 'files' => urldecode($file), 'share' => $share )) + // ? OC_Helper::linkTo('files', 'ajax/download.php', array('dir' => urldecode($dir), 'files' => urldecode($file), 'share' => $share )) + ? OC_Helper::linkTo('files', 'ajax/download.php', array('dir' => $dir, 'files' => $file, 'share' => $share )) : OC_Helper::linkToPublic('files') . '&t=' . rawurlencode($share) . '&download'; // needed for css/script inclusion