diff options
-rw-r--r-- | binding/media-api.c | 20 | ||||
-rw-r--r-- | binding/media-manager.h | 8 |
2 files changed, 22 insertions, 6 deletions
diff --git a/binding/media-api.c b/binding/media-api.c index 892f67d..2e5c103 100644 --- a/binding/media-api.c +++ b/binding/media-api.c @@ -126,12 +126,28 @@ static json_object *new_json_object_from_device(GList *list) static void media_results_get (struct afb_req request) { + const char *value = afb_req_value(request, "value"); GList *list = NULL; json_object *jresp = NULL; + int scan_type = 0; ListLock(); - list = media_lightmediascanner_scan(list, NULL, LMS_AUDIO_SCAN); - list = media_lightmediascanner_scan(list, NULL, LMS_VIDEO_SCAN); + + if (!value || !strcasecmp(value, "both")) { + scan_type = LMS_AUDIO_SCAN | LMS_VIDEO_SCAN; + } else { + if (!strcasecmp(value, "audio")) + scan_type = LMS_AUDIO_SCAN; + else if (!strcasecmp(value, "video")) + scan_type = LMS_VIDEO_SCAN; + } + + if (scan_type & LMS_AUDIO_SCAN) + list = media_lightmediascanner_scan(list, NULL, LMS_AUDIO_SCAN); + + if (scan_type & LMS_VIDEO_SCAN) + list = media_lightmediascanner_scan(list, NULL, LMS_VIDEO_SCAN); + if (list == NULL) { afb_req_fail(request, "failed", "media scan error"); ListUnlock(); diff --git a/binding/media-manager.h b/binding/media-manager.h index 2190a16..f5b28fb 100644 --- a/binding/media-manager.h +++ b/binding/media-manager.h @@ -130,9 +130,9 @@ struct Media_Item { } metadata; }; -enum { - LMS_AUDIO_SCAN, - LMS_VIDEO_SCAN, -}; +#define BIT(x) (1<<x) + +#define LMS_AUDIO_SCAN BIT(0) +#define LMS_VIDEO_SCAN BIT(1) #endif |