Modify _media_svc_extract_book_metadata()
[platform/core/multimedia/libmedia-service.git] / src / common / media-svc-util.c
index 2e7930a..c9e9b2d 100644 (file)
@@ -27,9 +27,9 @@
 #include <aul/aul.h>
 #include <mm_file.h>
 #include <libexif/exif-data.h>
-#include <media-util.h>
 #include <uuid/uuid.h>
 #include <media-thumbnail.h>
+#include <media-util-user.h>
 #include "media-svc-util.h"
 #include "media-svc-db-utils.h"
 #include "media-svc-debug.h"
@@ -466,7 +466,6 @@ static char * __media_svc_get_title(MMHandleType tag, const char *filename)
 
 char * _media_svc_get_title_from_filename(const char *filename)
 {
-       /* No MMHandleType in media-svc.c */
        return __media_svc_get_title_from_filename(filename);
 }
 
@@ -898,6 +897,7 @@ static gboolean __media_svc_get_xml_metadata(const xmlChar *buffer, gboolean is_
        }
 
        content_info->media_meta.title = __media_svc_find_and_get_value(root, "title");
+       /* In the case of PDF, if there is no title, it may not be a metadata block. Search for the next xml block*/
        if (is_pdf && !content_info->media_meta.title) {
                xmlFreeDoc(doc);
                return FALSE;
@@ -1024,12 +1024,22 @@ static int __media_svc_get_pdf_metadata(media_svc_content_info_s *content_info)
 
 int _media_svc_extract_book_metadata(media_svc_content_info_s *content_info)
 {
+       int ret = MS_MEDIA_ERR_NONE;
+
        media_svc_retvm_if(!content_info, MS_MEDIA_ERR_INVALID_PARAMETER, "content info is NULL");
 
        if (g_str_has_suffix(content_info->mime_type, "epub+zip"))
-               return __media_svc_get_epub_metadata(content_info);
+               ret = __media_svc_get_epub_metadata(content_info);
        else
-               return __media_svc_get_pdf_metadata(content_info);
+               ret = __media_svc_get_pdf_metadata(content_info);
+
+       media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "failed to extract metadata");
+       if (!content_info->media_meta.title || strlen(content_info->media_meta.title) == 0) {
+               g_free(content_info->media_meta.title);
+               content_info->media_meta.title = __media_svc_get_title_from_filename(content_info->file_name);
+       }
+
+       return MS_MEDIA_ERR_NONE;
 }
 
 void _media_svc_destroy_content_info(media_svc_content_info_s *content_info)
@@ -1074,11 +1084,7 @@ int _media_svc_create_thumbnail(const char *path, char *thumb_path, media_svc_me
 
        //1. make thumb path
        ret = __media_svc_get_thumbnail_path(thumb_path, path, NULL, uid);
-       if (ret != MS_MEDIA_ERR_NONE) {
-               media_svc_error("Failed to create thumbnail path[%d]", ret);
-               g_strlcpy(thumb_path, "", MAX_FILEPATH_LEN);
-               return ret;
-       }
+       media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "Failed to create thumbnail path[%d]", ret);
 
        //2. save thumbnail
        if (media_type == MEDIA_SVC_MEDIA_TYPE_IMAGE)